TikTok Ad Library - Free To Use avatar

TikTok Ad Library - Free To Use

Pricing

Pay per usage

Go to Apify Store
TikTok Ad Library - Free To Use

TikTok Ad Library - Free To Use

Scrape ads from the TikTok Ad Library by keyword, advertiser name, or URL. Export advertiser, creative type, first/last shown dates, audience size, video/image creatives, and download media files permanently. Full targeting data (regions, age, gender) on demand. No login required.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

FlowExtract API

FlowExtract API

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

2

Monthly active users

9 hours ago

Last modified

Share

🔍 TikTok Ad Library Scraper Export TikTok ads by keyword, advertiser, or URL

Formula: Scrapes TikTok ads + from the TikTok Ad Library (library.tiktok.com) + as clean, structured JSON

TikTok Ad Library Scraper extracts ads from the official TikTok Ad Library search by keyword, by advertiser name, or paste a library URL directly, and get back advertiser, creative type, shown dates, estimated audience, video and image creatives, and (optionally) full targeting data. No login, no cookies, no browser automation.

Perfect for competitive ad researchers, performance marketers, and agencies who need TikTok ad creative and targeting intelligence without manually clicking through the Ad Library.


Why scrape the TikTok Ad Library?

The TikTok Ad Library is TikTok's public DSA transparency portal, holding roughly one year of ads served across the EU/EEA. It exposes the actual creatives, the advertiser behind them, how long each ad ran, and per ad the age, gender, and regional impression breakdown. That is competitor intelligence you would otherwise pay a SaaS subscription for.

Here are some of the most common use cases:

  • Competitor ad monitoring: Track every ad a rival advertiser is running, with first/last shown dates.
  • Creative research: Pull the actual video and image creatives competitors use to model your own.
  • Targeting intelligence: See which countries, age bands, and genders an advertiser targets (with Fetch Ad Detail).
  • Market & trend analysis: Search a keyword across all regions to map who is advertising in a category.
  • Ad compliance & due diligence: Capture ad copy, audit status, and rejection reasons for a brand.

What data can the TikTok Ad Library Scraper extract?

🏷️ Ad Identity

  • id Unique TikTok ad identifier
  • name Advertiser display name
  • type Creative format (video or image)
  • audit_status TikTok moderation status

📅 Timeline

  • first_shown_date First date the ad ran (Unix ms, UTC)
  • last_shown_date Most recent date the ad ran (Unix ms, UTC)

📊 Reach

  • estimated_audience Bucketed audience size (e.g. 0-1K, 1K-10K)

🎬 Creatives

  • videos Playable signed video URL + cover image
  • image_urls Image creative URLs
  • video_download_url / cover_download_url / image_download_urls permanent re-hosted links, present only when Download Media is enabled (originals are always kept alongside)

🎯 Full Targeting (only when Fetch Ad Detail is enabled)

  • Creative title & advertising objective
  • Advertiser registry location & business ID
  • Target audience size and targeted countries
  • Per-region impressions with age (13-17 … 55+) and gender breakdowns

🔖 Provenance

  • region, sort, source_url, _source which search produced the record

⚙️ How to use the TikTok Ad Library Scraper

You provide URLs, keyword filters, or both. Each URL and each keyword counts as one input item.

Total results = (number of URLs + number of keywords) × Maximum Results. Example: 5 URLs + 6 keywords = 11 inputs. At 16 Maximum Results → 11 × 16 = 176 ads maximum.

Input Options

Start URLs (Array)

Paste full library.tiktok.com/ads URLs copied from your browser. Region, dates, sort order, and advertiser filters are read directly from the URL no extra config.

Input valueWhat it extracts
https://library.tiktok.com/ads?region=DE&adv_name=nikeAds matching "nike" in Germany
https://library.tiktok.com/ads?region=all&adv_name=...&query_type=2&adv_biz_ids=...A specific advertiser's ads, all regions
{
"startUrls": [
{ "url": "https://library.tiktok.com/ads?region=DE&adv_name=nike&sort_type=last_shown_date,desc" }
]
}

Keyword Filters (Array of objects)

