TikTok Ads Top API reference
Your first 10 calls are free, no card needed. Pricing and FAQ
Get a free API keycurl "https://api.insightsocial.app/v1/tiktok/ads/top" \ -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
Step-by-step: Ad library aggregation
Returns TikTok's Creative Center leaderboard of top-performing ads for a market and time window, each with click-through rate, board rank, like count, industry, objective, and the ad video.
Use it to find ad creative that actually performed. It is one window with no cursor, so set limit for depth and change country, period, or order_by for a different board.
Metered: 100–1000 credits. We reserve the ceiling when the call starts and charge what it actually used when it finishes.
Authorization
apiKey Your key from the dashboard. It starts with isk_.
In: header
Query Parameters
Creative Center market to read the board for. Defaults to US. This is the market the ads ran in, not the language they are in.
Value in
- "US"
- "CA"
- "MX"
- "BR"
- "GB"
- "DE"
- "FR"
- "IT"
- "ES"
- "NL"
- "PL"
- "SE"
- "TR"
- "SA"
- "AE"
- "AU"
- "JP"
- "KR"
- "ID"
- "TH"
- "VN"
- "MY"
- "PH"
- "SG"
Lookback window in days: 7, 30 or 180. Defaults to 30. A longer window is a different board, not more rows.
Value in
- "7"
- "30"
- "180"
How TikTok ranks the board: for_you (TikTok's own blend, the default), ctr, impression, like, cvr, play_2s_rate or play_6s_rate.
Value in
- "for_you"
- "impression"
- "ctr"
- "play_2s_rate"
- "play_6s_rate"
- "cvr"
- "like"
Restrict to Spark ads (ads boosted from an organic post) or Non-Spark ads. Defaults to all.
Value in
- "All ad types"
- "Spark ads"
- "Non-Spark ads"
Filter by the language of the ad copy.
Value in
- "en"
- "ja"
- "zh"
- "vi"
- "th"
- "pt"
- "id"
TikTok's engagement percentile band, 1 (top) to 5. Use it to read further down the ranking without raising limit.
Value in
- "1"
- "2"
- "3"
- "4"
- "5"
Creative Center sub-category label, for example 'Skincare' or 'Cosmetics'. Use a sub-category, not a top-level group: the board returns nothing for the broad groups such as 'Financial Services' or 'Education'. Omit for all industries.
Search the board by brand or product keyword.
How many ads to return, 1-100, default 20.
1 <= value <= 100Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following next_cursor, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.
Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.
Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.
Value in
- "1"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.insightsocial.app/v1/tiktok/ads/top"{ "success": true, "platform": "string", "endpoint": "string", "schema_version": "2", "pagination": { "next_cursor": "string", "has_more": true, "page_size": 0, "stopped_at": "since" }, "unavailable": [ "string" ], "credits_used": 0, "credits_remaining": 0, "request_id": "string", "cached": true, "idempotent_replay": true, "charge_reason": "string", "free_call": true, "data": { "items": [ { "post": { "id": "string", "url": "http://example.com", "kind": "string", "content": { "text": "string", "media_urls": [ "http://example.com" ], "thumbnail_url": "http://example.com", "duration_seconds": 0 }, "author": { "id": "string", "username": "string", "display_name": "string", "avatar_url": "http://example.com", "verified": true }, "engagement": { "views": 0, "likes": 0, "comments": 0, "shares": 0, "saves": 0 }, "flags": { "nsfw": true, "spoiler": true, "pinned": true, "deleted": true, "likes_hidden": true, "comments_hidden": true, "shares_hidden": true, "views_hidden": true, "saves_hidden": true }, "published_at": "2019-08-24T14:15:22Z", "language": "string", "ext": { "property1": null, "property2": null } } } ], "total": 0, "truncated": true, "ext": { "property1": null, "property2": null } }}Adlibrary › Search GET
Returns TikTok Ad Library ads matching a keyword or advertiser name, each with creative, title, advertiser, impressions and date; include=ad adds the brand, landing page and advertiser link.
Collection › Videos GET
Returns the public videos inside a TikTok collection, each with caption, play like comment share and save counts, author, and a playable URL.