How to run a TikTok Ad Library search
GET request to /v1/ad-library/tiktok/search with your input. You get clean JSON back in seconds for 2 credits per call — no OAuth, scraping or platform SDKs. Search TikTok Commercial Content Library — relevance-filtered, uniform null schema (2 credits).How to run a TikTok Ad Library search (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the TikTok Ad Library Search API
Send an authenticated GET request to /v1/ad-library/tiktok/search with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/ad-library/tiktok/search?q=nike" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"query": "nike",
"country": "GB",
"totalReturned": 3,
"ads": [
{
"platform": "tiktok_ad_library",
"id": "1872402620173314",
"url": "https://library.tiktok.com/ads/detail/?ad_id=1872402620173314",
"text": "Professional Massage Therapy for Relaxation, Recovery, and Wellness.",
"adFormat": "video",
"firstShown": "2026-08-02T00:00:00.000Z",
"lastShown": "2026-08-02T00:00:00.000Z",
"impressions": "0-1K",
"advertiser": {
"name": "HongKong AdTiger Media Co., Limited",
"location": "Hong Kong"
},
"media": [
"https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/3dff80d5a4f73a22d6682afa5f45d78d~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=cd5ba53f&x-expires=1785686400&x-signature=m6GakMpuep1d%2BRNlCGpC0K9CiWE%3D&t=4d5b0474&ps=13740610&a",
"https://library.tiktok.com/api/v1/cdn/1785667308/video/aHR0cHM6Ly92NzcudGlrdG9rY2RuLmNvbS9mMTgyNTU3Yzg1OGVjOGEwM2RkMGQ1MjRjZTRlOWM4Ny82YTZmNzM3ZS92aWRlby90b3MvYWxpc2cvdG9zLWFsaXNnLXZlLTAwNTFjMDAxLXNnL29zOU5VSkFzZ0lMUGVtT0RoRlVHZUdSQzNSb1JnbW5lQUFKTEdiLw==/fee44425-7600-4c48-8df9-ce242eb52069?a=475769&bt=593&btag=e00088000&bti=PDU2NmYwMy86&ft=.NpOcInz7Thz~INGXq8Zmo&l=2026080218414895FDAC2A6CF961573BDF&mime_type=video_mp4&rc=N2hoOzVpZzM1OTs0aDM5aUBpajVpOGw5cjRqPDMzODYzNEBjMmFeYy9fXzMxMS0zLTJjYSNxZy82MmRraWthLS1kMC1zcw%3D%3D&signature=v7cmUB0AYCwTjyukuWGzRGtiRJKMRb6UOyUo2szN2pY%3D&vvpl=1"
],
"impressionsRange": {
"min": 0,
"max": 1000,
"raw": "0-1K"
}
},
{
"platform": "tiktok_ad_library",
"id": "1872069030885697",
"url": "https://library.tiktok.com/ads/detail/?ad_id=1872069030885697",
"text": "Visit the website and learn more.",
"adFormat": "video",
"firstShown": "2026-08-02T00:00:00.000Z",
"lastShown": "2026-08-02T00:00:00.000Z",
"impressions": "0-1K",
"advertiser": {
"name": "VV7 HOLDING LLC",
"location": "United States"
},
"media": [
"https://p16-common-sign.tiktokcdn.com/ad-site-i18n-sg/20260729c7c7767b1bd4c6634305aba2~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=a7fcf310&x-expires=1785686400&x-signature=H8hajcaAaLOzUe4Qcbse8V10R%2Bs%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&s",
"https://library.tiktok.com/api/v1/cdn/1785667310/video/aHR0cHM6Ly92NzcudGlrdG9rY2RuLmNvbS9kOTEzMzQzYmVlZTBlODkyNDRhOTZjYmE0ZTdjYzk1OS82YTZmNzM2MC92aWRlby90b3MvYWxpc2cvdG9zLWFsaXNnLXZlLTAwNTFjMDAxLXNnL28wM3VvbDdZak5BRUFpSHcybXk5enB2aVVNY0JCWGFRQ3FOSUEv/a83a6b69-bc09-432a-a704-4cb96c22fbb2?a=475769&bt=997&btag=e000b8000&bti=PDU2NmYwMy86&ft=.NpOcInz7Thn~INGXq8Zmo&l=202608021841508CA9C9F51CA00456AC9F&mime_type=video_mp4&rc=Z2dpNWY5ZTdmM2k8ZzU2OEBpM3FvcnU5cmw2PDMzODYzNEBhMDUyLjFhXjQxMF5jXy1eYSNiY3MwMmRrLmlhLS1kMC1zcw%3D%3D&signature=c1LXfiH6SOrrYOTEWg4TRCzE%2BNR%2BSu0k%2Fuj%2FDEUJ3vk%3D&vvpl=1"
],
"impressionsRange": {
"min": 0,
"max": 1000,
"raw": "0-1K"
}
}
]
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| q | string | Yes | Keyword or advertiser to search TikTok Commercial Content Library (min 2 characters). |
| country | string | No | Two-letter ISO country code (e.g. GB, DE, FR). Default GB (EU DSA library; US often empty). |
| match | string | No | Keyword token mode: "any" (default, OR whole-word) or "all" (AND). hair ≠ wheelchair. Empty results are free. |
| limit | integer | No | Max items to return (default 20, max 200). Flat 2 credits per call. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits. |
Frequently asked questions
What does the TikTok Ad Library Search API do?
The TikTok Ad Library Search API lets you search and return matching results from a public TikTok Ad Library query using one GET request to /v1/ad-library/tiktok/search. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the TikTok Ad Library Search API cost?
Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a TikTok Ad Library API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Is this TikTok Creative Center (CTR / Top Ads)?
No. This endpoint searches TikTok's Commercial Content Library (library.tiktok.com — EU DSA transparency). For Creative Center Top Ads with CTR, likes, industry/objective, and orderBy, use GET /v1/ad-library/tiktok/top-ads.
Why is this only 2 credits when older docs said ~70?
Native Decodo search is flat 2 credits when ads are returned (empty is free). The old ~70 figure was Apify billed at ~3.5 credits per result (limit 20). Apify fallback is now capped at 5 credits total.
Why did my keyword return zero ads?
Read candidatesScanned, filteredOut, literalMatches. match=any (default) keeps rows with any whole-word token in advertiser/title/copy; match=all requires every token. TikTok's keyword ranking is soft — we never echo that unfiltered list. If candidatesScanned>0 and totalReturned=0, the library had rows and local filter dropped them (try an advertiser name token). US is often empty; default GB.
Is the TikTok Ad Library Search API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to run a TikTok Ad Library search?
Start free with 100 credits — no credit card required.
Get your free API key