TikTok Ads Library Scraper avatar

TikTok Ads Library Scraper

Pricing

from $0.005 / actor start

Go to Apify Store
TikTok Ads Library Scraper

TikTok Ads Library Scraper

Scrape the TikTok Ads Library: every ad shown in the EU, UK and Turkey with advertiser, first and last shown dates, video links, audience size and targeting. Just pick regions and dates. No login. Export to Excel, CSV or JSON, or use the API.

Pricing

from $0.005 / actor start

Rating

0.0

(0)

Developer

Automly

Automly

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

3

Monthly active users

8 days ago

Last modified

Share

TikTok Ads Library Scraper hero

Extract ad records from the public TikTok Ads Library (EU, UK, and Turkey) — no login, no cookies, no TikTok account. Filter by region, date range, advertiser ID, or keyword and get a flat dataset with media links ready for download or analysis.


What does TikTok Ads Library Scraper do?

The TikTok Ads Library is a transparency portal mandated by the EU Digital Services Act (DSA). It exposes all ads served to EU member state audiences, UK audiences, and Turkey — including video URLs, cover images, estimated audience sizes, impression counts, and flight dates.

This actor collects every matching ad and delivers a clean, flat dataset. Use it for competitive research, brand monitoring, regulatory compliance tracking, or academic study of political advertising.


Features

  • Scrape TikTok EU Ads Library without an account or cookies
  • Filter TikTok ads by country across all EU member states, UK, and Turkey
  • Search TikTok ads by keyword against advertiser name and ad content
  • Filter by advertiser business ID to monitor specific brands
  • Extract TikTok video ad URLs and cover images
  • Filter TikTok ads by date range using ISO 8601 dates or unix timestamps
  • Filter by ad type — video, image, or all creative formats
  • Sort results by first shown or last shown date, ascending or descending
  • Export TikTok ads data as JSON, CSV, or Excel via Apify datasets
  • Get the original ad copy — the advertiser's caption on every ad, plus the call-to-action button, landing page link and campaign objective
  • Extract targeting and sponsor data — per-region age/gender targeting, target audience size, advertiser sponsor name, and registered country

How to use

  1. Open the actor in Apify Console and click Try for free.
  2. Set Regions — enter one or more ISO country codes (e.g. DE, FR, GB) or leave as all to cover every supported region.
  3. Set Start date and End date to define the flight window (e.g. 2025-01-01 to 2025-12-31).
  4. Optionally enter a Search query to filter by keyword, or add Advertiser business IDs to target specific brands.
  5. Set Max results to cap total records (default 1,000).
  6. Click Save & Run. Results appear in the Output tab as they come in.

Input parameters

ParameterTypeRequiredDefaultDescription
regionsarrayYes["all"]ISO country codes or ["all"]. Supported: EU member states, GB, TR.
startDatestringYes—ISO 8601 date (2025-01-01) or unix ms. Start of the ad flight window.
endDatestringYes—ISO 8601 date or unix ms. Must be after startDate.
querystringNo""Free-text search against advertiser name and ad content.
advertiserBusinessIdsarrayNo[]Limit results to these advertiser IDs.
adTypeenumNo"all"all, video, or image. Note: TikTok's image filter returns video-dominant results in practice; the actor passes the value through as-is.
sortOrderenumNo"last_shown_date,desc"One of: last_shown_date,desc · last_shown_date,asc · first_shown_date,desc · first_shown_date,asc.
maxResultsintegerNo1000Hard cap on total records returned. Minimum 1.
fetchDetailsbooleanNotrueAdds sponsor, targeting, audience size, call to action, landing page link and campaign objective to each ad. The ad text comes with every ad either way. Adds about a minute to a 1,000-ad run. Turn it off when you don't need targeting data.
proxyConfigurationobjectNoApify proxyProxy settings. The default works for most runs.

Example input

{
"regions": ["DE", "FR", "GB"],
"startDate": "2025-01-01",
"endDate": "2025-12-31",
"query": "skincare",
"adType": "video",
"sortOrder": "last_shown_date,desc",
"maxResults": 500
}

Output example

Each record in the dataset is a flat object. Media links are temporary — download the files promptly, as the links expire about 6 hours after the run.

{
"id": "1863026687376529",
"advertiser": "WONDERSKIN EUROPE LTD",
"type": "video",
"first_shown": "2026-04-19T08:30:06+00:00",
"last_shown": "2026-04-19T08:30:06+00:00",
"video_urls": [
"https://library.tiktok.com/api/v1/cdn/.../a780febf-11a7-411c-b8b0-0913254efa91?VExpiration=1776744539&VSignature=..."
],
"cover_urls": [
"https://p16-common-sign.tiktokcdn.com/tos-no1a-p-0037-no/sample.jpg?x-expires=1776744539&x-signature=..."
],
"image_urls": [],
"estimated_audience": "0-1K",
"spent": "",
"impression": 0,
"audit_status": "1",
"region": "DE",
"scraped_at": "2026-04-21T10:00:00+00:00",
"ad_detail_url": "https://library.tiktok.com/ads/detail/?ad_id=1863026687376529",
"sponsor": "WONDERSKIN EUROPE LTD",
"registry_location": "Germany",
"advertiser_business_id": "7228917820455878658",
"target_audience_size": "22.0M-26.9M",
"audience_interest": "",
"age_targeting": [
{"region": "DE", "13-17": false, "18-24": true, "25-34": true, "35-44": true, "45-54": true, "55+": true}
],
"gender_targeting": [
{"region": "DE", "female": true, "male": true, "unknown": true}
],
"location_impressions": [
{"region": "DE", "impressions": "0-1K"}
],
"ad_text": "Your glow, all day long ✨ #skincare #makeup",
"call_to_action": "Shop now",
"landing_page_url": "https://www.example-shop.com/glow?utm_source=tiktok",
"advertising_objective": "Sales"
}

