Getting Started
Search the LinkedIn Ad Library in two steps, then follow an ad through to its full copy and creative files.
1. Get your API key
Create an account and generate a FetchLayer API key from your dashboard. No LinkedIn developer account, partner application, or OAuth flow is involved.
Create free account →2. Search for ads
curl -X POST https://api.fetchlayer.dev/linkedin-ad-library/search-ads \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"query":"marketing automation","country":"US","dateRange":"current-year","limit":30}'dateRange defaults to the last 30 days
current-year, last-year, or a custom-date-range with startDate and endDate before concluding an advertiser has gone quiet. 3. Go from a brand name to its whole rotation
There is no advertiser profile endpoint — LinkedIn does not publish one. Resolve a brand with /search-advertisers, which returns the advertiser name, LinkedIn page, profile type and a sample ad id, then pass that name to /advertiser-ads.
curl -X POST https://api.fetchlayer.dev/linkedin-ad-library/search-advertisers \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"query":"Acme Software","pages":5}'Tip
/advertiser-ads can span several companies. The response's matchedAdvertisers array names the ones the results actually cover — check it before attributing a campaign to one brand. 4. Follow an ad to its copy and creative
Every ad carries an adId. Search results carry a shortened body (creative.bodyTruncated: true) — call /ad-detail for the full text, EU impressions band and targeting, then /ad-media for the files.
curl -X POST https://api.fetchlayer.dev/linkedin-ad-library/ad-media \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"ad":"512345678","kinds":["video","image"],"probe":true}'Tip
GET /media is the one endpoint that takes query parameters instead of a JSON body, and it supports HTTP Range requests — so a video streams and seeks in a player instead of downloading whole. Use it rather than LinkedIn's own asset URLs, which are signed and expire. 5. Read the notes array
Every response carries a notes array of caveat strings — a paging walk cut short, a filter the upstream capped, a list that may be incomplete. A well-formed response is not the same as a complete one, so read notes alongside hasNextPage and totalMatchCount before reporting a number.