L logiover
marketing · May 20, 2026 · 6 min read

How to Scrape the LinkedIn Ad Library in 2026

Pull every public LinkedIn ad — advertiser, copy, headlines, creatives and active dates — straight from the official Ad Library transparency endpoints, with no login or account risk.

LinkedIn’s Ad Library is one of the most underused competitive-intelligence sources in B2B marketing. Since LinkedIn began publishing an ad-transparency archive, every ad that any company runs on the platform is publicly viewable for a rolling window — advertiser name, copy, headlines, the creative itself, and the dates it ran. The catch is that the Ad Library UI is built for browsing one advertiser at a time, not for bulk export. This guide covers what the archive exposes, why scraping it is fundamentally different from scraping the rest of LinkedIn, and how to pull thousands of ads cleanly.

Why the Ad Library is different from the rest of LinkedIn

If you’ve ever tried to scrape the main LinkedIn site — profiles, the feed, company pages — you know it is a minefield. Authenticated LinkedIn endpoints sit behind aggressive bot detection, and scraping them with your own logged-in account is a fast way to get that account restricted or banned.

The Ad Library is the opposite. It is a public transparency archive that LinkedIn is legally and reputationally motivated to keep open. The pages are server-rendered HTML served from public transparency endpoints, with no authentication wall. That changes the entire engineering posture:

  • No login. You never touch credentials, so there is no account to get banned.
  • No cookies, no session. Nothing to expire or rotate.
  • No headless browser required. The content is in the initial HTML, so a plain HTTP GET plus an HTML parser (Cheerio) is enough. No Playwright, no Chromium, no JavaScript runtime.

This is why scraping the Ad Library is cheap and stable while scraping authenticated LinkedIn is expensive and fragile. You are working with data LinkedIn publishes on purpose.

What’s worth extracting

For each ad in the archive, the consistent fields are:

  • Advertiser — the company or page name running the ad, plus its detail URL.
  • Ad copy — the primary text body of the ad.
  • Headline — the bold headline on the creative.
  • Creative assets — image URLs, video poster/thumbnail URLs, and individual carousel cards.
  • Creative format — single image, video, carousel, article/document promotion, or event promotion.
  • Active date range — when the ad started and (if ended) stopped running, within the rolling transparency window.
  • Detail URL — link to the ad’s transparency detail page.
  • Stable ad ID — used for deduplication across runs.

Optionally, the detail page can be enriched to pull impression ranges and payer information where LinkedIn discloses it — useful for estimating relative spend.

Filtering: keyword, country, date, format

The Ad Library supports the filters that matter for competitive research, and the scraper maps onto them directly:

  • Keyword — match on advertiser name or ad text. Search a competitor’s name, or a product category term to catch everyone advertising in a space.
  • Country — filter by any of 250+ markets. Ads are localized, so a US campaign and a DACH campaign for the same product show up separately.
  • Date range — restrict to a custom window inside the rolling archive (roughly the trailing 12 months).
  • Creative type — narrow to just video, just carousel, etc.

The crawler walks cursor-based pagination and deduplicates by the stable ad identifier, so re-running a query on a schedule gives you only genuinely new ads.

Run the LinkedIn Ad Library Scraper — advertiser, copy, headlines, creatives and active dates across 250+ countries. No login, no cookies, no ban risk. $1.50 per 1,000 ads.

Schema design for downstream use

A clean per-ad record for a warehouse or swipe-file database:

{
  "ad_id": "1234567890",
  "advertiser_name": "Acme Analytics",
  "advertiser_url": "https://www.linkedin.com/company/acme-analytics",
  "headline": "Cut reporting time by 80%",
  "ad_copy": "Stop exporting CSVs by hand. Acme connects your stack in minutes...",
  "creative_format": "single_image",
  "creative_urls": ["https://media.licdn.com/.../ad-creative.jpg"],
  "country": "US",
  "active_from": "2026-03-01",
  "active_to": "2026-05-12",
  "detail_url": "https://www.linkedin.com/ad-library/detail/1234567890",
  "impression_range": "10k–50k",
  "scraped_at": "2026-05-20T09:00:00Z"
}