Output fields

FieldTypeDescription
idstringUnique ad identifier from TikTok
advertiserstringAdvertiser business name
typestringCreative category: video, image, or unknown
first_shownstringISO 8601 UTC — when the ad first ran
last_shownstringISO 8601 UTC — when the ad last ran
video_urlsarrayVideo links (expire after ~6 h)
cover_urlsarrayCover image links for video ads
image_urlsarrayImage links for image and carousel ads, in the order the ad shows them (video covers are in cover_urls)
estimated_audiencestringTikTok's audience size bucket (e.g. "1K-10K")
spentstringSpend range if disclosed by TikTok (often empty)
impressionintegerImpression count if disclosed
audit_statusstringTikTok's review status code for the ad
regionstringISO country code the record was fetched under
scraped_atstringISO 8601 UTC timestamp of the scrape
ad_detail_urlstringDirect link to the ad's detail page on TikTok Ads Library
sponsorstringSponsor name declared by the advertiser
registry_locationstringAdvertiser's registered country/location
advertiser_business_idstringTikTok advertiser business ID
target_audience_sizestringEstimated target audience size range, e.g. "22.0M-26.9M"
audience_intereststringInterest-based targeting categories, if disclosed
age_targetingarrayPer-region age group targeting booleans
gender_targetingarrayPer-region gender targeting booleans
location_impressionsarrayPer-region impression bucket breakdown
ad_textstringThe ad's original caption as the advertiser wrote it (TikTok's "Ad caption"). Comes with every ad; empty when the advertiser gave none
call_to_actionstringCall-to-action button text, e.g. "Shop now". Needs Fetch per-ad details on; empty when the ad has no button
landing_page_urlstringExternal website the ad links to, as TikTok shows it. Needs Fetch per-ad details on; empty when the ad links nowhere
advertising_objectivestringCampaign goal set by the advertiser, e.g. "Sales" or "Reach". Needs Fetch per-ad details on

How much does it cost?

You pay only for the results you get. See the Pricing tab for the current price. Apify's free plan gives you $5 of usage every month, enough to try the actor on real searches.

Tips to control costs:

  • Set maxResults to cap the run before it starts.
  • Narrow regions to the specific countries you need instead of "all" (29 regions).
  • Use startDate / endDate to limit the time window rather than relying solely on maxResults.
  • Turn off fetchDetails when you don't need targeting, sponsor, call-to-action or landing page data. You still get the ad text.

🤖 Use with AI agents (MCP)

This actor works as a tool for AI agents. Connect any MCP-compatible AI assistant or agent to the Apify MCP server at https://mcp.apify.com (sign in with your Apify account), and it can find this actor, fill in the input and read the results by itself. Ask in plain words, for example "Show the TikTok ads that ran in Germany this year", and the agent runs automly/tiktok-ads-library-scraper with an input like {"regions": ["DE"], "startDate": "2026-01-01", "endDate": "2026-10-01", "maxResults": 100}. Every input and output field has a plain description, so the agent knows what to type and what each column means. Agent runs cost the same as runs you start yourself.

FAQ

Which regions are supported?

All EU member states (Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden), plus the United Kingdom (GB) and Turkey (TR). This matches TikTok's own transparency scope under the EU Digital Services Act.

Does it need login, cookies, or an API key?

No. The TikTok Ads Library is public, so you need no TikTok account, cookies or API key.

Can it scrape US ads or other regions?

No. TikTok's Ads Library is limited to EU/UK/TR by TikTok's own policy. The US, Asia-Pacific, and other markets are not included in the transparency portal and cannot be scraped through this interface.

How fresh are the media URLs?

Video and image links expire about 6 hours after the run. If you need the media files, download them during or right after the run. The actor saves the links in the dataset; it does not download or re-host media.

Why does the image ad type filter return mostly video results?

That is how TikTok's own library filters: the image filter does not return only carousel/image ads. The type field in the output tells you what each ad really contains (video_urls vs. image_urls).

Supported regions reference

CodeCountryCodeCountry
ATAustriaITItaly
BEBelgiumLVLatvia
BGBulgariaLTLithuania
HRCroatiaLULuxembourg
CYCyprusMTMalta
CZCzechiaNLNetherlands
DKDenmarkPLPoland
EEEstoniaPTPortugal
FIFinlandRORomania
FRFranceSKSlovakia
DEGermanySISlovenia
GRGreeceESSpain
HUHungarySESweden
IEIrelandGBUnited Kingdom
——TRTurkey

  • Facebook Ad Library Scraper — extract ads from Meta's transparency library
  • Google Ads Transparency Scraper — search Google's political and election ad reports
  • YouTube Ad Scraper — collect video ad data from YouTube

⭐ If TikTok Ads Library Scraper saves you time, a short review on the Reviews tab would mean a lot and helps other people find it.