LinkedIn Ads Scraper - Ad Library Data, $0.25 per 1,000 Ads
Pricing
from $0.25 / 1,000 ad scrapeds
LinkedIn Ads Scraper - Ad Library Data, $0.25 per 1,000 Ads
The company an ad is for and the company paying for it are not always the same. The LinkedIn Ad Library names both. Search either, plus keyword and country. One row per ad: copy, headline, CTA, creative, landing URL, format, dates and impressions where shown. $0.25/1,000 ads.
Pricing
from $0.25 / 1,000 ad scrapeds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
LinkedIn Ads Scraper
The company an ad is for and the company that paid for it are not always the same one, and the public LinkedIn Ad Library names both. Company names, LinkedIn company URLs, keywords, payer names and country codes all search it, and you get one row per ad: the advertiser, the payer, the full ad copy, the headline and call to action, the image or video creative, the landing URL with its tracking parameters intact, the ad format, and the dates and countries LinkedIn discloses.
No account, no cookies, no browser. It reads the library the same way a logged-out visitor does.
What you get
One row per ad. This is a real row, trimmed only where noted:
{"searchTerm": "HubSpot","searchType": "company","adId": "1478337423","adUrl": "https://www.linkedin.com/ad-library/detail/1478337423","advertiserName": "HubSpot","advertiserUrl": "https://www.linkedin.com/company/68529","advertiserId": "68529","payerName": "HubSpot, Inc.","adType": "Single Image Ad","creativeType": "SPONSORED_STATUS_UPDATE","adText": "Brand consistency drives revenue growth for 68% of organizations. Learn how HubSpot & Canva help you build a brand that sticks.","headline": "Get The Free Brand Consistency Guide From HubSpot & Canva","callToAction": "Learn more","landingUrl": "https://offers.hubspot.com/how-to-build-a-brand-canva?utm_campaign=Strategic+Partnerships&utm_source=linkedin&utm_medium=paid&hsa_acc=517582366&hsa_cam=1173415993&hsa_ad=1478337423","imageUrl": "https://media.licdn.com/dms/image/v2/D4D10AQHeILHUGtZ8-A/image-shrink_1280/...","videoUrl": null,"firstShownDate": "2026-08-13","lastShownDate": "2026-08-19","runDates": "Ran from Aug 13, 2026 to Aug 19, 2026","totalImpressions": "1k-5k","countries": ["United Kingdom", "Canada", "Australia", "United States", "New Zealand", "Ireland"],"impressionsByCountry": [{ "country": "United Kingdom", "impressionsPercent": 32 },{ "country": "Canada", "impressionsPercent": 22 }],"targeting": [{ "facet": "Language", "value": "Targeting includes English" },{ "facet": "Location", "value": "Targeting includes Australia and New Zealand, United States, Canada, Ireland, United Kingdom" }],"isRestricted": false,"restrictionDetails": null,"scrapedAt": "2026-08-20T04:46:55.613Z"}
The landing URL keeps its UTM and hsa_ parameters. That's usually the most useful field in the row, because it tells you which campaign and ad group the creative belongs to.
Run dates, impressions and targeting are EU-only
runDates, totalImpressions, impressionsByCountry and targeting are there only when LinkedIn discloses them, and LinkedIn discloses them only for ads delivered into the EU. That's the Digital Services Act, not a choice we made. A US-only campaign comes back with those four fields null and everything else populated.
So put an EU country code in countries. If the advertiser runs anything at all into the EU, you get the dates, the impressions band and the targeting for those ads.
Input
Search by company:
{"companies": ["HubSpot", "https://www.linkedin.com/company/salesforce"],"maxItems": 200,"includeAdDetails": true}
Sweep an EU country to get the disclosure fields:
{"keywords": ["marketing automation"],"countries": ["DE", "FR"],"dateRange": "last-30-days","maxItems": 500}
Map an agency's client roster by who paid:
{"payers": ["Ogilvy"],"maxItems": 300}
companies,keywords,payers,countries— up to 20 entries each. They all apply to the same run.maxItems— total rows across every search, not per search. The budget splits evenly, so four searches at 200 gives you fifty of each. Default 20, ceiling 2,000. Keep it low while you're testing.includeAdDetails— on by default, and you want it on. It's the only place LinkedIn publishes the untruncated ad copy, the landing URL, the run dates, the impressions band and the targeting. Turning it off gives a faster advertiser-and-creative sweep. The price per ad is identical either way, so there's rarely a reason.dateRange— one ofall,last-30-days,current-month,current-year,last-year. Spell it exactly like that; anything else is treated asall.dateFrom/dateTo— exact window,YYYY-MM-DD. LinkedIn only accepts dates inside the last twelve months.
A company name matches on the advertiser name and can catch more than one page with a similar name. A company URL with a numeric id filters to exactly that advertiser. Use the URL when precision matters.
Other limits
- The library holds roughly the last twelve months. Anything older isn't there to fetch.
totalImpressionsis a band ("1k-5k"), never an exact number. LinkedIn publishes it that way.- Some ads come back
isRestricted: truewith the creative withheld.restrictionDetailssays why. videoUrlis null on image ads, andimageUrlis null on video ads. CheckadType.- Searching by name can return an advertiser you didn't mean.
advertiserIdin the output tells you which page you actually got.
Billing
$0.25 per 1,000 ads, plus a $0.001 run-start fee. Same rate on every plan, free or paid, with no volume tiers and no minimum spend.
You pay per ad written to your dataset. Not charged: sample rows, duplicate ads, searches that matched nothing, and ads that couldn't be read.
Because maxItems is a hard total, your worst case for a run is exactly maxItems × $0.00025 plus the start fee. A 2,000-ad run costs 50 cents.