linkedin_ads_track_competitor

Track Competitor

Linkedin

Description

Register a LinkedIn advertiser for daily ad-library tracking — its company-page ads plus the posts from employees' own profiles it pays for. Pass organization_id when you know it — the numeric LinkedIn organization ID (the number in linkedin.com/company/<id>, or in an Ad Library URL's companyIds=). It is exact: an organization not yet in the corpus is looked up live by ID (about 20–40 s) and tracked in this same call under its real name; no ads from it → a plain "no ads" answer, nothing tracked. company_url accepts the same IDs as a URL — a numeric /company/<id> URL or an Ad Library search URL with one companyIds= (e.g. https://www.linkedin.com/ad-library/search?companyIds=17955831) — while a vanity slug is only a name guess ("hawkemedia" is not "Hawke Media" — pass name then). Otherwise pass name: the company name exactly as it appears on its LinkedIn page (e.g. "Refine Labs"). The name search is fuzzy: a name not yet in the corpus is looked up live and tracked if exactly one advertiser has that name; several advertisers → a candidate list and NOTHING tracked (retry with organization_id from it); none → a plain answer that LinkedIn has no ads from that name. Short or generic names (e.g. "Remote") can surface only lookalikes — use organization_id for those. countries (ISO codes, or ["ALL"]) sets where it is tracked; omit for the default. A new track, or new countries, starts a full background scrape (full_scrape: "started"); the response reports seeded, countries, full_scrape and any warning separately. Undo with linkedin_ads_untrack_competitor — ads already scraped stay in the shared corpus. The tracked-competitor plan limit is shared with Meta. Requires no LinkedIn connection.

IdempotentOpen-world

Usage

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "linkedin_ads_track_competitor",
    "arguments": {
      "name": "Refine Labs",
      "reason": "Start daily tracking of a competitor agency"
    }
  }
}

Parameters

NameTypeRequiredDescription
reason string Required Why this tool call is neededminLength: 1, maxLength: 500
Optional parameters (4)
NameTypeRequiredDescription
name string Optional The company name exactly as shown on its LinkedIn page, e.g. "Refine Labs" — use it when you do not have the organization ID. The Ad Library name search is fuzzy: a name not in the corpus yet is looked up live (about 20–40 s) and tracked if exactly one advertiser has that name. Several → candidates, tracks nothing; only similarly named advertisers → those names as candidates to retry with; none → a plain "no ads" answer. Short or generic names (e.g. "Remote") may surface only lookalikes — pass organization_id then.minLength: 1, maxLength: 100
company_url string Optional LinkedIn company page or Ad Library URL. A numeric company URL (https://www.linkedin.com/company/1035) or an Ad Library URL with one companyIds= (https://www.linkedin.com/ad-library/search?companyIds=17955831) resolves exactly like organization_id. A vanity slug (/company/refine-labs) is only a NAME GUESS ("refine labs"), tracked if it exactly matches an advertiser — slugs such as "hawkemedia" often do not; pass name then.
organization_id string Optional RECOMMENDED when known. Numeric LinkedIn organization ID — the number in linkedin.com/company/<id> or in an Ad Library URL's companyIds=. Exact: an organization not in the corpus yet is looked up live by ID (about 20–40 s) and tracked under its real name; no ads from it → a plain "no ads" answer, nothing tracked.minLength: 1
countries array Optional ISO-3166-1 alpha-2 codes to track this advertiser in, e.g. ["US","GB","DE"] (use "GB", not "UK"), or ["ALL"]. Omit for the default sweep countries. Re-tracking with a different set updates it.

Examples

Track by name (looked up live if never scraped)

{
  "name": "Refine Labs",
  "reason": "Start daily tracking of a competitor agency"
}

hopkin linkedin track-competitor --name Refine Labs

Track across several countries

{
  "name": "Hawke Media",
  "countries": [
    "US",
    "GB",
    "DE"
  ],
  "reason": "Watch a competitor in every market we sell in"
}

hopkin linkedin track-competitor --name Hawke Media --countries US,GB,DE

Track by organization ID (exact — looked up live if never scraped)

{
  "organization_id": "17955831",
  "reason": "Track a competitor whose LinkedIn organization ID we know"
}

hopkin linkedin track-competitor --organization-id 17955831

Track by Ad Library URL

{
  "company_url": "https://www.linkedin.com/ad-library/search?companyIds=17955831",
  "reason": "Track the competitor from the Ad Library link the user pasted"
}

hopkin linkedin track-competitor --company-url https://www.linkedin.com/ad-library/search?companyIds=17955831

Track by company URL

{
  "company_url": "https://www.linkedin.com/company/1035",
  "reason": "Track a competitor from their LinkedIn company page link"
}

hopkin linkedin track-competitor --company-url https://www.linkedin.com/company/1035