TikTok Ad Library Advertiser Ads API
List the ads of one registered advertiser, by country and date range.
- 10 credits per call
- Failed calls are free
- Updated
- tiktok-adlibrary.advertiser-ads.list
{ "total_items": 50, "items": [ { "name": "NIKE Retail B.V.", "title": "Postaw na produkty gotowe na wszystko. Zawsze. Wszędzie.", "audit_status": "1", "estimated_audience": "200K-300K", "first_shown_date": 1791158400000, "id": "1878195355527474", "impression": 0, "last_shown_date": 1791936000000, "rejection_info": null, "show_mode": 2, "sor_audit_status": "1", "spent": "", "subject": "Home Improvement", "type": "2" }, { "name": "NIKE Retail B.V.", "title": "Get the gear that's up for it all. Any time. Anywhere.", "audit_status": "1", "estimated_audience": "10K-100K", "first_shown_date": 1791676800000, "id": "1878794782729521", "impression": 0, "last_shown_date": 1791936000000, "rejection_info": null, "show_mode": 1, "sor_audit_status": "1", "spent": "", "subject": "Sports & Outdoor", "type": "2" } ]}
| # | Advertiser | Ad text | Audience | First shown | Last shown | Subject | Ad ID | Audit status | Impression | Show mode |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | NIKE Retail B.V. | Postaw na produkty gotowe na wszystko. Zawsze. Wszędzie. | 200K-300K | 1,791,158,400,000 | 1,791,936,000,000 | Home Improvement | 1878195355527474 | 1 | 0 | 2 |
| 2 | NIKE Retail B.V. | Get the gear that's up for it all. Any time. Anywhere. | 10K-100K | 1,791,676,800,000 | 1,791,936,000,000 | Sports & Outdoor | 1878794782729521 | 1 | 0 | 1 |
| 3 | NIKE Retail B.V. | Hol dir die Ausrüstung, die alles mitmacht. Jederzeit. Überall. | 10K-100K | 1,791,504,000,000 | 1,791,936,000,000 | Apparel & Accessories | 1878556145808738 | 1 | 0 | 2 |
| 4 | NIKE Retail B.V. | Y2K vibes are back with Nike P-6000. Get styled for the circuit. | 800K-900K | 1,789,084,800,000 | 1,791,936,000,000 | Apparel & Accessories | 1875934570883330 | 1 | 0 | 1 |
| 5 | NIKE Retail B.V. | Postaw na produkty gotowe na wszystko. Zawsze. Wszędzie. | 0-1K | 1,791,936,000,000 | 1,791,936,000,000 | 1879044514345089 | 1 | 0 | 1 | |
| 6 | NIKE Retail B.V. | Sono pronti a tutto, sempre e ovunque: ecco gli articoli che ce… | 10K-100K | 1,791,504,000,000 | 1,791,936,000,000 | Apparel & Accessories | 1878605591158801 | 1 | 0 | 2 |
| 7 | NIKE Retail B.V. | Work without compromise in the Nike Hybrid RN. | 10K-100K | 1,791,936,000,000 | 1,791,936,000,000 | 1879016883299762 | 1 | 0 | 2 | |
| 8 | NIKE Retail B.V. | Hol dir die Ausrüstung, die alles mitmacht. Jederzeit. Überall. | 0-1K | 1,791,936,000,000 | 1,791,936,000,000 | 1879056824469681 | 1 | 0 | 1 | |
| 9 | NIKE Retail B.V. | Place-toi sur la ligne de départ avec cette icône des années 20… | 1M-10M | 1,789,084,800,000 | 1,791,936,000,000 | Apparel & Accessories | 1875934639472337 | 1 | 0 | 1 |
| 10 | NIKE Retail B.V. | Get the gear that's up for it all. Any time. Anywhere. | 10K-100K | 1,791,936,000,000 | 1,791,936,000,000 | 1879043548210546 | 1 | 0 | 2 |
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| advertiser_name | string | yes | The advertiser's exact registered name, such as NIKE Retail B.V., from the advertiser search. | NIKE Retail B.V. |
| country | string | no | A country the library covers, such as DE, FR or GB, or ALL. The regions endpoint lists them. | ALL · AT · BE · BG · CH · CY · CZ · DE · DK · E… |
| cursor | string | no | Pass next_cursor from the last response to get the next page. | |
| end_date | string | no | Only ads shown up to this day (YYYY-MM-DD). Today by default. | |
| limit | integer | no | How many ads to return in this call. | |
| start_date | string | no | Only ads shown on or after this day (YYYY-MM-DD). By default, 30 days before the end date. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| items[].name | string | The advertiser's registered name. | NIKE Retail B.V. |
| items[].title | string | The ad's text. | Postaw na produkty gotowe na wszystko. Zawsze. Wszędzie. |
| items[].estimated_audience | string | TikTok's audience band, such as 100K-200K. | 200K-300K |
| items[].first_shown_date | integer | The first day the ad was shown, as a Unix time in milliseconds. | 1,791,158,400,000 |
| items[].last_shown_date | integer | The last day the ad was shown, as a Unix time in milliseconds. | 1,791,936,000,000 |
| items[].subject | string | The ad's topic. | Home Improvement |
| items[].id | string | TikTok's ID for the ad, used by the ad detail endpoint. | 1878195355527474 |
| items[].audit_status | string | TikTok's review status code for the ad. | 1 |
| items[].impression | integer | Impressions as a number, when TikTok gives one; often 0. | 0 |
| items[].rejection_info | null | Why TikTok rejected the ad, when it did. | null |
| items[].show_mode | integer | TikTok's code for how the ad is shown. | 2 |
| items[].sor_audit_status | string | A second review status code TikTok gives the ad. | 1 |
| items[].spent | string | Amount spent on the ad, when TikTok shows it. | |
| items[].type | string | TikTok's code for the kind of ad. | 2 |
| items | array | The results. | 50 records |
| total_items | integer | How many results this response holds. | 50 |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "tiktok-adlibrary.advertiser-ads.list", "input": { "advertiser_name": "NIKE Retail B.V." }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "tiktok-adlibrary.advertiser-ads.list", "input": { "advertiser_name": "NIKE Retail B.V." }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "tiktok-adlibrary.advertiser-ads.list", "input": { "advertiser_name": "NIKE Retail B.V." }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, list the TikTok ads of NIKE Retail B.V. and group them by subject.
More from the TikTok Ad Library API
The same data from other platforms
TikTok Ad Library Advertiser Ads API FAQ
The short answers. The docs have the long ones.
How much does the TikTok Ad Library Advertiser Ads API cost?
10 credits per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send advertiser_name. The input fields below list every option with its type and limits.
Do I need a TikTok Ad Library login?
No. It reads public TikTok Ad Library data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds tiktok-adlibrary.advertiser-ads.list, checks its price and runs it with the same credits as the REST API.
Your first TikTok Ad Library call is free.
Up to 100 free credits to start, no card needed.