TikTok Ads Library FAST
Pricing
from $1.00 / 1,000 results
TikTok Ads Library FAST
๐ฎ Unlock TikTok's ad intelligence with our powerful scraper. Extract competitor campaigns, creative assets and performance metrics. Search by keyword, advertiser name or ID across all regions. Get comprehensive ad data for market-leading insights.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Data Xplorer
Maintained by CommunityActor stats
20
Bookmarked
562
Total users
131
Monthly active users
1.2 hours
Issues response
3 days ago
Last modified
Categories
Share
TikTok Ads Library Scraper extracts ads from the official TikTok Ads Library (library.tiktok.com) and returns clean, structured data you can export to JSON, CSV or Excel. Search by keyword, advertiser name or paste a TikTok Ads Library URL, and get creatives, dates, targeting, reach by country and the advertiser profile for every ad. No TikTok account, no login, no cookies.
๐ค What is TikTok Ads Library Scraper?
TikTok Ads Library Scraper is a ready to use tool that turns the TikTok Ads Library into a dataset. Instead of browsing ads one by one, you give it a keyword, an advertiser or a link, and it collects hundreds of ads for you in a few minutes.
It is built for marketers, agencies, analysts and researchers who want to see what competitors are running on TikTok, without writing any code.
โจ What can this TikTok Ads Library scraper do?
- ๐ฏ Flexible search: find ads by keyword, exact phrase, advertiser name, optional advertiser ID, or a pasted Ads Library URL
- ๐ 33 countries: every market covered by the TikTok Ads Library (EU and EEA countries, Switzerland, Turkey and the United Kingdom), one at a time or all at once
- ๐บ๏ธ Reach by country: get impressions per country, plus the age ร gender breakdown for each market
- ๐ค Advertiser profile: business IDs, registry location, sponsor and the linked TikTok account (username, followers, account type)
- ๐ฌ Creative assets: links to every video and image used in the ad
- ๐ข Numbers you can sort: every audience and impressions range comes with the readable text and clean integer min and max values
- โก Fast: a full run with details for 500 ads takes around 2 minutes in our tests
- ๐ Reliable: automatic retries and IP rotation are handled for you, so you do not configure anything
- ๐ฅ Optional media download: save the videos and images of each ad in your run's storage (off by default, billed per file)
Since it runs on the Apify platform, you also get scheduling, API access, webhooks, monitoring and integrations with tools like Make, Zapier, Google Sheets and n8n.
๐ What data can you extract from TikTok Ads Library?
| Field | Description |
|---|---|
| AD ID | Unique identifier for the ad |
| Advertiser Name | Name of the company or entity running the ad |
| Ad Title | Title or headline of the ad creative |
| AD Preview | URL of the preview image |
| Ad Dates | First and last shown dates with timestamps |
| Ad Audience | Estimated audience as { raw, min, max } (e.g. "1M-10M") |
| Ad Details | Estimated audience, spend, type, audit status, impressions, sponsor, target audience size, advertising objective, call to action, landing page URL, ad category, app store link, store name and days running |
| Ad Media | URLs of all creative assets (videos, images, cover images) |
| Ad Media Saved | Only with Download media files: one entry per saved video or image, with a link to the file in the run's storage |
| Ad Targeting | Regions, age groups, gender, languages, cities, provinces, operating systems, device models, high spending power, audience, interests and interaction signals |
| Ad Reach | Total regions, total impressions and, for each country, impressions plus a full age ร gender breakdown |
| Advertiser | Name, business IDs, registry location, sponsor and linked TikTok account (username, display name, followers, account type, profile link, avatar) |
| Ad Sponsor | Sponsor information |
| Ad Target Audience Size | Estimated target audience as { raw, min, max } |
| Ad Detail URL | Direct link to the ad in the TikTok Ads Library |
Fields like Ad Audience, Ad Target Audience Size and every reach value are returned as an object, for example { "raw": "11.7M-14.2M", "min": 11700000, "max": 14200000 }. Keep the readable text in raw and sort, filter or add up the numbers using min and max. For a single value, min equals max. Empty values return null.
๐ How to scrape TikTok ads
1๏ธโฃ Open the Actor on Apify and click Try for free.
2๏ธโฃ Choose a Region (or "All countries").
3๏ธโฃ Pick a Query Type: Keyword, Advertiser Name, or Direct TikTok URL.
4๏ธโฃ Type your keyword or advertiser name, or paste the Ads Library URL.
5๏ธโฃ Set the Maximum Number of Ads and tick Fetch Ad Details if you want targeting, reach by country and the advertiser profile.
6๏ธโฃ Click Start, then download your results as JSON, CSV, Excel or HTML, or connect them to your tools through the API.
๐ฐ Pricing
๐ธ How much does it cost to scrape TikTok ads?
TikTok Ads Library Scraper uses simple pay per result pricing: you only pay for the ads you get, and platform usage costs are included.
| Event | Price |
|---|---|
| ๐ฆ Per 1,000 ads | $1.50 |
| โถ๏ธ Per run start | $0.025 |
๐ Ad details at no extra cost: turning on Fetch Ad Details (targeting, reach by country, advertiser profile) does not change the price per ad.
๐ฅ Media download (optional): off by default. When you turn on Download media files, each video or image saved in the run's storage is charged as a separate Ad media saved event, shown in the Pricing tab. A video ad usually has two files, the video and its cover image. Files that cannot be downloaded or that are larger than 30 MB are not charged.
๐ Volume discounts are applied automatically depending on your Apify plan:
| Plan discount | Price per 1,000 ads |
|---|---|
| No discount | $1.50 |
| Bronze | $1.40 |
| Silver | $1.20 |
| Gold | $1.00 |
๐งฎ Examples
| Ads scraped | Total cost (no discount) |
|---|---|
| 100 ads | ~$0.18 |
| 500 ads | ~$0.78 |
| 1,000 ads | ~$1.53 |
| 10,000 ads | ~$15.03 |
Apify gives every account free monthly credits, so you can try the scraper on your own searches before paying anything.
โ๏ธ Input
The input form is simple, and nothing about proxies or IPs is needed.
๐งฉ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| region | string | "FR" | Region code for the ads you want. Use "all" for every covered country |
| startDate | string | "2025-01-01" | Start date (YYYY-MM-DD). TikTok's library only goes back one year, earlier dates are adjusted automatically |
| endDate | string | "" | End date (YYYY-MM-DD). Leave empty for today |
| queryType | string | "2" | "1" for Keyword, "2" for Advertiser Name, "url" for a Direct TikTok URL |
| query | string | "" | Keyword, advertiser name or full Ads Library URL. Wrap a keyword in quotes for an exact match |
| advertiserBizId | string | "" | Optional advertiser business ID (Advertiser Name mode only). It appears in the TikTok URL as adv_biz_ids |
| maxAds | number | 20 | Maximum number of ads to scrape |
| fetchDetails | boolean | false | Fetch targeting, reach by country and advertiser profile. Turn it off for a faster, lighter run |
| downloadMedia | boolean | false | Save every video and image of each ad in the run's storage. Billed per file saved |
๐ข Input example: advertiser name and ID
{"region": "FR","startDate": "2026-01-01","endDate": "2026-05-25","queryType": "2","query": "LEVI STRAUSS & CO.","advertiserBizId": "6886458055832109825","maxAds": 10,"fetchDetails": true}
๐ Input example: keyword search
{"region": "GB","startDate": "2025-01-01","endDate": "2026-01-01","queryType": "1","query": "football","maxAds": 20,"fetchDetails": true}
๐ Input example: direct TikTok URL
{"queryType": "url","query": "https://library.tiktok.com/ads?region=FR&start_time=1777123937000&end_time=1779715937000&adv_name=LEVI%20STRAUSS%20%26%20CO.&adv_biz_ids=6886458055832109825&query_type=2&sort_type=last_shown_date,desc","maxAds": 10,"fetchDetails": true}
๐ฆ Output example
Each ad is saved as one item in the dataset. Here is a shortened real world example:
[{"AD ID": "1867625146670401","Advertiser Name": "COCA COLA HBCO","Ad Title": "Wygrywaj!","AD Preview": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/ogeDXpFKBIDvN8CAZcQgfBE5qTQpNiQBQaPYDB~tplv-tiktokx-origin.jpeg","Ad Dates": [{"FirstShown": "2026-06-12","FirstShownTimestamp": 1781222400},{"LastShown": "2026-06-14","LastShownTimestamp": 1781395200}],"Ad Audience": { "raw": "1M-10M", "min": 1000000, "max": 10000000 },"Ad Details": [{ "Estimated Audience": "1M-10M" },{ "Spent": "" },{ "Type": "2" },{ "Audit Status": "1" },{ "Impression": "" },{ "Sponsor": "MEDIACOM UK LIMITED" },{ "Target Audience Size": "11.7M-14.2M" },{ "Advertising Objective": "Reach" },{ "Call To Action": "Learn more" },{ "External URL": "https://cokeurl.com/KuM89D?utm_source=tiktok&utm_medium=paid" }],"Ad Media": ["Video 1: https://library.tiktok.com/api/v1/cdn/1782079373/video/...","Image 1: https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/ogeDXpFKBIDvN8CAZcQgfBE5qTQpNiQBQaPYDB~tplv-tiktokx-origin.jpeg"],"Ad Targeting": {"regions": ["PL"],"age": ["18-24", "25-34", "35-44", "45-54", "55+"],"gender": ["female", "male", "unknown"],"languages": [],"cities": [],"provinces": [],"operating_systems": ["ALL"],"device_models": [],"high_spending_power": "No","audience": "No","audience_exclude": "No","interest": "","video_interactions": "","creator_interactions": ""},"Ad Reach": {"total_region": 1,"total_impressions": { "raw": "1M-10M", "min": 1000000, "max": 10000000 },"by_country": [{"region": "PL","impressions": { "raw": "1.5M", "min": 1500000, "max": 1500000 },"breakdowns": [{ "age": "18-24", "gender": "MALE", "impressions": { "raw": "159K", "min": 159000, "max": 159000 } },{ "age": "18-24", "gender": "FEMALE", "impressions": { "raw": "252K", "min": 252000, "max": 252000 } },{ "age": "25-34", "gender": "MALE", "impressions": { "raw": "273K", "min": 273000, "max": 273000 } },{ "age": "25-34", "gender": "FEMALE", "impressions": { "raw": "352K", "min": 352000, "max": 352000 } },{ "age": "35-44", "gender": "MALE", "impressions": { "raw": "87K", "min": 87000, "max": 87000 } },{ "age": "35-44", "gender": "FEMALE", "impressions": { "raw": "122K", "min": 122000, "max": 122000 } },{ "age": "45-54", "gender": "MALE", "impressions": { "raw": "45K", "min": 45000, "max": 45000 } },{ "age": "45-54", "gender": "FEMALE", "impressions": { "raw": "72K", "min": 72000, "max": 72000 } },{ "age": "55-100", "gender": "MALE", "impressions": { "raw": "22K", "min": 22000, "max": 22000 } },{ "age": "55-100", "gender": "FEMALE", "impressions": { "raw": "44K", "min": 44000, "max": 44000 } }]}]},"Advertiser": {"name": "COCA COLA HBC POLSKA SP Z O O","adv_biz_ids": "6876461641299395330","registry_location": "United Kingdom","sponsor": "MEDIACOM UK LIMITED","tiktok_account": {"username": "cocacola","display_name": "Coca-Cola","follower_count": "4.2M","account_type": "BLUEV_BA","avatar_url": "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/952fe5a47bd6d42729cbc4918730e2b5~tplv-tiktokx-cropcenter:168:168.jpeg","profile_web_link": "https://www.tiktok.com/share/user/6808618235111736326?source=ad_review"}},"Ad Sponsor": "MEDIACOM UK LIMITED","Ad Target Audience Size": { "raw": "11.7M-14.2M", "min": 11700000, "max": 14200000 },"Ad Detail URL": "https://library.tiktok.com/ads/detail/?ad_id=1867625146670401"}]
๐ More in Ad Details, and the optional Ad Media Saved
Ad Details also holds the category TikTok gives the ad, the app store link for app promotion ads, and how long the ad has been running. A real example, shortened:
"Ad Details": [{ "Advertising Objective": "App promotion" },{ "Call To Action": "Go to Google Play" },{ "Subject": "Apps" },{ "App Store URL": "https://play.google.com/store/apps/details?id=com.example.app" },{ "App Store": "Google Play" },{ "Days Running": 14 }]
Days Running counts the first and the last day an ad was shown. App Store is Google Play, App Store or empty when the ad has no app link.
With Download media files on, each ad also gets an Ad Media Saved list:
"Ad Media Saved": [{"file": "Video 1","status": "saved","key": "1873789998570529_video_1.mp4","url": "https://api.apify.com/v2/key-value-stores/<store-id>/records/1873789998570529_video_1.mp4","sizeBytes": 449886,"contentType": "video/mp4"}]
status is saved, skipped (too large, or your spending limit was reached) or failed. Only saved files are charged. TikTok sometimes returns the same ad several times in a run: its files are saved and charged once, and the other rows point to the same files with "reused": true.
๐ก What can you do with TikTok ads data?
- ๐ Competitor research: see which creatives, offers and call to actions your competitors run on TikTok
- ๐ Campaign monitoring: schedule the scraper to track a brand's new ads every week
- ๐ Market analysis: compare reach and audience by country, age and gender
- ๐จ Creative inspiration: collect videos and images for a given keyword or industry
- ๐งพ Reporting: push the data to Google Sheets, a database or a dashboard through the Apify API and integrations
๐ How to use TikTok Ads Library Scraper as an API
Every run can be started from code with the Apify API, and the ads come back as JSON.
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("data_xplorer/tiktok-ads-library-fast").call(run_input={"region": "FR","queryType": "1","query": "Netflix","maxAds": 50,"fetchDetails": True,})for ad in client.dataset(run["defaultDatasetId"]).iterate_items():print(ad["AD ID"], ad["Advertiser Name"], ad["Ad Detail URL"])
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('data_xplorer/tiktok-ads-library-fast').call({region: 'FR',queryType: '1',query: 'Netflix',maxAds: 50,fetchDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL (one request that starts the run and returns the ads):
curl -X POST "https://api.apify.com/v2/acts/data_xplorer~tiktok-ads-library-fast/run-sync-get-dataset-items" \-H "Authorization: Bearer <YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"region":"FR","queryType":"1","query":"Netflix","maxAds":20}'
๐ค Use TikTok Ads Library Scraper with AI agents (MCP)
AI assistants such as Claude, Cursor or VS Code can call this Actor as a tool through the Apify MCP server. The agent picks the region, the keyword or the advertiser, the Actor returns the ads as JSON, and the agent answers with real data from the TikTok Ads Library.
Use this server URL to give your agent this Actor only:
https://mcp.apify.com?tools=data_xplorer/tiktok-ads-library-fast
Claude Code:
$claude mcp add --transport http tiktok-ads-library "https://mcp.apify.com?tools=data_xplorer/tiktok-ads-library-fast"
Cursor, VS Code and other MCP clients (MCP config file):
{"mcpServers": {"tiktok-ads-library": {"url": "https://mcp.apify.com?tools=data_xplorer/tiktok-ads-library-fast"}}}
In Claude Desktop, add a custom connector with the same URL. You sign in to your Apify account the first time the tool is used.
Example prompts for ad research agents
- "Show me the TikTok ads Netflix ran in France this year, with the reach by country."
- "Find TikTok ads for the keyword protein powder in Germany and summarise the main offers and calls to action."
- "Which age groups saw the most impressions on LEVI STRAUSS & CO. ads in the United Kingdom?"
Tips for agents
queryTypeis"1"for a keyword and"2"for an advertiser name. Advertiser names must match the name shown in the TikTok Ads Library.- Keep
maxAdslow (20 to 50) so the answer fits in the agent's context. - Turn on
fetchDetailsonly when the question is about targeting, reach or the advertiser profile. - Leave
endDateempty to search up to today.
๐ก How to monitor a competitor's TikTok ads
- Find the advertiser in the TikTok Ads Library and copy its exact name. For the most precise match, also copy the
adv_biz_idsvalue from the URL. - Run the scraper with Query Type set to Advertiser Name, paste the name (and the Advertiser ID), and tick Fetch Ad Details.
- Leave End Date empty, so every run searches up to the current day.
- Save the configuration as a task and add a schedule, for example every Monday.
- Compare the runs: an
AD IDyou have not seen before is a new ad, andAd Datestells you when each ad was first and last shown.
๐งฉ Integrations
TikTok Ads Library Scraper runs on the Apify platform, so you can connect it to the rest of your stack without code:
- Make, Zapier and n8n: start a search from a workflow and send new ads to Slack, email, Airtable or a CRM. See Apify integrations.
- Google Sheets: export each run to a spreadsheet to build an ad swipe file or a weekly report.
- Schedules: run the same search every day or every week with Apify schedules.
- Webhooks: get notified when a run finishes and process the ads in your own app. See webhooks.
โ FAQ
โ๏ธ Is it legal to scrape the TikTok Ads Library?
The TikTok Ads Library is a public transparency tool, and this scraper only collects information that anyone can see there. It does not log in and does not access private data. You are still responsible for how you use the data, so check the rules that apply to you, including GDPR if you handle personal data. This is general information and not legal advice.
๐ Do I need a TikTok account?
No. There is no login, no cookies and no API key to set up.
๐งฐ Is there an official TikTok Ads Library API?
TikTok has a Commercial Content API, but you have to apply and be approved by TikTok to use it. This Actor needs no approval: it reads the public TikTok Ads Library and returns the same ads as structured data, through the Apify API.
๐ Which countries are covered?
The 33 countries of the TikTok Ads Library: the EU and EEA countries, Switzerland, Turkey and the United Kingdom. Choose one country, or "All countries" to search them all in one run. Ads shown only outside these countries are not in TikTok's library, so they cannot be scraped.
๐ฌ Can I download the ad videos and images?
By default the scraper returns the link of every video and image in Ad Media, plus the preview image in AD Preview. To get the files themselves, turn on Download media files: each video and image is saved in the run's storage and listed in Ad Media Saved with a link. Each file saved is billed as a separate Ad media saved event (see the Pricing tab), and files larger than 30 MB are skipped. The links returned by TikTok expire, so the files are downloaded during the run.
๐ How far back can I search?
TikTok's Ads Library only keeps about one year of history. If you enter an earlier start date, the scraper adjusts it automatically.
๐ Why does the same ad ID sometimes appear more than once?
TikTok serves its results this way: the same ad can come back in a later page with different impression figures. We return the rows exactly as TikTok serves them, so you can decide how to group them. A quick deduplication on AD ID in your spreadsheet or code does the job.
๐ณ๏ธ Why do some rows have empty detail fields?
Some ads are shown as unavailable by TikTok, which means no details can be fetched for them. The run summary tells you how many rows are in this case. All other ads are retried until their details come through.
๐ Which settings give the best results?
- ๐ฏ Use Advertiser Name mode with the exact advertiser name, and add the Advertiser ID for the most precise results
- ๐ฌ Wrap a keyword in quotes for an exact match
- โก Turn Fetch Ad Details off if you only need the ad list, the run will be faster
- ๐ Paste an Ads Library URL if you already built your search in the TikTok interface
๐ Can I use the scraper through the API?
Yes. See the API section above for Python, Node.js and cURL examples. Like every Actor on Apify, you can start it, schedule it and read its results through the Apify API.
๐ Other scrapers you may like
- TikTok Ads Scraper: TikTok ads in two modes, including the Ads Library with targeting data
- TikTok Trends: trending hashtags, viral videos and top creators from TikTok
- Facebook Ads Library: ads, creatives, videos, calls to action and links from the Facebook Ad Library
- Linkedin Ads Library Scraper: advertisers, campaigns and creatives from the LinkedIn Ad Library
- Google Trends Scraper: daily trending searches by country and keyword interest over time
- Google Flights Scraper: flight prices, schedules and booking links from Google Flights
๐ Support
Need help or a missing feature? Open an issue from the Issues tab of this Actor and we will get back to you. If you need a custom solution built on top of this scraper, get in touch as well.
โญ Enjoying the scraper? Please leave a review here, it really helps.