LinkedIn Ad Details Scraper avatar

LinkedIn Ad Details Scraper

Pricing

from $2.24 / 1,000 ad with details

Go to Apify Store
LinkedIn Ad Details Scraper

LinkedIn Ad Details Scraper

Scrape LinkedIn ad details from the Ad Library: impressions range, impressions by country, run dates, who paid, targeted languages, locations and criteria (job, company, audience), CTA, landing page and UTM parameters. By ad URL, company or keyword. No login.

Pricing

from $2.24 / 1,000 ad with details

Rating

0.0

(0)

Developer

BlueskyScraper

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

LinkedIn Ad Details Scraper opens each ad's page in the public LinkedIn Ad Library and returns what the search list does not show: total impressions range, impressions by country, run dates, who paid ("Paid for by"), targeted languages and locations, excluded locations, which targeting criteria the advertiser used (company, job, audience, demographic…), the call-to-action button and the landing page with its UTM parameters — together with the full ad copy and creative. Give it ad URLs or IDs, competitors' company pages, or a search. No LinkedIn login. $3.2 per 1,000 ads with details, no start fee.

What is LinkedIn Ad Details Scraper?

The LinkedIn ad impressions and targeting tool. LinkedIn publishes reach and targeting data for ads it reports under the EU Digital Services Act, but only one ad at a time, behind the "About the ad" page. This Actor collects those pages into one table, so you can sort competitors' ads by impressions, see which countries they reach, and which audiences they target — and use it as an unofficial LinkedIn ad targeting API.

Every row is one ad with every detail field, so the dataset is ready for a spreadsheet, a BI dashboard or an LLM without joins.

What data does it extract?

FieldExampleMeaning
impressions, impressionsMin, impressionsMax50k-100k, 50000, 100000Total impressions range, also as numbers
impressionsByCountry[{country: "United Kingdom", share: "43%", percent: 43}, …]Share of impressions per country
topCountryUnited KingdomCountry with the largest share
ranFrom, ranTo, runDays2026-09-14, 2026-10-02, 19When the ad ran
paidByHubSpot, Inc.The "Paid for by" entity
targetingLanguages["English"]Targeted languages
targetingLocations, targetingExcludedLocations["Dallas, TX", "Germany", "Chicago, IL"…], ["India", "New Zealand"]Targeted and excluded places
targetedParameters, excludedParameters["Company", "Job"]Which kinds of targeting were used to include or exclude people
targetingCriteria[{parameter: "Job", targeted: true, excluded: false}, …]Every targeting parameter with its flags
ctaTextLearn moreCall-to-action button
landingUrl, landingDomain, utmParametersthe landing page, hubs.la, {utm_campaign: …, hsa_cam: …}Where the ad sends people, and its campaign tags
advertiserName, advertiserUrl, advertiserCompanyIdHubSpot, https://www.linkedin.com/company/68529, 68529Advertiser
format, text, headline, imageUrl, videoUrl, carouselCardsSingle Image Ad, full ad copy…The creative
variantCount1Versions of the creative LinkedIn shows

Which ads have impressions and targeting? Those LinkedIn reports under the EU Digital Services Act — ads that reached people in the EU. In our tests 150 of 150 ads found with a German country filter had an impressions range and 143 had targeting; 10 of 10 HubSpot ads shown in Germany had impressions by country. For ads shown only outside the EU, LinkedIn's page has no impressions or targeting and those fields stay empty. Impressions by country appear up to 48 hours after an ad starts — the freshest ads show the total range but no country split yet. Nothing is estimated.

💰 How much does it cost?

EventFree planStarter (Bronze)Scale (Silver)Business, Platinum, Diamond
Ad with details — one ad with impressions, countries, targeting, landing page and full creative$0.0032 ($3.2 / 1K)$0.00288 ($2.88 / 1K)$0.00256 ($2.56 / 1K)$0.00224 ($2.24 / 1K)
Ads whose page could not be read, searches with no ads, error rows, start of a runfreefreefreefree

On the Apify Free plan the monthly $5 credit buys about 1,562 ads with details. The most-used LinkedIn ads actor in Apify Store charges $4 per 1,000 ads with details on the Free plan (3 October 2026) — this Actor is 20% below. Max cost per run is respected to the cent: ad pages the budget cannot pay for are not even opened.

