LinkedIn Ad Library API
Search every ad running on LinkedIn by keyword or advertiser and get the advertiser, creative, ad copy and 'paid for by' as structured JSON — each a single POST. No LinkedIn login and no partner application.
50 free credits on signup. No card, no LinkedIn login.
{ "data": { "ads": [ { "ad_id": "1564460026", "advertiser": "Ahrefs", "advertiser_id": null, "ad_copy": "Every AI answer that leaves you out is a customer going to someone else. See how your brand's AI visibility compares wit…", "format": "Single Image Ad", "creative_type": "SPONSORED_STATUS_UPDATE", "is_sponsored": true, "headline": "Don't get left out of the AI answer", "thumbnail": "https://media.licdn.com/dms/image/v2/D5610AQGqb9rOk1j9aQ/image-shrink_1280/B56Z.UXmB1KAAk-/0/1784900641216/2png?e=2147483647&v=beta&t=vUeLvAZ0QdN5MLuNqx1zwrLEikFiAGSqzBQRWhThg_4", "advertiser_logo": "https://media.licdn.com/dms/image/v2/D4D0BAQFsw_XSUcUEjg/company-logo_100_100/B4DZ4GwS3HIEAI-/0/1778229784240/ahrefs_logo?e=1788998400&v=beta&t=zpAgN2ol9Y--yDydCSt4BSKBgDWLGxMh6mznxv2wAgs", "detail_url": "https://www.linkedin.com/ad-library/detail/1564460026" }, { "ad_id": "1518688244", "advertiser": "Sodéli Sorvetes", "advertiser_id": null, "ad_copy": null, "format": "Message Ad", "creative_type": "SPONSORED_INMAILS", "is_sponsored": true, "headline": null, "thumbnail": null, "advertiser_logo": "https://media.licdn.com/dms/image/v2/D4D0BAQHBGuiNnf_RcA/company-logo_100_100/B4DZmhwMyTJcAQ-/0/1759355391576/sodli_sorvetes_logo?e=1788998400&v=beta&t=Aq8yJlTg0Wfxq-3eXTo6gkPB-0FVJTYypnyu9pBYqGQ", "detail_url": "https://www.linkedin.com/ad-library/detail/1518688244" } ], "total_seen": 24 }, "response_time": 3690, "credits_used": 6, "credits_remaining": 4564}A real captured response from this endpoint. Sign up to run your own.
What is the Scavio LinkedIn Ad Library API?
The Scavio LinkedIn Ad Library API is a REST API that returns LinkedIn ad data as structured JSON. You send a keyword or an advertiser's company id to a search endpoint, or an ad id to a detail endpoint, with your API key, and get back the advertiser, ad copy, creative and 'paid for by'.
- 2
- endpoints, both live in production
- 6
- credits per call, premium tier
- 0
- LinkedIn logins or applications required
Two endpoints, the whole library
Search the library by keyword or advertiser, then open any ad in full.
Ad search
POST /api/v1/linkedin/ads/searchSearch every ad running on LinkedIn by keyword, by advertiser company id, or both — filtered by country and recent time window. Each row carries the advertiser, ad copy, format and a detail link.
Ad detail
POST /api/v1/linkedin/ads/detailOne ad in full by its id or its Ad Library URL: the advertiser, who paid for it, the full ad copy, the creative and — for ads covered by EU transparency rules — estimated impressions and targeting.
Both LinkedIn Ad Library endpoints
Each route is a POST, returns JSON, and takes the same API key. The Ad Library is a premium surface at 6 credits per call.
| Endpoint | Returns | Credits |
|---|---|---|
Ad search/api/v1/linkedin/ads/search | Every ad matching a keyword or advertiser — advertiser, ad copy, format, sponsored label and a detail link | 6 |
Ad detail/api/v1/linkedin/ads/detail | One ad in full by id or URL — advertiser, paid-for-by, ad copy, creative, and impressions/demographics where disclosed | 6 |
50 free credits on signup covers your first calls of any kind. See plans
A keyword to every ad, then the full record
Search by keyword or advertiser, then open any ad by its id. The response on the right is a real capture, field names and all.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Search every ad running on LinkedIn by keyword - 6 credits
res = client.linkedin.ads_search(keyword="ai search", countries="US")
for ad in res["data"]["ads"]:
print(ad["ad_id"], ad["advertiser"], ad["format"])
# Open one ad in full by its id - 6 credits
detail = client.linkedin.ads_detail(ad_id="1564460026")
print(detail["data"]["paid_for_by"]){
"data": {
"ads": [
{
"ad_id": "1564460026",
"advertiser": "Ahrefs",
"advertiser_id": null,
"ad_copy": "Every AI answer that leaves you out is a customer going to someone else. See how your brand's AI visibility compares wit…",
"format": "Single Image Ad",
"creative_type": "SPONSORED_STATUS_UPDATE",
"is_sponsored": true,
"headline": "Don't get left out of the AI answer",
"thumbnail": "https://media.licdn.com/dms/image/v2/D5610AQGqb9rOk1j9aQ/image-shrink_1280/B56Z.UXmB1KAAk-/0/1784900641216/2png?e=2147483647&v=beta&t=vUeLvAZ0QdN5MLuNqx1zwrLEikFiAGSqzBQRWhThg_4",
"advertiser_logo": "https://media.licdn.com/dms/image/v2/D4D0BAQFsw_XSUcUEjg/company-logo_100_100/B4DZ4GwS3HIEAI-/0/1778229784240/ahrefs_logo?e=1788998400&v=beta&t=zpAgN2ol9Y--yDydCSt4BSKBgDWLGxMh6mznxv2wAgs",
"detail_url": "https://www.linkedin.com/ad-library/detail/1564460026"
},
{
"ad_id": "1518688244",
"advertiser": "Sodéli Sorvetes",
"advertiser_id": null,
"ad_copy": null,
"format": "Message Ad",
"creative_type": "SPONSORED_INMAILS",
"is_sponsored": true,
"headline": null,
"thumbnail": null,
"advertiser_logo": "https://media.licdn.com/dms/image/v2/D4D0BAQHBGuiNnf_RcA/company-logo_100_100/B4DZmhwMyTJcAQ-/0/1759355391576/sodli_sorvetes_logo?e=1788998400&v=beta&t=Aq8yJlTg0Wfxq-3eXTo6gkPB-0FVJTYypnyu9pBYqGQ",
"detail_url": "https://www.linkedin.com/ad-library/detail/1518688244"
}
],
"total_seen": 24
},
"response_time": 3690,
"credits_used": 6,
"credits_remaining": 4564
}Why not LinkedIn's own Ad Library?
LinkedIn's Ad Library is public, but it is a manual web UI — there is no official API behind it.
LinkedIn Ad Library (web)
- No official API — it is a web page you browse one advertiser or one ad at a time
- No bulk export and no JSON; nothing to query programmatically
- You cannot filter and pull results into your own tools
- Reading a hundred advertisers means a hundred manual page loads
Scavio LinkedIn Ad Library API
- One API key, issued at signup — no LinkedIn login, no partner application
- Search by keyword or advertiser, then open any ad by id or URL
- Advertiser, ad copy, creative and paid-for-by as structured JSON
- Same key and JSON envelope as 30 other Scavio platforms
Scavio returns data LinkedIn itself publishes in its Ad Library for transparency, and never authenticates as a LinkedIn member.
What developers build with it
Competitor ad monitoring
Pull every ad a competitor is running by their company id and diff it weekly. New campaigns, message shifts and quiet pauses all surface as structured rows, no scrolling the Ad Library by hand.
searchB2B creative research
Search a category by keyword to collect the ad copy, headlines and formats actually in market — Single Image, Video, Message and Article ads — as a swipe file your team can query.
search + detailAd transparency and compliance
Open a single ad by id to read who paid for it and, for EU-targeted ads, the disclosed impressions and targeting — the record you need for transparency, brand-safety or due-diligence work.
detailDemand and positioning signals
See which advertisers are pushing which messages in a category before you commit budget. Advertiser, format and copy on every row give quick context on how crowded and how loud a space is.
searchAgent tools for ad research
Point an agent at the MCP server and the LinkedIn Ad Library becomes a callable tool — what is this company running, who else advertises on this keyword — with one API key.
MCP + RESTHow to get LinkedIn ad data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no LinkedIn login or partner application.
- 2
Search by keyword or advertiser
POST to /api/v1/linkedin/ads/search with {"keyword": "ai search"} or a company_id, optionally scoped by countries and a recent date_option, and an Authorization: Bearer header. You get back the ads on the page with advertiser, copy, format and a detail_url.
- 3
Open any ad in full
Take the ad_id (or detail_url) from a search row and POST it to /api/v1/linkedin/ads/detail for the full record: advertiser, paid_for_by, ad copy, creative, and — when the ad is covered by EU transparency rules — impressions and demographics.
LinkedIn Ad Library API FAQ
What is the Scavio LinkedIn Ad Library API?
+
It is a REST API that returns LinkedIn Ad Library data as structured JSON. Two POST endpoints cover searching every ad running on LinkedIn by keyword or advertiser, and opening a single ad in full by its id or URL. You authenticate with a Scavio API key — there is no LinkedIn login and no partner application.
Does LinkedIn have an official Ad Library API?
+
No. LinkedIn's Ad Library is a manual web UI you browse one advertiser or one ad at a time — there is no official API, no bulk export and no JSON. Scavio turns that same public library into two REST calls you can query programmatically, pay-as-you-go, on one key.
What can I search by?
+
By keyword, by advertiser company id, or both together. You can also restrict results to one or more countries and to a recent time window. At least one of keyword or company_id is required on every search.
What does a search result contain?
+
Each ad row carries ad_id, advertiser, advertiser_id, ad_copy, format, creative_type, is_sponsored, headline, thumbnail, advertiser_logo and a detail_url. Fields that LinkedIn does not surface for a given ad — a Message Ad has no public copy or thumbnail, for instance — come back as null rather than being omitted.
What extra detail does the ad detail endpoint add?
+
Detail returns the advertiser's company URL, who paid for the ad (paid_for_by), the full untruncated ad copy, the creative as a media array, and an about block with the format and run dates. For ads covered by EU transparency rules it also returns impressions and demographics.
Why are impressions and demographics sometimes null?
+
LinkedIn only discloses estimated impressions and audience targeting for ads covered by EU transparency rules (the Digital Services Act). For those ads the detail response includes impressions and demographics; for every other ad both fields come back as null, and you get advertiser, creative and paid-for-by only. This is a limit of what LinkedIn publishes, not of the API.
How much does a request cost?
+
Every LinkedIn Ad Library endpoint costs 6 credits per call — it is a premium surface, priced above Scavio's standard platforms. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month.
How do I get every ad one company is running?
+
Pass that advertiser's numeric LinkedIn company id as company_id to the search endpoint. That returns the ads on the page for that advertiser; page through with the country and date filters to widen or narrow the set.
Is the ad copy in search results truncated?
+
In search results long copy is truncated with an ellipsis, so the list stays scannable. Call the detail endpoint with that ad's id to get the full, untruncated ad copy along with the creative and paid-for-by.
Which languages and tools are supported?
+
Official Python (pip install scavio) and JavaScript/TypeScript (npm i scavio) SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node. Any language can call the REST endpoints directly with an HTTP client.
Is using LinkedIn Ad Library data legal?
+
Scavio returns data LinkedIn itself publishes in its Ad Library for transparency purposes, and never authenticates as a LinkedIn member. You remain responsible for how you use it, including compliance with LinkedIn's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
LinkedIn API
Profiles, companies, posts and job listings as JSON.
Meta Ad Library API
Facebook and Instagram ads by keyword, Page or archive id.
Google Ads Transparency API
Advertisers, ads and creative history.
Facebook API
Profiles, posts, reels, groups and events.
MCP server
Every platform as a callable tool for agents.
Pricing
Credit packs and plans, no per-platform surcharge.
Start pulling LinkedIn ads today
50 free credits on signup, no card. Your first request is a POST with a keyword in it.