SocialToAIStart freeConsole
POST/v1/call/tiktok.ad_detailPreview

TikTok Ads Library ad detail API

Only on TikTok.

The TikTok Ads Library ad detail API returns one ad of TikTok's public Ads Library by its ID or link: advertiser, headline, videos and images, landing page, when it was first and last shown, the countries it was shown in and the campaign's objective. 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
One objectreturned per call
2026-10-17last tested
949 Bsample 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.ad_detail \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Content-Type: application/json" \  -d '{    "id": "1871655924410641"  }'
import osimport requestsresponse = requests.post(    "https://api.socialtoai.com/v1/call/tiktok.ad_detail",    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},    json={        "id": "1871655924410641",    },)print(response.json())
# Connected over MCP? Ask in plain words.Use the TikTok Ads Library ad detail interface (tiktok.ad_detail) with id: 1871655924410641.# Your AI calls the call tool with:{  "id": "1871655924410641"}
Sign in to run2 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK949 B2 credits
{  "op": "tiktok.ad_detail",  "platform": "tiktok",  "status": "ok",  "items": [    {      "platform": "tiktok",      "id": "…",      "ref": "…",      "approx": [],      "type": "entry",      "entry_type": "ad",      "title": "…",      "url": "https://example.com/…",      "rank": null,      "heat": null,      "fields": {        "format": "video",        "text": null,        "landing_url": "https://example.com/…",        "advertiser": {          "id": "…",          "name": "…",          "url": null        },        "images": ["https://example.com/…"],        "first_shown_at": "2026-10-09T00:00:00.000Z",        "last_shown_at": "2026-10-11T00:00:00.000Z"      }    }  ],  "unavailable": ["fields.text", "fields.advertiser.url"],  "cost_credits": 2}
entry_type
ad
format
video
text
null
landing_url
https://example.com/…
first_shown_at
2026-10-09T00:00:00.000Z
last_shown_at
2026-10-11T00:00:00.000Z

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

Sample dataFull response

2 parameters.
0 required.

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

NameTypeRequiredDefaultDescription
idstringOne of these—The ad's ID, a string of digits
urlstringOne of these—The ad's link in the library, written library.tiktok.com/ads/detail/?ad_id= and the ID

Where to get what you send.

id

The ad's ID, a string of digits (e.g. 1871655924410641)

Every item these return carries its ref; send it as it is:

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

FieldTypeMeaning
items[].titlestringThe 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.textstringalways nullThe ad's body text.
items[].fields.landing_urlstringWhere a click on the ad leads.
items[].fields.advertiser.idstringAdvertiser ID.
items[].fields.advertiser.namestringAdvertiser's name.
items[].fields.advertiser.urlstringalways nullThe advertiser's page on the platform.
items[].fields.imagesstring[]Addresses of the ad's images.
items[].fields.first_shown_atstringWhen the ad was first shown.
items[].fields.last_shown_atstringWhen 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:

  • fields.textThe ad's body text.
  • fields.advertiser.urlThe advertiser's page on the platform.

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 one object, with no pages, for 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. Get one ad of TikTok's public Ads Library by its ID or link: 1871655924410641.
    call {"op":"tiktok.ad_detail","id":"1871655924410641"}
    2 credits
  2. Search the Top Ads of TikTok's Creative Center by keyword: sneakers, then for the first 3: get one ad of TikTok's public Ads Library by its ID or link.
    call {"op":"tiktok.top_ad_search","query":"sneakers"}call {"op":"tiktok.ad_detail","id":"<ref>"} × 3
    8 credits

The interface of the same name on other platforms.

All platforms and prices
POST/v1/call/tiktok.ad_detail{ "id": "1871655924410641" }2 creditsper call
Change the op in the path. The response around the items keeps the same shape.

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