LinkedIn Ads Tracker — New & Changed Ads avatar

LinkedIn Ads Tracker — New & Changed Ads

Pricing

from $0.38 / 1,000 delivered ad records

Go to Apify Store
LinkedIn Ads Tracker — New & Changed Ads

LinkedIn Ads Tracker — New & Changed Ads

Observe public LinkedIn Ad Library searches and compare saved runs. Export verified ad IDs, advertiser identity, available ad copy and source links; receive new and changed observations with before-and-after values. Bounded searches never infer stopped ads.

Pricing

from $0.38 / 1,000 delivered ad records

Rating

0.0

(0)

Developer

Mako

Mako

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

Observe selected public LinkedIn Ad Library searches, then compare later runs to receive newly observed ads and changes in available ad copy, advertiser metadata and creative fields. Export JSON, CSV or Excel through your Apify dataset.

Validated on 1 October 2026: cloud tests retrieved 24 listing observations in one source request and 30 unique ads across two pages. Separate tests checked detail-page advertiser filtering and a genuine empty search. Public access uses Apify Unblocker; direct and residential connections returned HTTP 403 during testing. Source availability can change.

Pricing: service fees plus Apify usage

$0.38 per 1,000 delivered ad records, plus startup and separate Apify platform usage. The ad-record service fee is $0.00038 for each dataset record delivered. The same event rates apply to every Apify plan.

Each run also has an Actor-start fee of $0.00005 per allocated GB of memory, with a minimum of one startup event. At the supported 256 MB or 512 MB allocations, that is one $0.00005 event. Apify Unblocker, compute, data transfer and storage are billed separately at your Apify plan's rates. This is not an all-inclusive per-record price.

The default Unblocker connection uses 10 Unblocker units per successful source request. Listing mode can return multiple ads from one request. Detail mode adds a request for every examined ad, including ads later excluded by an exact advertiser filter. Failed runs, empty searches, unchanged monitoring runs and filter exclusions can consume platform usage without producing billable ad records. Startup fees still apply.

For example, 24 delivered listing records have a $0.00912 ad-record fee, plus $0.00005 startup at 256 MB or 512 MB, plus the run's actual platform usage. This example is service-fee arithmetic, not an estimate of the total bill.

The maximum Actor charge limits event fees, not total platform usage. The lowest permitted maximum Actor charge is $0.01; this is a configurable ceiling, not a $0.01 minimum fee. Bound source work with maxRequests, maxPagesPerSearch, maxAdsPerSearch and a run timeout. maxResults alone does not bound source work in Changes mode. Start with a small run and inspect its actual cost before scheduling it.

Open LinkedIn Ad Library, make a filtered search and copy its search URL. For example:

{
"searchUrls": ["https://www.linkedin.com/ad-library/search?accountOwner=Microsoft&countries=US"],
"country": "US",
"mode": "snapshot",
"includeDetails": false,
"maxResults": 24,
"maxAdsPerSearch": 24,
"maxPagesPerSearch": 1,
"maxRequests": 1,
"proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["UNBLOCKER"]}
}

This reads at most one search page and returns up to 24 listing observations without fetching detail pages. If LinkedIn blocks access, the run fails with the source error rather than pretending there are no ads. Apify Unblocker is selected by default. It has platform usage costs: the documented rate at publication is 10 Unblocker units per successful request. A successful listing page uses 10 units and can provide multiple ads. Setting includeDetails: true adds a detail request for each examined ad: one search page plus three detail pages uses up to 40 successful-request units. You can explicitly choose another proxy or disable it; there is no automatic escalation, account login, session-cookie input or paid data-provider dependency. See Apify Unblocker documentation.

Default listing mode returns ad ID, advertiser name, available preview copy, headline, first creative image and source link in one listing request. Preview copy may be shortened, and advertiser company URL, payer, CTA and dates can be unavailable. Every record states detailLevel: "listing". Set includeDetails: true to request public detail-page metadata; those records state detailLevel: "detail".

Advertiser-name searches can match multiple organizations. Check advertiserName and advertiserUrl, or set includeDetails: true together with exactAdvertiserUrl to keep only exact company URL matches. Numeric company URLs and named company URLs are not resolved as equivalent. The country in the copied URL must match the country input.

Monitor changes

Set mode to changes, choose a stable monitorName, and rerun or schedule that input in Apify. History is isolated by user, Actor, monitor name, normalized search URL, country, detail mode and exact advertiser filter.

  • initial: first baseline observation, unless emitInitialSnapshot is false.
  • new: an ad first observed by that saved monitor after its baseline.
  • changed: a recognized creative or advertiser field changed, with changedFields, before and after.
  • Unchanged observations create no dataset record. Source retrieval and proxy usage can still cost money.

firstObservedAt is our first observation, not a claimed campaign launch date. Ads absent from a later scan remain in history. We do not infer that a campaign stopped, especially when results are limited or a request failed. Missing source fields do not erase earlier values in Changes mode.

Changed fields: advertiser name and URL, format, copy, headline, destination URL, image URL, CTA label and paying entity. Source date-label updates alone do not create a creative-change event. Expiring image signatures are ignored in comparisons.

Output

Each record includes adId, advertiser identity, sourceUrl, searchUrl, observedAt, firstObservedAt, eventType, and eventId. Recognized copy, headline, image, destination, CTA label, ad-type, payer and source run-date fields are nullable. A linked landing page is never fetched. Available fields depend on LinkedIn's public HTML and ad format.

The Coverage and errors output opens SUMMARY, including requests made, pages examined, detail requests, exact-filter exclusions, failed searches, partial coverage, output counts and remaining searches. A partially successful scan can preserve verified ads while reporting incomplete coverage. If every search fails and no records were delivered, the run is marked failed; resumed saved output followed by new source failures is reported as partial.

Bounds and reliability

maxRequests is a hard ceiling across listing and detail requests, including unsuccessful requests. maxPagesPerSearch and maxAdsPerSearch cap discovery and optional detail work before further source requests are made. There are no automatic retries. maxResults caps output and may be lower than the number of details examined in Changes mode.

History is bounded to 10,000 ads per search and 16 MB per checkpoint. A monitor lock prevents concurrent history writes. Pending output is saved before delivery and resumed later with the same event IDs. Delivery is at least once: interruption after dataset writing but before a checkpoint can repeat a record and, under per-event pricing, its charge. Consumers should deduplicate eventId.

Changing the search filters creates a separate baseline. Use a new monitor name to deliberately reset history. Saved history uses Apify key-value storage and may incur storage costs. Use a sensible schedule such as once daily after validating a small run.

Limits

This is a bounded observation tool, not an official LinkedIn API or a complete advertiser inventory. No performance conclusions, campaign budgets, lead enrichment, OCR, creative downloading, automatic campaign-stop detection or LinkedIn publishing are provided. LinkedIn can restrict access, change markup or omit fields. No LinkedIn username, password or cookies are requested.

Development validation

Run npm test. Parser tests include clearly labeled excerpts of actual anonymous cloud search and detail HTML, plus synthetic failure, pagination and history scenarios. The release validation record separately documents end-to-end cloud runs and output comparisons.