Build searches manually. Each entry runs independently with its own region, date range, and sort order.

  • query The keyword or advertiser name.
  • searchAsAdvertiser (boolean, default false) Off: match the text against ad content (TikTok's "Search this exact phrase"). On: treat the text as an advertiser name and return that advertiser's ads (TikTok's "Advertiser name").
  • region One target country (or all for EU/EEA). The API processes one region per search.
  • dateFrom / dateTo Date range. See the date window note below.
  • sortOrder newest, oldest, created, created-asc, popular, unpopular.
{
"keywords": [
{ "query": "summer sale", "region": "DE", "sortOrder": "newest" },
{ "query": "Apify Technologies s.r.o.", "searchAsAdvertiser": true, "region": "AT" }
],
"maxResults": 10
}

maxResults (Integer)

  • Default: 10
  • Maximum ads collected per URL and per keyword. Set to 0 to collect everything the API returns (up to TikTok's hard cap of 1,000 per query). Start with 10 to test.

fetchAdDetail (Boolean)

  • Default: false
  • When on, the scraper makes one extra request per ad to collect full advertiser, creative, and targeting detail. This is slower one additional request per ad.

downloadMedia (Boolean)

  • Default: false
  • When on, each ad's video and images are downloaded to permanent storage and the links are added to the output (video_download_url, cover_download_url, image_download_urls). TikTok's own media links are signed and expire after a few hours; this re-hosts them so they stay accessible.
  • Media is downloaded by the Universal Downloader actor and saved to your account's storage (free accounts: files expire in ~7 days; paid accounts: retained).

⏱️ Performance note both options add time. fetchAdDetail adds one request per ad. downloadMedia adds a separate download per ad (a few seconds each). Each one alone makes a run noticeably slower; enabling both together compounds the cost for large result counts (e.g. 1,000 ads) expect a substantially longer run. If you only need metadata, leave both off. Turn them on when you specifically need the full detail and/or permanent media files.

📆 The date window (important)

The TikTok Ad Library only retains about one year of "last shown date" history, and the earliest selectable day slides forward daily. This scraper handles that automatically:

  • No dates given → defaults to roughly the last year (today back to ~364 days).
  • Start date too old → clamped up to the earliest available day, with a warning. The run continues.
  • dateFrom after dateTo → the entry is rejected with a clear message (dates are reversed).
  • Entire range older than ~1 year → the entry is rejected (nothing to scrape there).

💰 Pricing

🎉 This Actor is currently FREE to use. You only pay Apify's standard platform usage for the run. There are no per-result charges at this time.

Pricing may change in the future. Any change will be shown transparently here and in the Apify Store before you run.


📊 Sample Output

Without fetchAdDetail (details is null):

{
"id": "1866984139925698",
"name": "nexxtstyyle",
"type": "video",
"audit_status": "1",
"first_shown_date": 1780495093000,
"last_shown_date": 1780495093000,
"estimated_audience": "0-1K",
"videos": [
{ "video_url": "https://library.tiktok.com/api/v1/cdn/.../video.mp4", "cover_img": "https://p19-common-sign.tiktokcdn.com/.../cover.jpeg" }
],
"image_urls": [],
"details": null,
"region": "DE",
"sort": "last_shown_date,desc",
"source_url": "URL: https://library.tiktok.com/ads?region=DE&adv_name=nike&sort_type=last_shown_date,desc",
"_source": "tiktok_ad_library_scraper"
}

With fetchAdDetail (details populated truncated):

{
"id": "1866984139925698",
"name": "nexxtstyyle",
"type": "video",
"estimated_audience": "0-1K",
"videos": [ { "video_url": "...", "cover_img": "..." } ],
"details": {
"ad": { "title": "Nike☀️🔝 #nike #summer", "advertising_objective": "Reach", "estimated_audience": "1K-10K" },
"advertiser": { "name": "Nextstyleee", "adv_biz_ids": "7555084503564304385", "registry_location": "Emirates" },
"targeting": {
"target_audience_size": "23.6M-28.8M",
"countries": ["ES", "FR", "IT", "DE", "BE"],
"location": {
"total_region": 5,
"data": [
{ "region": "ES", "impressions": "2K", "breakdowns": [ { "age": "18-24", "gender": "FEMALE", "impressions": "0-1K" } ] }
]
}
}
},
"region": "DE",
"source_url": "URL: https://library.tiktok.com/ads?region=DE&adv_name=nike",
"_source": "tiktok_ad_library_scraper"
}

With downloadMedia (permanent links added alongside originals):

{
"id": "1866996966152193",
"name": "nikesk87",
"type": "video",
"videos": [
{
"video_url": "https://library.tiktok.com/api/v1/cdn/.../video.mp4?...",
"cover_img": "https://p16-common-sign.tiktokcdn.com/.../cover.image?...",
"video_download_url": "https://api.apify.com/v2/key-value-stores/<store>/records/video-...mp4?signature=...",
"cover_download_url": "https://api.apify.com/v2/key-value-stores/<store>/records/image-...image?signature=..."
}
],
"image_urls": [],
"image_download_urls": [],
"region": "DE",
"_source": "tiktok_ad_library_scraper"
}

The originals (video_url, cover_img, image_urls) are always kept; the *_download_url fields are added only when Download Media is on.


❓ Frequently Asked Questions

Do I need a TikTok account to use this Actor? No. The TikTok Ad Library is a public transparency portal. This scraper requires no login, cookies, or credentials.

How far back can I search? About one year. The TikTok Ad Library retains roughly 365 days of "last shown date" history, and the window slides forward daily. Dates older than that are automatically clamped or skipped with a clear message.

Can I scrape multiple keywords and URLs in one run? Yes. Provide any mix of URLs and keyword filters they are processed in the same run (URLs first, then keywords), each capped at maxResults.

What's the difference between keyword search and advertiser search? A keyword search matches your text against ad content. Turning on searchAsAdvertiser treats your text as an advertiser name and returns that advertiser's ads the same split TikTok shows as "Search this exact phrase" vs "Advertiser name."

Why is the run slow when I enable Download Media or Fetch Ad Detail? Both add per-ad work. fetchAdDetail makes one extra request per ad; downloadMedia downloads each ad's video and images (a few seconds per ad) via the Universal Downloader. Enabling both together compounds the time, so a large run (e.g. 1,000 ads) can take substantially longer. Leave them off if you only need metadata and the original (short-lived) media URLs.

Where are downloaded media files stored, and do they expire? They're saved to your own Apify account's key-value store by the Universal Downloader. On free accounts, unnamed storage expires in about 7 days; on paid accounts it's retained. The original TikTok URLs expire after a few hours regardless that's why Download Media exists.

What happens if the run is aborted or hits a block mid-way? Results are written in real time, one ad at a time, as they are scraped. Anything already collected is saved. A failing source is skipped and the next one continues one bad input never loses the whole run.

Why did one of my keyword/URL entries get skipped? Most likely its date range was reversed (dateFrom after dateTo) or fell entirely outside TikTok's ~1-year retention. The run log states exactly which entry and why.


This Actor extracts publicly visible data from the TikTok Ad Library the same information anyone can see in their browser on library.tiktok.com.

Please use this tool responsibly:

  • Only use the data for lawful purposes such as research, competitive analysis, and compliance.
  • Comply with TikTok's Terms of Service and applicable data protection regulations (GDPR, CCPA, etc.).
  • Do not use extracted data for spam, harassment, or unsolicited outreach.

For questions about a specific use case, contact us at flowextractapi@outlook.com.


🔄 How results are saved

Results stream into your dataset in real time each ad is pushed the moment it is scraped, in order (URLs first, then keywords). There is no end-of-run batch dump:

TriggerBehavior
Each ad scrapedPushed to the dataset immediately
Source fails or is blockedThat source is skipped; already-pushed ads are retained
Budget/charge limit reachedRun stops cleanly; everything collected so far is kept
Run abortedAlready-pushed ads remain in the dataset

🚫 Error Handling

SituationWhat you seeWhat to do
Reversed datesDate From … is after Date To …Swap the dates so the start comes first
Range too oldrange … is entirely older than TikTok's ~1-year retentionChoose dates within the last year
Date out of range at runtimeTikTok rejected the date range as out of its ~1-year retention windowNarrow the range to the last year
Initial blockTikTok blocked the initial requestTry again later, or enable a proxy
No valid inputNo scrapeable sourcesCheck your URLs, keywords, and dates

💬 Support & Contact

Get Help

Social Media


🏠 Real Estate Data

domain.com.au Scraper Extract Australian property listings from domain.com.au with full enrichment, agent contacts, schools, and market insights.

Realtor.com Scraper Extract US property listings from Realtor.com. Pricing, agent contacts, tax history, AVM estimates, nearby schools, flood and noise data, and full listing history.

PropertyFinder Scraper Extract property listings from PropertyFinder across UAE, Saudi Arabia, Bahrain, Egypt, and Qatar.

Idealista Scraper API Advanced Idealista property data extraction with API access.

Idealista Scraper Extract Spanish real estate listings from Idealista.

Leboncoin.fr Scraper Extract French classified listings from Leboncoin real estate, vehicles, jobs, and more.

AI Contact Intelligence Extractor Extract emails, phones, contacts & custom data using AI.

🍔 Food & Delivery

DoorDash Scraper Scrape store listings, full menus, featured items, and customer reviews from DoorDash.

🎬 Video & Media Tools

YouTube Transcript & Metadata Extractor Extract complete video transcripts with timestamps and comprehensive metadata.

YouTube Full Channel, Playlists, Shorts, Live Extract complete playlist information with all video details from any YouTube playlist.

Zoom Scraper | Downloader & Transcript Extract Zoom meeting recordings, transcripts, and metadata.

Loom Scraper | Downloader & Transcript Download Loom videos and extract transcripts.

🛠️ Developer & Security Tools

Screenshot Fast, reliable webpage screenshots with customizable options.

Ultimate Screenshot Advanced screenshot tool with full-page capture, custom viewports, and quality controls.

📱 Social Media Tools

Facebook Ads Scraper Pro Extract Facebook ads data for competitor analysis and market research.

LinkedIn Ad Library Scraper Extract comprehensive advertising data from LinkedIn's Ad Library.


Ready to extract TikTok ad data? Start using TikTok Ad Library Scraper now!