TikTok Ad Library Scraper
Search and inspect ads exposed by TikTok's official logged-out Creative Center, with source-linked media, engagement, objectives, destinations, and performance fields.
Workspace
Configure
Inputs stay here while results become exportable artifacts.
Start from an example
Results
Preview, inspect, copy, or export the complete output.
Your result will become an artifact
Run the tool to inspect structured rows, raw JSON, execution details, and downloadable JSON, CSV, and Markdown files.
Overview
TikTok Ad Library Scraper reads TikTok's official Creative Center as a logged-out visitor. It captures the public data calls made by the rendered page and normalizes each result without TikTok credentials, private accounts, or synthetic records.
Last validated: Jul 15, 2026
Input
mode"search" | "ad"requiredSearch the public top-ads feed or inspect one ad.
pageintegerdefault: 1Requested public results page.
ad_idstringTikTok Creative Center material ID for ad mode.
querystringOptional case-insensitive filter applied to visible title and brand fields on the returned public page.
period"7" | "30" | "180"default: "30"Creative Center lookback period in days.
regionstringdefault: "US"Two-letter market code for search mode.
max_resultsintegerdefault: 10Maximum normalized ads to return.
Output
adobjectResolved individual public ad.
ad.ctrnumberad.urlstringad.costnumberad.ad_idstringad.titlestringad.sourcestringad.video_idstringad.video_urlstringad.brand_namestringad.like_countnumberad.share_countnumberad.video_widthnumberad.industry_keystringad.landing_pagestringad.video_heightnumberad.comment_countnumberad.countries_csvstringad.objective_keystringad.video_cover_urlstringad.video_duration_secondsnumberadsobject[]requiredNormalized public Creative Center ads.
modestringrequiredResolved operation.
pageintegerPage number TikTok reports.
countintegerrequiredNumber of normalized ads returned.
has_morebooleanWhether TikTok reports another page.
source_urlstringrequiredOfficial Creative Center page fetched by Better Fetch.
total_countintegerTotal results TikTok reports for the selected public feed.
api_source_urlstringrequiredPublic TikTok data request captured from that page.
query_applied_locallybooleanTrue when query filtered the current public page locally.
Examples
search-top-ads
{
"mode": "search",
"period": "30",
"region": "AU",
"max_results": 5
}ad-details
{
"mode": "ad",
"ad_id": "7644503475464159239"
}Use cases
FAQ
Does this require TikTok login?
No. It reads the data TikTok's official Creative Center exposes to logged-out visitors.
Is this every TikTok ad?
No. Coverage is limited to ads TikTok publishes in Creative Center and varies by market and period.
How does keyword filtering work?
The optional query filters the current public result page by visible ad title and brand. The response marks query_applied_locally so this bounded behavior is explicit.
Use it anywhere
MCP (Claude, ChatGPT, Codex)
# After connecting https://betterfetch.co/api/mcp, ask your AI to:
1. Call search_tools for "TikTok Ad Library Scraper"
2. Call run_tool with:
name: "tiktok_ad_library_scraper"
input: {"mode":"search","period":"30","region":"AU","max_results":5}REST
curl -sS -X POST "https://betterfetch.co/api/tools/tiktok_ad_library_scraper/run" \
-H "Authorization: Bearer bf_your_key_here" \
-H "Content-Type: application/json" \
-d '{"input": {"mode":"search","period":"30","region":"AU","max_results":5}}'Run locally
git clone https://github.com/better-fetch/tools/tree/main/tools/tiktok-ad-library-scraper && cd tiktok-ad-library-scraper && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"mode":"search","period":"30","region":"AU","max_results":5}'