TikTok Ad Library API
Search and pull the ads brands are actually running on TikTok — titles, creative, CTR, engagement, objective, industry and the video — by keyword, industry or country, as structured JSON. No approved API application, one REST call.
50 free credits on signup. No card, no API application.
{ "data": { "ads": [ { "ad_id": "7626040181904211989", "title": "ABAYA Sport Moderne: Elegance Redefined", "brand": "moderne × nike", "industry_key": "label_22110000000", "objective_key": "campaign_objective_conversion", "objective": "conversion", "ctr": 0.52, "likes": 212, "favorites": false, "is_search": false, "video": { "id": "v10033g50000d7ai7d7og65tgqn6q3s0", "duration": 10.242, "cover": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oMYUPDhIA7NiDjU9zIXtdIa4igstVqASBE5AA~tplv-noop.image" } }, { "ad_id": "7167018870405103618", "title": "Come shop our best-selling hits—Clearance Sale!", "brand": "Nike", "industry_key": "label_30101000000", "objective_key": "campaign_objective_conversion", "objective": "conversion", "ctr": 0.28, "likes": 62703, "favorites": false, "is_search": false, "video": { "id": "v10033g50000d7uqkufog65tgqjlhkdg", "duration": 41.867, "cover": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oAIzlbCTdf9qpFxS72fDnABGgoDfA5DG6QIUEa~tplv-noop.image" } } ], "pagination": { "has_more": true, "page": 1, "size": 5, "total_count": 300 } }, "response_time": 1434, "credits_used": 1, "credits_remaining": 4573}A real captured response from this endpoint. Sign up to run your own.
What is the Scavio TikTok Ad Library API?
The Scavio TikTok Ad Library API is a REST API that returns the ads brands are running on TikTok as structured JSON. You send a keyword, an industry or a country to one of 3 POST endpoints with your API key, and get back matching ads with their title, brand, CTR, likes, objective, industry and the video.
- 3
- endpoints, all live in production
- 1
- credit per call, every endpoint
- 0
- API applications to fill out
Three endpoints, three ways in
Search by keyword, pull the top ads, or open one ad in full.
Ad search
POST /api/v1/tiktok/ads/searchSearch the ads brands are running on TikTok by keyword, industry or country and get every match with its title, brand, CTR, likes, objective and video cover.
Top ads
POST /api/v1/tiktok/ads/topThe top-performing spotlight ads for an industry and country, each with a plain-language creative highlight explaining why it worked — a ready-made swipe file.
Ad detail
POST /api/v1/tiktok/ads/detailOne ad in full by its ad_id: the advertiser, every country it ran in, the landing page it points to and a directly playable video url.
All 3 TikTok Ad Library endpoints
Every route is a POST, returns JSON, and takes the same API key. All three cost 1 credit.
| Endpoint | Returns | Credits |
|---|---|---|
Ad search/api/v1/tiktok/ads/search | Ads by keyword, industry or country — title, brand, CTR, likes, objective and cover | 1 |
Top ads/api/v1/tiktok/ads/top | Top / spotlight ads for an industry and country, each with a creative highlight | 1 |
Ad detail/api/v1/tiktok/ads/detail | One ad in full by ad_id — advertiser, countries, landing page and playable video url | 1 |
50 free credits on signup covers 50 calls of any kind. See plans
A keyword to a brand's whole ad shelf
Search by keyword, country and lookback window, then open any ad in full. The response on the right is a real capture, field names and all.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Search the ads brands are running on TikTok - 1 credit
res = client.tiktok.ads_search(keyword="nike", country="US", period=180)
for ad in res["data"]["ads"]:
print(ad["ad_id"], ad["brand"], ad["ctr"], ad["likes"])
# Open one ad in full - advertiser, countries, landing page, playable video
detail = client.tiktok.ads_detail(ad_id="7361015644840312839"){
"data": {
"ads": [
{
"ad_id": "7626040181904211989",
"title": "ABAYA Sport Moderne: Elegance Redefined",
"brand": "moderne × nike",
"industry_key": "label_22110000000",
"objective_key": "campaign_objective_conversion",
"objective": "conversion",
"ctr": 0.52,
"likes": 212,
"favorites": false,
"is_search": false,
"video": {
"id": "v10033g50000d7ai7d7og65tgqn6q3s0",
"duration": 10.242,
"cover": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oMYUPDhIA7NiDjU9zIXtdIa4igstVqASBE5AA~tplv-noop.image"
}
},
{
"ad_id": "7167018870405103618",
"title": "Come shop our best-selling hits—Clearance Sale!",
"brand": "Nike",
"industry_key": "label_30101000000",
"objective_key": "campaign_objective_conversion",
"objective": "conversion",
"ctr": 0.28,
"likes": 62703,
"favorites": false,
"is_search": false,
"video": {
"id": "v10033g50000d7uqkufog65tgqjlhkdg",
"duration": 41.867,
"cover": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oAIzlbCTdf9qpFxS72fDnABGgoDfA5DG6QIUEa~tplv-noop.image"
}
}
],
"pagination": {
"has_more": true,
"page": 1,
"size": 5,
"total_count": 300
}
},
"response_time": 1434,
"credits_used": 1,
"credits_remaining": 4573
}Why not TikTok's official ad API?
TikTok publishes a Commercial Content Library, but for most people it is narrower and slower to reach than they expect.
TikTok Commercial Content Library API
- Covers only ads shown to users in the European Union
- Requires an approved API application before any access
- Review-gated onboarding, and access can be revoked
- Built for research disclosure, not fast creative pulls
Scavio TikTok Ad Library API
- One API key, issued at signup — no application, no review queue
- Ads worldwide, filterable by keyword, industry or country
- CTR, likes and objective on every ad, plus a playable video url
- Same key and JSON envelope as 30 other Scavio platforms
Scavio returns TikTok's public advertising data and never authenticates as a TikTok user.
What developers build with it
Competitor creative research
Search a brand or category and pull the ads actually in market — the title, the objective, the CTR and the video cover — then diff it week over week to see what a competitor is testing and what they killed.
ads/searchBuilding a swipe file that ranks
Top ads come back with a plain-language highlight explaining the hook that worked. Collect them by industry to seed briefs your creative team can actually act on, not just admire.
ads/topAd-intelligence dashboards
Every ad carries CTR, likes and objective, so you can chart performance across an industry, rank creatives, and surface the outliers — all from structured JSON, no pipeline to maintain.
ads/search + ads/detailLanding-page and funnel teardowns
Ad detail returns the landing page an ad points to and every country it ran in, so you can map a competitor's funnel from creative to destination and see where they run it.
ads/detailAgent tools for ad research
Point an agent at the MCP server and TikTok ad research becomes a callable tool — what is this brand running, what's winning in this vertical — with one key across every Scavio platform.
MCP + RESTHow to get TikTok ad data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, no card required and no API application to submit.
- 2
Search by keyword, industry or country
POST {"keyword": "nike", "country": "US", "period": 180} to /api/v1/tiktok/ads/search with an Authorization: Bearer header. Provide a keyword or an industry; country and period are optional filters.
- 3
Mind the two filter shapes
period accepts only 7, 30 or 180 (days of lookback), and industry takes TikTok's numeric taxonomy code — the label_... value on every ad's industry_key — not free text. Search by keyword when you don't have the code.
- 4
Open the ads that matter
Take any ad_id from a search or top result and POST it to /api/v1/tiktok/ads/detail for the advertiser, the countries it ran in, the landing page and a directly playable video url.
TikTok Ad Library API FAQ
What is the Scavio TikTok Ad Library API?
+
It is a REST API that returns the ads brands are running on TikTok as structured JSON. Three POST endpoints cover ad search by keyword, industry or country; the top / spotlight ads for an industry; and a single ad in full by its ad_id. You authenticate with a Scavio API key.
Who is this for?
+
Performance marketers and agencies building creative swipe files, competitive-intelligence teams tracking what rivals run on TikTok, ad-tech developers building ad-intelligence products, and AI agent builders wiring TikTok ad research in as an MCP or SDK tool. Same API for all of them.
How is this different from TikTok's official Commercial Content Library API?
+
TikTok's official Commercial Content Library covers only ads shown to users in the European Union and requires an approved API application before you get any access. This returns TikTok's public advertising data worldwide, filterable by country, with one API key issued at signup and no application.
What does an ad record contain?
+
Each search result carries ad_id, title, brand, industry_key, objective_key, objective, ctr, likes, favorites, is_search and a video object with the clip's id, duration and cover image. Ad detail adds comments, shares, the countries it ran in, the landing_page, the source and a playable video url.
Can I get the actual video, not just a thumbnail?
+
Yes. Ad search and top ads return a video.cover image for every ad, and ad detail returns a video.url that plays the creative directly, alongside the cover. That is the endpoint to call when you need the ad itself rather than the list.
How do I filter by industry?
+
The industry filter takes TikTok's numeric taxonomy code — the label_... value you see on every ad's industry_key field, such as label_22110000000. It is not free text. If you don't have the code, search by keyword instead and read the industry_key off the results.
What lookback windows are supported?
+
The period parameter accepts 7, 30 or 180 — days of lookback — and defaults to 180. Those are the only three values; there is no arbitrary date range. Leave it off for the widest window.
How do search and top ads differ?
+
Ad search is query-driven: you pass a keyword and/or industry and page through matches with CTR, likes and objective on each. Top ads is a curated feed of the best-performing spotlight ads for an industry and country, and each one comes with a written highlight explaining the creative hook.
How much does a request cost?
+
Every TikTok Ad Library endpoint costs 1 credit — search, top and detail alike. New accounts get 50 free credits on signup, one time, with no card. Paid plans start at $30 per month for 7,000 credits, and the same credits work across every Scavio platform.
How do I paginate results?
+
Search responses include a pagination object with page, size, total_count and has_more. Increment page (1 to 100) and set limit (1 to 50) to walk the results, and stop when has_more is false.
Which languages and tools are supported?
+
Official Python (pip install scavio) and JavaScript/TypeScript (npm i scavio) SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node. Any language can call the REST endpoints directly with an HTTP client.
Is using this data allowed?
+
Scavio returns TikTok's public advertising data as structured JSON and never authenticates as a user. You remain responsible for how you use it, including compliance with TikTok's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
TikTok API
Profiles, videos, comments and hashtags.
TikTok Shop API
Products, shops and reviews as JSON.
Meta Ad Library API
Facebook and Instagram ads as JSON.
Google Ads Transparency API
Advertisers, ads and creative history.
MCP server
Every platform as a callable tool for agents.
Pricing
Credit packs and plans, no per-platform surcharge.
Start pulling TikTok ads today
50 free credits on signup, no card. Your first request is a POST with a keyword in it.