How to get LinkedIn ad impressions and targeting

  1. Press Try for free (an Apify account is free).
  2. Paste Ad URLs or IDs (https://www.linkedin.com/ad-library/detail/1560106944), or competitors' company pages (https://www.linkedin.com/company/hubspot/), or search terms.
  3. For companies and searches, set Countries — an EU country such as DE or FR returns ads with every field filled — and Ads per search.
  4. Press Start. The default run (10 HubSpot ads shown in Germany) takes about 20 seconds.
  5. Open the Impressions & targeting tab, or download Excel, CSV or JSON.

⬇️ Input

{
"adUrls": [
"https://www.linkedin.com/ad-library/detail/1560106944",
"1566857653"
],
"companies": ["https://www.linkedin.com/company/hubspot/"],
"countries": ["DE"],
"maxAdsPerSearch": 50
}
FieldWhat it does
adUrlsSingle ads by Ad Library URL or ID
companiesCompany page URL, ID or name — every ad of that company, with details
searchTerms, searchTypeSearch the Ad Library (keyword, advertiser, payer, company ID) and open every ad found
countriesOnly ads shown in these countries
maxAdsPerSearchAds per company or search line (default 10, max 5,000)
dateRange, startDate, endDate, sortOrderWhen the ads ran, newest or oldest first
onlyNewRowsStoreMemory name: later runs return only new ads

⬆️ Output

{
"type": "ad",
"adId": "1560106944",
"url": "https://www.linkedin.com/ad-library/detail/1560106944",
"advertiserName": "HubSpot",
"advertiserCompanyId": "68529",
"format": "Single Image Ad",
"headline": "Sell from anywhere, close everywhere.",
"detailsScraped": true,
"paidBy": "HubSpot, Inc.",
"ranFrom": "2026-09-14",
"ranTo": "2026-10-02",
"runDays": 19,
"impressions": "50k-100k",
"impressionsMin": 50000,
"impressionsMax": 100000,
"topCountry": "United Kingdom",
"impressionsByCountry": [
{ "country": "United Kingdom", "share": "43%", "percent": 43 },
{ "country": "Ireland", "share": "19%", "percent": 19 },
{ "country": "Germany", "share": "18%", "percent": 18 }
],
"targetingLanguages": ["English"],
"targetingLocations": ["Dallas, TX", "Germany", "Chicago, IL", "England", "United Kingdom"],
"targetingExcludedLocations": ["India", "New Zealand", "United Arab Emirates"],
"targetedParameters": ["Company", "Job"],
"ctaText": "Learn more"
}

An ad whose page LinkedIn does not load (removed ad, wrong ID) comes back as a free row with type: "error"; it is never billed.

🔁 Get only new LinkedIn ads — schedule it

A one-off export is useful once; a feed of new ads is useful every day. Fill Only new ads — memory name (for example competitors-weekly) and the Actor remembers every ad it delivered under that name. Every later run with the same name writes — and charges — only ads you have not received before. Ads delivered earlier are skipped before their page is even opened, so details are not paid twice either.

  1. Run once with the memory name to load the current ads.
  2. Open the run → Actions → Schedule (or Schedules) and pick daily or weekly.
  3. Read the new ads from each run's dataset, or connect a webhook, Slack, n8n, Make or Zapier.

Each memory name is separate: one per competitor list or market. To start over, use a new name.

Use cases

Reach benchmarking

Sort a competitor's ads by impressionsMin to see which creatives got the most reach, and by runDays to see which ones they keep running.

Market footprint

impressionsByCountry shows where the budget actually lands — useful before entering a European market.

Targeting playbooks

targetedParameters, targetingLocations and targetingLanguages reveal whether competitors target job titles, company lists or audiences, and where.

Funnel and campaign analysis

landingUrl and utmParameters show landing pages, campaign names and LinkedIn campaign IDs (hsa_cam).

Integrations

Apify API (Python and JavaScript)

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("blueskyscraper/linkedin-ad-details-scraper").call(run_input={"companies": ["https://www.linkedin.com/company/hubspot/"], "countries": ["DE"], "maxAdsPerSearch": 50})
for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
print(ad.get("advertiserName"), ad.get("format"), ad.get("impressions"))
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('blueskyscraper/linkedin-ad-details-scraper').call({ adUrls: ['https://www.linkedin.com/ad-library/detail/1560106944'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

No-code: n8n, Make, Zapier, Google Sheets

Use the Apify app in n8n, Make or Zapier: Run Actor → Get dataset items. For Google Sheets, use the Google Sheets integration on the Actor's Integrations tab, or download the run as Excel or CSV.

MCP server for AI agents

Connect https://mcp.apify.com/?actors=blueskyscraper/linkedin-ad-details-scraper to Claude, ChatGPT, Cursor or any MCP client, then ask in plain words — for example "Which of HubSpot's LinkedIn ads in Germany got the most impressions, and how are they targeted?" The input fields are written so an agent can call the Actor correctly without reading this page.

🤖 For AI agents

Actor blueskyscraper/linkedin-ad-details-scraper. Purpose: LinkedIn ad details — impressions, impressions by country, run dates, payer, targeting, CTA, landing page — one row per ad. Minimal input: {"adUrls": ["https://www.linkedin.com/ad-library/detail/1560106944"]} or {"companies": ["https://www.linkedin.com/company/hubspot/"], "countries": ["DE"]}. Empty impressions/targeting mean LinkedIn does not publish them for that ad (not EU-reached), not zero. Billed per row as ad-with-details; error rows are free.

❓ FAQ

The Ad Library is a public transparency tool that LinkedIn publishes for anyone to search without logging in, and this Actor reads only those public pages. It does not log in or touch private profiles. Ads can contain names of people (Thought Leader ads, message senders); if you store or process them, the GDPR and similar laws apply to you. Check LinkedIn's terms and consult a lawyer for your specific use.

Does it need a LinkedIn account or cookies?

No. Nothing is logged in, so there is no account to get restricted, and no browser either — runs finish in seconds.

Can I use LinkedIn Ad Details Scraper with the Apify API?

Yes. Every run can be started and read over the REST API or the Python and JavaScript clients above, so it works as an unofficial LinkedIn Ads API for ad intelligence.

Can I use it through an MCP server?

Yes, through the Apify MCP server — see Integrations.

Can I integrate it with other apps?

Yes: n8n, Make, Zapier, Google Sheets, Slack, webhooks, and anything that can call an HTTP API.

Why are impressions or targeting empty for some ads?

LinkedIn publishes run dates, impressions and targeting only for ads it reports under the EU Digital Services Act — ads that reached people in the EU. For ads shown only outside the EU those fields stay empty. Impressions by country appear once LinkedIn publishes them, which can take up to 48 hours after an ad starts; very fresh ads show the total impressions range but no country split yet. The Actor never estimates numbers LinkedIn does not show.

What happens when a search finds nothing?

You get one free row with type: "error" saying so, with a hint (remove the country filter, widen the dates). A search with no ads is a valid answer, not a failure, and nothing is charged.

Is it one row per ad?

Yes. The same ad found by two searches or two companies in one run appears once.

Can I get impressions for US-only ads?

No — LinkedIn does not publish impressions or targeting for ads that never reached the EU, and the Actor does not guess them. You still get the advertiser, payer, creative, CTA and landing page for those ads.

What do "Company" and "Job" in targetedParameters mean?

They are LinkedIn's targeting categories: the advertiser chose people by company (name, industry, size) and by job (title, function, seniority). LinkedIn does not publish the exact values, only which categories were used.

Your feedback

Something missing or wrong? Open an issue on the Issues tab — we answer quickly. If the Actor saves you time, a review helps other buyers find it.

You might also like

ActorWhat it does
LinkedIn Ads ScraperSearch the LinkedIn Ad Library by keyword, advertiser, payer or company ID
LinkedIn Competitor Ads ScraperPaste a competitor's LinkedIn company page and get every ad it runs
LinkedIn Company Details ScraperSize, industry, website and followers of the advertisers you find
LinkedIn Company Posts ScraperA company's organic posts next to its paid ads
LinkedIn Company Jobs ScraperWho the advertiser is hiring right now
LinkedIn ScraperProfiles, companies and posts in one Actor, no login

Also known as: LinkedIn ad impressions, LinkedIn ad targeting scraper, LinkedIn Ad Library details, LinkedIn ads reach by country, LinkedIn ad landing pages, LinkedIn DSA ad data.