Tiktok Ads Library Scraper avatar

Tiktok Ads Library Scraper

Under maintenance

Pricing

from $0.005 / actor start

Go to Apify Store
Tiktok Ads Library Scraper

Tiktok Ads Library Scraper

Under maintenance

Pull every ad TikTok has shown in the EU, UK, and Turkey — with filters, dates, and creative URLs — straight into a dataset.

Pricing

from $0.005 / actor start

Rating

0.0

(0)

Developer

Automly

Automly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 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 browser required. Filter by region, date range, advertiser ID, or keyword and get a flat dataset with pre-signed media URLs 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 calls the library's public API, paginates through results, and delivers a clean, flat dataset for each matching ad. 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 with pre-signed CDN links
  • 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
  • Extract targeting and sponsor data — per-region age/gender targeting, target audience size, advertiser sponsor name, and registered country, fetched concurrently via the detail endpoint
  • Runs on datacenter proxies — no residential proxy required

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 Dataset tab as the actor paginates.

Input parameters

ParameterTypeRequiredDefaultDescription
regionsarrayYes["all"]ISO country codes or ["all"]. Supported: EU member states, GB, TR.
startDatestringYesISO 8601 date (2025-01-01) or unix ms. Start of the ad flight window.
endDatestringYesISO 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.
fetchDetailsbooleanNotrueWhen enabled, makes one extra request per ad to fetch sponsor, targeting, and audience size data. Adds ~60 s for a 1,000-ad run via concurrent fetching (semaphore of 10). Disable to reduce latency when targeting data is not needed.
proxyConfigurationobjectNoApify proxyStandard Apify proxy config. Datacenter proxies are sufficient.

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,
"proxyConfiguration": { "useApifyProxy": true }
}

Output example

Each record in the dataset is a flat object. Media URLs are pre-signed CDN links — download them promptly, as they expire approximately 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"}
]
}

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_urlsarrayPre-signed video CDN URLs (expires ~6 h)
cover_urlsarrayPre-signed cover image URLs for video ads
image_urlsarrayPre-signed image URLs for image-only ads
estimated_audiencestringTikTok's audience size bucket (e.g. "1K-10K")
spentstringSpend range if disclosed by TikTok (often empty)
impressionintegerImpression count if disclosed
audit_statusstringTikTok internal audit status code
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 (from detail endpoint)
registry_locationstringAdvertiser's registered country/location (from detail endpoint)
advertiser_business_idstringTikTok advertiser business ID (from detail endpoint)
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

How much does it cost?

This actor runs on Apify's Pay-Per-Event or subscription plans. A typical run scraping 1,000 ads from three countries completes in under two minutes and consumes minimal compute units — well within the free trial allocation.

For volume workloads, the Scale plan is recommended. Scraping 10,000 ads across all EU regions costs approximately $0.10–0.30 in compute units depending on API response latency.

The fetchDetails option (enabled by default) makes one additional lightweight request per ad to the TikTok detail endpoint. These requests run concurrently (up to 10 at a time) and have minimal cost impact — typically adding less than 10% to total compute for most run sizes.

Tips to control costs:

  • Set maxResults to cap the run before it starts.
  • Narrow regions to the specific countries you need — covering "all" fetches from 29 regions sequentially.
  • Use startDate / endDate to limit the time window rather than relying solely on maxResults.

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 endpoint is publicly accessible without authentication. The actor makes standard HTTPS requests — no browser, no session tokens, no cookies required.

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 URLs returned by the API are pre-signed CDN links that expire approximately 6 hours after generation. If you need the media files, download them during or immediately after the run. The actor stores the raw URLs in the dataset — it does not download or re-host media.

What about rate limits?

TikTok's Ads Library API is relatively lenient. The actor paginates in series (one page at a time per region) with brief delays between requests. For large result sets, use maxResults to cap the run rather than relying on the API to throttle gracefully.

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

This reflects TikTok's own API behavior — the image filter does not exclusively return carousel/image ads in practice. The actor passes the filter value through as-is and derives the type field in the output from the actual media arrays present in each record (video_urls vs. image_urls).

Is this legal to use?

The TikTok Ads Library exists specifically to fulfill transparency obligations under the EU Digital Services Act (DSA) and equivalent regional regulations. The data is publicly disclosed. That said, you are responsible for ensuring your use complies with TikTok's Terms of Service, applicable data protection regulations (GDPR, UK GDPR, etc.), and any restrictions in your jurisdiction. This actor is provided for legitimate research, compliance, and journalism use cases.


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