SocialToAIStart freeConsole
POST/v1/call/tiktok.top_ad_searchPreview

TikTok Creative Center Top Ads search API

Only on TikTok.

The TikTok Creative Center Top Ads search API searches the Top Ads of TikTok's Creative Center by keyword. One call costs 2 credits ($0.004 to $0.0067 depending on the pack); failed calls are free. Call it over HTTP or from your AI client over MCP. Last tested 2026-10-17.

100 credits on sign-up, no card needed
2 creditsper call
Up to 20 per pageone page per call
2026-10-17last tested
1.0 KBsample response, 1 item

Last updated:

Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Request and response

curl https://api.socialtoai.com/v1/call/tiktok.top_ad_search \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Content-Type: application/json" \  -d '{    "query": "sneakers"  }'
import osimport requestsresponse = requests.post(    "https://api.socialtoai.com/v1/call/tiktok.top_ad_search",    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},    json={        "query": "sneakers",    },)print(response.json())
# Connected over MCP? Ask in plain words.Use the TikTok Creative Center Top Ads search interface (tiktok.top_ad_search) with query: sneakers.# Your AI calls the call tool with:{  "query": "sneakers"}
Change the requestThe code above follows.
window
sort
Sign in to run2 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK1.0 KB2 credits
{  "op": "tiktok.top_ad_search",  "platform": "tiktok",  "status": "ok",  "items": [    {      "platform": "tiktok",      "id": "…",      "ref": "…",      "approx": [],      "type": "entry",      "entry_type": "ad",      "title": null,      "url": "https://example.com/…",      "rank": null,      "heat": null,      "fields": {        "format": "video",        "text": "…",        "landing_url": null,        "advertiser": {          "id": null,          "name": null,          "url": null        },        "images": null,        "first_shown_at": null,        "last_shown_at": null      }    }  ],  "unavailable": ["title", "fields.landing_url", "fields.images", "fields.first_shown_at", "fields.last_shown_at", "fields.advertiser.id", "fields.advertiser.url"],  "page": {    "has_more": true,    "cursor": "cur_…",    "cursor_expires_at": "2026-10-12T22:49:55.000Z"  },  "cost_credits": 2}
entry_type
ad
format
video
text
…
landing_url
null
images
null
first_shown_at
null
last_shown_at
null

Names and text were removed from the sample; the numbers are as recorded.

Sample data1 of the 20 items recorded

5 parameters.
1 required.

Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.

NameTypeRequiredDefaultDescription
querystringRequired—Search terms
regionstringOptional—Which country's or region's Top Ads, by its two-letter code; the United States when left out
windowstringOptional"180d"Performance over this recent period
"7d""30d""180d"
sortstringOptional"relevance"In the Creative Center's own recommended order, or by likes, highest first
"relevance""popular"
cursorstringOptional—Pass page.cursor from the last response to get the next page.

The fields of each item.
What TikTok cannot give is marked.

FieldTypeMeaning
items[].titlestringalways nullThe entry's title or name.
items[].urlstringA link that opens it; null where the platform's list has none.
items[].rankintegerPosition on a board, from 1.
items[].heatintegerThe platform's heat score.
items[].fields.formatstringThe ad's format: text, image or video. other is a format of the platform's own.
items[].fields.textstringThe ad's body text.
items[].fields.landing_urlstringalways nullWhere a click on the ad leads.
items[].fields.advertiser.idstringalways nullAdvertiser ID.
items[].fields.advertiser.namestringAdvertiser's name.
items[].fields.advertiser.urlstringalways nullThe advertiser's page on the platform.
items[].fields.imagesstring[]always nullAddresses of the ad's images.
items[].fields.first_shown_atstringalways nullWhen the ad was first shown.
items[].fields.last_shown_atstringalways nullWhen the ad was last shown. For an ad still running, when the platform last saw it.
nullFields TikTok cannot give

Read null as “TikTok did not give this”, not as zero. These are always null on this call:

  • titleThe entry's title or name.
  • fields.landing_urlWhere a click on the ad leads.
  • fields.advertiser.idAdvertiser ID.
  • fields.advertiser.urlThe advertiser's page on the platform.
  • fields.imagesAddresses of the ad's images.
  • fields.first_shown_atWhen the ad was first shown.
  • fields.last_shown_atWhen the ad was last shown. For an ad still running, when the platform last saw it.

Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format

What to expect.

One call returns a page of up to 20 items. When page.has_more is true, send page.cursor back as cursor for the next page; each page costs 2 credits and a cursor works for 30 minutes.
A call that runs and finds nothing is a successful call: status is "empty", items is empty, and it costs 2 credits.

1 call per second per key, 5 after a purchase; going over is not charged. Rate limits

A failed call costs 0 credits and is never retried on its own. Error codes

Once connected over MCP, these questions use it.

  1. Search the Top Ads of TikTok's Creative Center by keyword: sneakers.
    call {"op":"tiktok.top_ad_search","query":"sneakers"}
    2 credits
  2. Search the Top Ads of TikTok's Creative Center by keyword: sneakers, with window set to 7d.
    call {"op":"tiktok.top_ad_search","query":"sneakers","window":"7d"}
    2 credits

Questions.
Short answers.

Everything on TikTok
Do I need a TikTok account or TikTok's own API access?
No. You only need a SocialToAI key. The call returns content and account information publicly visible on TikTok; you never sign in to TikTok or apply for anything there.
What does “Preview” mean here?
Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Your AI is one URL away
from all of social media.

100 credits on sign-up, no card needed