TikTok Ads Library FAST avatar

TikTok Ads Library FAST

Pricing

from $1.00 / 1,000 results

Go to Apify Store
TikTok Ads Library FAST

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

Data Xplorer

Maintained by Community

Actor stats

20

Bookmarked

562

Total users

131

Monthly active users

1.2 hours

Issues response

3 days ago

Last modified

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?

FieldDescription
AD IDUnique identifier for the ad
Advertiser NameName of the company or entity running the ad
Ad TitleTitle or headline of the ad creative
AD PreviewURL of the preview image
Ad DatesFirst and last shown dates with timestamps
Ad AudienceEstimated audience as { raw, min, max } (e.g. "1M-10M")
Ad DetailsEstimated 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 MediaURLs of all creative assets (videos, images, cover images)
Ad Media SavedOnly with Download media files: one entry per saved video or image, with a link to the file in the run's storage
Ad TargetingRegions, age groups, gender, languages, cities, provinces, operating systems, device models, high spending power, audience, interests and interaction signals
Ad ReachTotal regions, total impressions and, for each country, impressions plus a full age ร— gender breakdown
AdvertiserName, business IDs, registry location, sponsor and linked TikTok account (username, display name, followers, account type, profile link, avatar)
Ad SponsorSponsor information
Ad Target Audience SizeEstimated target audience as { raw, min, max }
Ad Detail URLDirect 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.

EventPrice
๐Ÿ“ฆ 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 discountPrice per 1,000 ads
No discount$1.50
Bronze$1.40
Silver$1.20
Gold$1.00

๐Ÿงฎ Examples

Ads scrapedTotal 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

ParameterTypeDefaultDescription
regionstring"FR"Region code for the ads you want. Use "all" for every covered country
startDatestring"2025-01-01"Start date (YYYY-MM-DD). TikTok's library only goes back one year, earlier dates are adjusted automatically
endDatestring""End date (YYYY-MM-DD). Leave empty for today
queryTypestring"2""1" for Keyword, "2" for Advertiser Name, "url" for a Direct TikTok URL
querystring""Keyword, advertiser name or full Ads Library URL. Wrap a keyword in quotes for an exact match
advertiserBizIdstring""Optional advertiser business ID (Advertiser Name mode only). It appears in the TikTok URL as adv_biz_ids
maxAdsnumber20Maximum number of ads to scrape
fetchDetailsbooleanfalseFetch targeting, reach by country and advertiser profile. Turn it off for a faster, lighter run
downloadMediabooleanfalseSave 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
}
{
"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 ApifyClient
client = 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

  • queryType is "1" for a keyword and "2" for an advertiser name. Advertiser names must match the name shown in the TikTok Ads Library.
  • Keep maxAds low (20 to 50) so the answer fits in the agent's context.
  • Turn on fetchDetails only when the question is about targeting, reach or the advertiser profile.
  • Leave endDate empty to search up to today.

๐Ÿ“ก How to monitor a competitor's TikTok ads

  1. Find the advertiser in the TikTok Ads Library and copy its exact name. For the most precise match, also copy the adv_biz_ids value from the URL.
  2. Run the scraper with Query Type set to Advertiser Name, paste the name (and the Advertiser ID), and tick Fetch Ad Details.
  3. Leave End Date empty, so every run searches up to the current day.
  4. Save the configuration as a task and add a schedule, for example every Monday.
  5. Compare the runs: an AD ID you have not seen before is a new ad, and Ad Dates tells 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

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.

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

๐Ÿ›Ÿ 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.