LinkedIn Ad Library Advertiser Disclosure Scraper
Under maintenancePricing
from $0.80 / 1,000 record scrapeds
LinkedIn Ad Library Advertiser Disclosure Scraper
Under maintenanceScrape LinkedIn Ad Library ads by keyword, company ID, or country: advertiser name, ad creative, and the full EU DSA disclosure block — total and per-country impressions, audience targeting, and the legal entity paying for each ad.
Pricing
from $0.80 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Scrapes LinkedIn's Ad Library by keyword, company ID, or country and returns the full disclosure record for each ad — not just the creative. That includes the EU DSA block most competing scrapers never fetch: total and per-country impressions, audience targeting, and the legal entity paying for the ad.
LinkedIn Ad Library Scraper Features
- Search by free-text keyword, LinkedIn company ID, or both — run them independently in the same job
- Restrict results to specific countries or a date window (last 30 days, this month, this year, last year)
- Returns every ad creative field: headline, body copy, CTA text, destination URL, images, video, document title
- Pulls the "Paid for by" legal entity — on agency-run campaigns this is the media agency, not the brand
- Pulls the EU DSA disclosure block when LinkedIn publishes it: total impressions bucket, impressions by country, and the targeting parameters (language, location, and whether company/demographic/education/interest targeting was used)
- Deduplicates ads found across multiple keyword or company searches automatically
Who Uses This
- B2B sales and prospecting teams — build a list of who's advertising on LinkedIn in a given category or country, and who's actually paying for it
- Competitive intelligence — track a competitor's ad cadence, creative angles, and targeting choices over time
- Agencies — audit which agency runs media for which brand, visible directly in the "Paid for by" field
- Compliance and research teams — pull the EU DSA disclosure fields (impressions by country, targeting parameters) LinkedIn is legally required to publish for EEA-targeted ads
How It Works
- Give the actor one or more search keywords, LinkedIn company IDs, or both.
- Optionally narrow by country and/or a date range.
- The actor walks the Ad Library search results for each combination and opens every ad's detail page.
- Each record comes back with the creative, the advertiser, and whatever disclosure data LinkedIn publishes for that ad — some fields are only present for ads targeted at the EU/EEA, since that's what triggers the DSA disclosure requirement.
Input
{"keywords": ["hubspot"],"companyIds": [],"countries": [],"dateOption": "","maxItems": 25}
| Field | Type | Default | Description |
|---|---|---|---|
keywords | array of strings | ["hubspot"] | Free-text search terms. Each keyword is searched independently. |
companyIds | array of strings | [] | LinkedIn company IDs (from linkedin.com/company/<id>) to fetch ads for directly. At least one of keywords or companyIds is required. |
countries | array of strings | [] | Restrict results to ads targeting these countries (ISO-style 2-letter codes, e.g. US, GB, DE). Leave empty to search worldwide. |
dateOption | string | "" (all time) | One of last-30-days, current-month, current-year, last-year, or empty for no date filter. |
maxItems | integer | 10 | Maximum number of ads to return. |
Resuming a large crawl
Every run emits a resumeCursor in its Output. To continue a crawl that stopped — hit maxItems, a per-run spend cap, or was aborted — start a new run with the same input plus that resumeCursor. You are not re-charged for ads already returned. Resume within your account's data-retention window.
LinkedIn Ad Library Scraper Output Fields
{"ad_id": "1486704414","detail_url": "https://www.linkedin.com/ad-library/detail/1486704414","advertiser_name": "Microsoft","advertiser_company_url": "https://www.linkedin.com/company/1035","advertiser_company_id": "1035","paid_for_by": "ZENITH UK (MEDIA) LIMITED","ad_type": "Single Image Ad","creative_type": "SPONSORED_STATUS_UPDATE","promoted_label": "Promoted","ad_headline": "Experience FabCon+SQLCon Europe 2026","ad_body_text": "Join data leaders, architects, analysts, developers, and IT professionals...","ad_cta_text": "Register","ad_destination_url": "https://espc.tech/conference/fabcon-europe-2026/","image_urls": ["https://media.licdn.com/dms/image/v2/..."],"video_url": null,"document_title": null,"first_shown_date": "Aug 5, 2026","last_shown_date": "Aug 10, 2026","total_impressions_range": "10k-20k","impressions_by_country": ["Italy: 26%", "France: 24%"],"audience_targeting_language": ["English"],"audience_targeting_location": ["Germany", "Netherlands", "Italy", "France"],"audience_targeting_company": [],"audience_targeting_demographic": [],"audience_targeting_education": [],"audience_targeting_interests_traits": [],"search_keyword": null,"search_country": null,"scraped_at": "2026-08-10T04:21:18.789Z"}
| Field | Type | Description |
|---|---|---|
ad_id | string | LinkedIn Ad Library ad id |
detail_url | string | URL of the ad's Ad Library detail page |
advertiser_name | string | Advertiser company name |
advertiser_company_url | string | LinkedIn company page URL of the advertiser |
advertiser_company_id | string | Numeric LinkedIn company id of the advertiser |
paid_for_by | string | The legal entity disclosed as paying for the ad — often a media agency, not the brand |
ad_type | string | Ad format: Single Image Ad, Video Ad, Carousel Ad, Document Ad, Message Ad, etc. |
creative_type | string | Raw LinkedIn creative-type code, e.g. SPONSORED_STATUS_UPDATE |
promoted_label | string | The "Promoted" label text shown on the ad card |
ad_headline | string | Ad headline text |
ad_body_text | string | Ad body / commentary text |
ad_cta_text | string | Call-to-action button text, e.g. Learn more, Register |
ad_destination_url | string | Destination URL the ad links to, when disclosed |
image_urls | array of strings | Creative image URLs |
video_url | string | Creative video URL, for video ads |
document_title | string | Document title, for document ads |
first_shown_date | string | Start of the disclosed run window |
last_shown_date | string | End of the disclosed run window |
total_impressions_range | string | EU DSA disclosure: total impressions bucket, e.g. 10k-20k |
impressions_by_country | array of strings | EU DSA disclosure: per-country impression share, formatted as Country: NN% |
audience_targeting_language | array of strings | Targeted languages, when disclosed |
audience_targeting_location | array of strings | Targeted locations, when disclosed |
audience_targeting_company | array of strings | Whether Company was a targeted or excluded parameter |
audience_targeting_demographic | array of strings | Whether Demographic was a targeted or excluded parameter |
audience_targeting_education | array of strings | Whether Education was a targeted or excluded parameter |
audience_targeting_interests_traits | array of strings | Whether Member Interests and Traits was a targeted or excluded parameter |
search_keyword | string | The search keyword that discovered this ad, if any |
search_country | string | The country filter used to discover this ad, if any |
scraped_at | string | ISO 8601 timestamp when the record was scraped |
A note on the DSA fields: LinkedIn only publishes the impressions and targeting block for ads targeted at the EU/EEA. Ads outside that scope return the creative and advertiser fields with the disclosure fields left null or empty — that's LinkedIn's own publishing rule, not a gap in the actor.
FAQ
Does this need a LinkedIn login?
No. The Ad Library is public, and every field this actor returns comes from that public page.
Why are some fields null on certain ads?
LinkedIn only discloses total/per-country impressions and audience targeting for ads run in the EU/EEA, per the DSA. Ads outside that scope simply don't carry that data on LinkedIn's own page.
Can I search by company instead of keyword?
Yes. Pass one or more numeric LinkedIn company IDs in companyIds — find one by opening a company's LinkedIn page and reading the id out of the URL.
Does the country filter change which ads I get?
Yes — it restricts results to ads LinkedIn shows as targeting that country, not just ads posted by an advertiser based there.
Need More Features?
Open an issue on the actor's Apify page and describe what you need.
Why Use This LinkedIn Ad Library Scraper?
- Reaches the disclosure page, not just the search card — impressions by country, full targeting parameters, and the paying legal entity, all fields most competing scrapers stop short of
- Two discovery modes in one actor — sweep a whole category by keyword, or track specific advertisers by company ID, in the same run
- Deduplicates automatically — search the same market from multiple angles without paying for the same ad twice