Skip to content
ScrapeField

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.

3credits
GEThttps://api.scrapefield.com/v1/tiktok/ads
Try itno key needed3 credits on a real call · 0 here
https://api.scrapefield.com/v1/tiktok/ads?query=nike

In 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

ParameterWhat it does
query
string · required
A brand, an advertiser or words in the ad.
cursor
string
The meta.next_cursor from the previous page. Omit for the first page.
fresh
boolean
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.

FieldWhat it is
id
string
The Ad Library's id for the ad.
url
URL
The ad in TikTok's Ad Library.
advertiser
string · or null
The name the ad runs under.
title
string · or null
The ad's title, as the library shows it.
industry
string · or null
As the library files it, e.g. "Apparel & Accessories".
first_shown
time, ISO 8601 UTC · or null
When it was first shown, as the library dates it.
last_shown
time, ISO 8601 UTC · or null
When it was last shown, as the library dates it.
video_url
URL · or null
The ad's video.
cover_image_url
URL · or null
The video's cover image.
image_urls
array of URLs
The ad's images, in order.
estimated_audience
string · or null
The range the library shows, e.g. "1K-10K".
impressions
integer · or null
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.