Search TikTok's Ad Library
Search the ads in TikTok's public Ad Library by keyword: each ad's advertiser, title, industry, when it first and last ran, its video or images, the audience range and impressions, about 12 a page. TikTok's library holds ads shown in Europe. Use this to watch what a brand or a category advertises.
https://api.scrapefield.com/v1/tiktok/adshttps://api.scrapefield.com/v1/tiktok/ads?query=nikeIn your code
const params = new URLSearchParams({
"query": "nike"
});
const res = await fetch(`https://api.scrapefield.com/v1/tiktok/ads?${params}`, {
headers: { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits_charged);Parameters
| Parameter | What it does |
|---|---|
query | A brand, an advertiser or words in the ad. |
cursor | The meta.next_cursor from the previous page. Omit for the first page. |
fresh | Skip the cache and fetch now. Charged normally. Not available on trial credits — buy any pack to unlock it. default false |
Response
Returns an array of tiktok_ad. This is the demo’s answer, the one the playground above returns, in full rather than abbreviated — including the fields that come back null, because a field is null when the platform does not show it and you should know which ones those are before you build on them. A call with your key returns the account you ask for.
{
"data": [
{
"id": "1826300018298899416",
"url": "https://library.tiktok.com/ads/detail/?ad_id=1826300018298899416",
"advertiser": "Coffee",
"title": "Free delivery this week",
"industry": "Sports & Outdoor",
"first_shown": "2025-12-17T05:30:02.000Z",
"last_shown": "2026-01-03T05:30:02.000Z",
"video_url": "https://cdn.example/tt/ad/1826300018298899416.mp4",
"cover_image_url": "https://cdn.example/tt/ad/1826300018298899416.jpeg",
"image_urls": [],
"estimated_audience": "1K-10K",
"impressions": null
},
{
"id": "1835956553728077535",
"url": "https://library.tiktok.com/ads/detail/?ad_id=1835956553728077535",
"advertiser": "Coffee",
"title": "Free delivery this week",
"industry": "Food & Beverage",
"first_shown": "2026-06-07T23:31:07.000Z",
"last_shown": "2026-06-24T23:31:07.000Z",
"video_url": "https://cdn.example/tt/ad/1835956553728077535.mp4",
"cover_image_url": "https://cdn.example/tt/ad/1835956553728077535.jpeg",
"image_urls": [],
"estimated_audience": "10K-100K",
"impressions": 1348851
}
],
"meta": {
"request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
"credits_charged": 3,
"credits_remaining": 74218,
"cached": false,
"fetched_at": "2026-09-20T09:12:03Z",
"next_cursor": "eyJwIjoxLCJzIjoiYTNmOSJ9"
}
}Fields of tiktok_ad
An ad from TikTok's Ad Library. Named after TikTok's Display and Research APIs.
| Field | What it is |
|---|---|
id | The Ad Library's id for the ad. |
url | The ad in TikTok's Ad Library. |
advertiser | The name the ad runs under. |
title | The ad's title, as the library shows it. |
industry | As the library files it, e.g. "Apparel & Accessories". |
first_shown | When it was first shown, as the library dates it. |
last_shown | When it was last shown, as the library dates it. |
video_url | The ad's video. |
cover_image_url | The video's cover image. |
image_urls | The ad's images, in order. |
estimated_audience | The range the library shows, e.g. "1K-10K". |
impressions | How many times it was shown, as the library counts it. null where the library leaves it blank. |
What it costs
3 credits per successful call, whether we fetch it or serve it from cache — you pay for the answer, not for how we produced it. Responses are cached for 1 day and a cached one tells you when the data was actually fetched. A call we fail costs 0 and is refunded automatically.
On the smallest pack that is $2.34 per 1,000 calls; on the largest, $1.32. The full table.
Questions
How much does the TikTok Ad Library API cost?
3 credits a call: $2.34 per 1,000 calls on the smallest pack and $1.32 on the largest. A call that fails costs nothing, and the refund is automatic. A cached answer costs the same as a fresh one. Credits are bought in packs and never expire; there is no subscription.
Do I need a TikTok account, a login or cookies?
No. You need a key from us and nothing from TikTok. We never take a customer's login, cookies or session, at any price, and no account of yours is ever at risk.
Can I try it without signing up?
Yes. Add demo=true and leave the key out, or press Send request in the playground on this page. The demo answers with a real answer about Nike, captured once a week, in exactly the shape a live call returns, whatever you ask, and charges nothing.
How fresh is the data?
An answer is kept for up to 1 day, and a cached one says when it was fetched, in meta.fetched_at. Add fresh=true to fetch it again now, at the same price; it needs any purchase, not the trial.
What does it return?
A list of tiktok_ad objects. Its fields are named after TikTok's Display and Research APIs. A field is null when TikTok does not show it, never missing. Every field is described on this page.
How do I get more than one page?
Pass meta.next_cursor back as cursor, and stop when it is null. Each page is a call, priced the same. A cursor lasts as long as the answer it belongs to is cached.
Can an AI agent call it?
Yes: it is the MCP tool search_tiktok_ads on our MCP server, with the same parameters, answer and price. Without a key, the tool answers from the demo.