
One call returns up to 20 trending TikTok ads filtered by country, language, and period. Each item is an ad with brand name, video details, and performance metrics like CTR and likes. The answer shows 20 items per page; get the next page by incrementing the `page` parameter.
2 live routes on TikTok, from $0.00002 per call. Every route below answered our last live test on 2026-10-06; the gateway re-tests them daily.
The upstream price you are metered at, cheapest first. A route without a published price says so.
| Provider | Endpoint | Price |
|---|---|---|
tiktok-scraper7RapidAPI listing | Get Top AdsCHEAPESTGET ads/top/ads | $0.00002$0.02 / 1k calls |
tiktok-api23RapidAPI listing | Get Top AdsGET api/trending/ads | $0.00005$0.05 / 1k calls |
From a real call to the cheapest route: tiktok-scraper7.
data.materials[].idAd IDdata.materials[].brand_nameBrand running the addata.materials[].ad_titleAd text/captiondata.materials[].video_info.coverAd thumbnail URLdata.materials[].video_info.video_urlAd video URLs by resolutiondata.materials[].ctrClick-through ratedata.materials[].likeLike countdata.materials[].costEstimated costdata.pagination.pageCurrent page numberdata.pagination.has_moreWhether more pages existHTTP with your key in x-api-key, or the call_endpoint tool of our MCP server.
| Parameter | Type | Notes | |
|---|---|---|---|
| limit | number · query | optional | default 20 |
| industry | string · query | optional | Comma-separated (e.g. 28000000000,24000000000) Industry Codes : [Click](https://tikwmapi.com/docs/json/top_ads_industry.json) |
| objective | string · query | optional | Comma-separated (e.g. 1,2) 1: Traffic 2: App installs 3: Conversions 4: Video views 5: Reach 8: Lead generation 15: Product sales |
| ad_language | string · query | optional | Comma-separated (e.g. en,vi) 'en', 'es', 'ar', 'vi', 'th', 'de', 'id', 'pt', 'fr', 'ms', 'nl', 'ja', 'it', 'ro', 'zh-Hant', 'ko' · default en,de |
| ad_format | string · query | optional | 1: Spark Ads 2: Non-spark Ads · default 1 |
| keyword | string · query | optional | search keyword |
| period | string · query | optional | 7: Last 7 days 30: Last 30 days 180: Last 180 days · default 30 |
| country_code | string · query | optional | Comma-separated (e.g. US,CA) 'DZ', 'AR', 'AU', 'AT', 'AZ', 'BH', 'BD', 'BY', 'BE', 'BO', 'BR', 'BG', 'KH', 'CA', 'CL', 'CO', 'CR', 'HR', 'CY', 'CZ', 'DK', 'DO', 'EC', 'EG', 'EE', 'FI', 'FR', 'DE', 'GR', 'GT', 'JO', 'HU', 'ID', 'IQ', 'IE', 'IL', 'IT', 'JP', 'KZ', 'KE', 'KW', 'LV', 'LB', 'MY', 'MX', 'MA', 'NL', 'NZ', 'NG', 'NO', 'OM', 'PK', 'PA', 'PY', 'PE', 'PH', 'PL', 'PT', 'PR', 'QA', 'LT', 'RO', 'SA', 'RS', 'SG', 'SK', 'SI', 'ZA', 'KR', 'ES', 'LK', 'SE', 'CH', 'TW', 'TH', 'TR', 'AE', 'GB', 'US', 'UY', 'VN' · default US,DE |
| order_by | string · query | optional | impression: Reach ctr: CTR like: Like cvr: CRV play_6s_rate: 6s view rate play_2s_rate: 2s view rate · default impression |
| like | string · query | optional | 1: Top 1~20% 2: Top 21~40% 3: Top 41~60% 4: Top 61~80% 5: Top 81~100% |
| page | number · query | required | default 1 |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-scraper7/ads/top/ads?page=1&limit=20&period=30&order_by=impression&ad_format=1&ad_language=en,de&country_code=US,DE" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-scraper7.get_top_ads", {"page": "1", "limit": "20", "period": "30", "order_by": "impression", "ad_format": "1", "ad_language": "en,de", "country_code": "US,DE"}){
"msg": "success",
"code": 0,
"data": {
"materials": [
{
"id": "7673308566858088449",
"ctr": 0.36,
"cost": 2,
"like": 54954,
"ad_title": "🌙 Woke up like this at 56. No injectables, just one jar. The new @lorealparis Triple Power Rich Night Moisturizer takes the night shift so I don't have to do te…",
"favorite": false,
"is_search": true,
"brand_name": "l'oreal paris",
"video_info": {
"vid": "v12044gd0000d9uh1p7og65vbai0osr0",
"cover": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-37c799-sg/o0XxfADf2EhHRFjQUWckDCkIAIK9CqEI1jfREM~tplv-noop.image?dr=18692&refresh_token=744ebae7&x-expires=179…",
"width": 720,
"height": 1280,
"duration": 43.234,
"video_url": {
"720p": "https://v16m-default.tiktokcdn.com/fbd9b48126309bf4502a7bcf652b261d/6ac1b1cf/video/tos/alisg/tos-alisg-ve-37c799-sg/owWUj0DQHAZfQjuiAIF2fEkDkfqcMSREHICh9E/?a=0&…"
}
},
"industry_key": "label_14109000000",
"objective_key": "campaign_objective_video_view"
},
{
"id": "7680863927458562066",
"ctr": 0.45,
"cost": 2,
"like": 4246,
"ad_title": "It’s still summer: 30% off",
"favorite": false,
"is_search": true,
"brand_name": "hesperia",
"video_info": {
"vid": "v14033g50000dabunhnog65necegk2b0",
"cover": "https://p16-common-sign.tiktokcdn.com/tos-useast2a-p-0051c799-euttp/ogFv8JuVLAVUDEGCEujeeb6CoaXfQdoaG5sAID~tplv-noop.image?dr=18692&refresh_token=8431a810&x-exp…",
"width": 720,
"height": 1280,
"duration": 15.019,
"video_url": {
"360p": "https://v16m-default.tiktokcdn.com/75879733eb46d4fba5f2ec98247cb1dc/6ac1b1b3/video/tos/useast2a/tos-useast2a-ve-0051c799-euttp/oMVvbeyGVQgDGJDq0CLFHskEIIDgyeA1h…",
"480p": "https://v16m-default.tiktokcdn.com/6e0426e91c649dc0d5ee873b87770649/6ac1b1b3/video/tos/useast2a/tos-useast2a-ve-0051c799-euttp/okHvyIAIEhDALgeFeMCikV0kqEyDbGgrQ…",
"540p": "https://v16m-default.tiktokcdn.com/38049f40aa3a113f9aceda8dfb5b1c7a/6ac1b1b3/video/tos/useast2a/tos-useast2a-ve-0051c799-euttp/oIqXNf5DqIQDDIB16BliUWSiEEBQZCAaQ…",
"720p": "https://v16m-default.tiktokcdn.com/5d57f2ce84a64120d5470251534cbd0c/6ac1b1b3/video/tos/useast2a/tos-useast2a-ve-0051c799-euttp/ooCebuMpLy98JifjfKnIgCDQAJrWAGVVD…",
"1080p": "https://v16m-default.tiktokcdn.com/312e2cfd68cd68cd089e639e6b439c1d/6ac1b1b3/video/tos/useast2a/tos-useast2a-ve-0051c799-euttp/ocDDamilqIBUQ1QAS52gfRiZqXEcNmEBQ…"
}
},
"industry_key": "label_17103000000",
"objective_key": "campaign_objective_conversion"
},
"… 2 more"
],
"pagination": {
"page": 1,
"size": 20,
"has_more": true,
"total_count": 152
}
},
"processed_time": 0.4052
}| Parameter | Type | Notes | |
|---|---|---|---|
| keyword | string · query | optional | Search ads keyword |
| ad_format | string · query | optional | - `1`: spark ads - `2`: non-spark ads |
| order_by | string · query | optional | - `impression` (reach) - `ctr` (CTR) - `like` (like) - `cvr` (CVR) - `play_6s_rate` (6s view rate) - `play_2s_rate` (2s view rate) · default ctr |
| period | number · query | optional | Enum: `7` | `30` | `180` · default 7 |
| like | string · query | optional | - `1`: Top 1~20% - `2`: Top 21~40% - `3`: Top 41~60% - `4`: Top 61~80% - `5`: Top 81~100% |
| limit | number · query | optional | Max = `20` · default 20 |
| objective | string · query | optional | - `1`: Traffic - `2`: App installs - `3`: Conversions - `4`: Video views - `5`: Reach - `6`: Lead generation - `7`: Product sales |
| country | string · query | optional | Country code. Head [here](https://gist.githubusercontent.com/apiboxguru/21d1cff1bef7732d9533389cb540541f/raw/6669d1e0025b67e8c7a0a1649cd8c75c5d5d2803/tiktok_trending_support_countries_with_codes.json) for a full list of supported countries · default US |
| ad_language | string · query | optional | Ads language. Supported language: `en` | `es` | `ar` | `vi` | `th` | `de` | `id` | `pt` | `fr` | `ms` | `nl` | `ja` | `it` | `ro` | `zh-Hant` | `ko`. You can use one or more languages: For example: `en, es` |
| industry | string · query | optional | Head to [here](https://gist.githubusercontent.com/apiboxguru/d36908ea2bbe307e81bcc09ccf59616b/raw/302b5a442df9a6efced1dc430fd64d10a8226aeb/tiktok-ads-industry-code.json) for a full list of Industry code. You can combine multiple industries by using a comma. For example: `22102000000,22101000000` |
| page | number · query | optional | default 1 |
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/trending/ads?page=1&limit=20&period=7&country=US&order_by=ctr" \ -H "x-api-key: YOUR_KEY"
call_endpoint("rapidapi-tiktok-api23.get_top_ads", {"page": "1", "limit": "20", "period": "7", "country": "US", "order_by": "ctr"})Call it over HTTP or from any MCP client. Each key has a rate limit and a monthly cap; calls are metered at the upstream price.