Curly

LinkedIn Ad Library API for public ads and creatives.

Search public LinkedIn ads and receive structured advertiser, payer, run-period, impression, targeting, and creative data.

  • Up to 1,000 ads per search
  • No login or ad account
  • $0.50 per 1,000 results

Add more filters in Apify for payer, impressions, EU targeting, custom dates, or existing Ad Library URLs.

curl -X POST \
  "https://api.apify.com/v2/acts/curly~linkedin-ad-library-scraper/run-sync-get-dataset-items?format=json" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
  "advertiser": "JetBrains",
  "keyword": "AI",
  "countries": [
    "DE",
    "US"
  ],
  "dateRange": "current-year",
  "maxResultsPerUrl": 10
}'

Keep the Apify token in a server environment variable. Never place it in public browser code.

Public ad research, not campaign creation or management.

  • Build a competitor creative archive

    Search advertisers, payers, keywords, countries, and dates, then retain every public image, video, document, event, or carousel variant.

  • Connect messaging to transparency data

    Analyze body copy, headlines, calls to action, destinations, run periods, paying entities, and available impression or targeting disclosures together.

  • Monitor paid activity apart from organic posts

    Use stable ad IDs to compare campaign changes over time without mixing Ad Library records with a company's normal publishing feed.

A public LinkedIn ads data API for transparency research.

Enter search filters directly and let the Actor construct and paginate the public Ad Library query.

Advanced URL mode supports existing Ad Library search and detail URLs, but cannot be combined with structured search fields in one run.

Know which public ad and creative fields can be returned.

The response uses one complete schema for every public ad. Values LinkedIn does not publish remain null or empty.

FieldsPurposeAvailability
ad_id, ad_url, search_url, ad_formatAd identity, provenance, and public formatSuccessful results
advertiserAdvertiser name, company URL, company ID, and logoWhen public
payer, run_period, is_restrictedPaying entity, dates, active state, and restrictionsWhen published
impression_rangePublic total-impression estimateWhen LinkedIn publishes it
impressions_by_countryPublic country share distributionWhen published
targetingIncluded and excluded public targeting segmentsPrimarily EU-region ads
creative_variantsBody, headline, CTA, destinations, media, documents, events, and carousel itemsSuccessful results
scraped_at, sourceCollection time and record provenanceSuccessful results

Plan the integration with a complete public ad record.

This representative response shows the nested advertiser, run-period, impression, targeting, and creative-variant structures.

[
  {
    "ad_id": "1476666024",
    "ad_url": "https://www.linkedin.com/ad-library/detail/1476666024",
    "search_url": "https://www.linkedin.com/ad-library/search?accountOwner=Example",
    "ad_format": "Event Ad",
    "advertiser": {
      "name": "Example",
      "url": "https://www.linkedin.com/company/73267396",
      "company_id": "73267396",
      "logo_url": "https://media.licdn.com/example-logo.png"
    },
    "payer": "Example Corporation",
    "run_period": {"start_date":"2026-07-27","end_date":"2026-07-29","is_active":false},
    "is_restricted": false,
    "impression_range": {"label":"< 1k","estimated_min":0,"estimated_max":999},
    "impressions_by_country": [{"country":"United Kingdom","share_label":"17%","share_percent":17}],
    "targeting": [{"category":"Language","included_values":["English"],"excluded_values":[],"is_targeted":null,"is_excluded":null}],
    "creative_variants": [{
      "variant_index": 0,
      "creative_type": "SPONSORED_UPDATE_EVENT",
      "body": "Example public ad text.",
      "headline": "Example event",
      "destination_url": "https://www.linkedin.com/events/example",
      "call_to_action": "Register",
      "external_urls": [],
      "media": [],
      "document": null,
      "event": {"title":"Example event","url":"https://www.linkedin.com/events/example","start_at":"2026-09-09T15:00:00.000Z","end_at":null,"location":"Online"},
      "carousel_items": []
    }],
    "scraped_at": "2026-07-29T12:00:00.000Z",
    "source": "linkedin_ad_library"
  }
]

Ad Library API versus LinkedIn's Advertising API.

The official Advertising API manages authorized ad accounts and campaigns. Curly instead reads transparency records that LinkedIn publishes in its public Ad Library.

OptionStarting inputAccessBest for
Official LinkedIn Advertising APIAuthorized ad account and campaign objectsRestricted Marketing API accessCreating, managing, and reporting on owned campaigns
LinkedIn public Ad LibraryManual public searchPublic browserOne-off transparency research
Curly Ad Library APIPublic search filters or Ad Library URLsApify API tokenStructured public ad datasets and monitoring
Curly Company Posts APIKnown company pagesSeparate Curly endpointOrganic public company posts, not ads

Turn public ad searches into repeatable datasets.

Use the ad ID as a stable key, then schedule searches, receive webhooks, or export datasets through Apify.

Ready to search the public Ad Library by API?

Open the Curly Actor to choose filters, test searches, schedule monitoring, or connect the dataset.

Open API on Apify

Common LinkedIn Ad Library API questions.