A few choices worth making early:

  • Keep ad_id as your stable join key. Advertiser names get reworded; the ID does not.
  • Store creative_urls as an array even for single-image ads. Carousels have many; a flat string forces a painful migration later.
  • Always record country. The same campaign localized to five markets is five rows, and the messaging differences between them are often the most interesting finding.
  • Log scraped_at. The archive is a rolling window — ads age out — so you need to know when a record was captured.

Typical use cases

What B2B teams actually do with this data:

  • Competitor ad intelligence — track every active and historical ad from a rival inside the trailing window, and detect new campaigns or messaging pivots the moment they launch.
  • Ad copy swipe files — assemble a searchable corpus of industry headlines and body copy for your own creative team to reference.
  • Lead-gen by ad-spend signal — companies actively advertising on LinkedIn are spending money and trying to grow. Advertiser lists become warm prospect lists for SDRs.
  • Creative-format trend research — measure the format mix in a category (is everyone moving to video?) and track how it shifts quarter over quarter.
  • Agency reporting and pitch decks — pull a competitor’s recent ad output to build an audit slide for a prospective client.
  • Investor / market intelligence — a company that ramps LinkedIn ad activity right after a funding round is a signal. Surface those for VC or M&A scouting.
  • AI / RAG training data — clean headline + copy + format triples make excellent fine-tuning pairs for ad-generation models.

The common thread is breadth across competitors plus freshness over time. A one-off snapshot of one advertiser is a curiosity; a scheduled feed across a whole category, refreshed weekly, is a sellable intelligence product.

Cost math

Because there is no browser and no proxy bandwidth to pay for — just HTTP GETs against public endpoints — this is one of the cheapest scrapes you can run. Pricing is $1.50 per 1,000 ads plus a trivial per-run start fee.

Concrete example: monitoring 30 competitors, each with up to ~200 ads in the window, refreshed weekly, is roughly 6,000 ads per week, or ~24,000 ads per month. At $1.50 per thousand that’s about $36/month for a continuously refreshed competitive-ad feed across a whole peer set.

Compare that to building it yourself. The HTTP layer is genuinely simple — but the HTML parsing for advertiser/copy/headline/creative extraction breaks every time LinkedIn tweaks the transparency page markup, and cursor pagination plus dedup logic is fiddly to get right. The managed actor absorbs that maintenance.

Common pitfalls

  • The rolling window is finite. The archive only covers roughly the trailing 12 months. If you want history beyond that, you must scrape continuously and accumulate it yourself — there is no backfill once an ad ages out.
  • Country-localized duplicates are not bugs. The same creative running in five markets is five distinct ad records. Decide up front whether you want to dedup across countries or keep them separate (keep them separate — the localization is signal).
  • Impression ranges are ranges, not numbers. LinkedIn discloses buckets like “10k–50k,” not exact figures. Treat them as ordinal, not continuous.
  • Not every advertiser appears. Only ads that ran while transparency was active are archived; some ad types and some regions have gaps. Absence of an ad is not proof a company didn’t advertise.
  • Don’t confuse this with engagement data. The Ad Library tells you what was served, not how it performed (beyond impression buckets). For organic engagement signals you need a different source.

Wrapping up

The LinkedIn Ad Library is a rare case of a high-value B2B dataset that LinkedIn deliberately keeps public — no login, no ban risk, no headless browser. If you need a one-time look at a single competitor, the UI is fine. If you want a refreshed, structured feed across a whole category for competitive intelligence, swipe files, or lead signals, run it as a managed scraper and let someone else carry the HTML-parsing maintenance.

Open the LinkedIn Ad Library Scraper on Apify — filter by keyword, country and date; export thousands of ads per run. Pay per ad. Start with Apify’s free monthly credit.

Related guides