TikTok

TikTok Ad Library

Ad / Search

per_call

Queries TikTok's commercial content library and returns ads with creative video URLs, captions, advertiser name, country, industry, run dates and reach indicators. Built for short-form creative research and offer tracking.

What you get

Each call returns up to 12 ads, plus a cursor for the next 12.

Endpoint

GET /v1/tiktok-ad-library/ad-search

Price

$1.50

per 1,000 calls · $0.0015 per call

Cost per call

1 credit

Failed calls never charged

Parameters

target
required
string

The TikTok Ad Library handle, URL or identifier to resolve.

limit
optional
integer

Maximum records to return, capped at this service's page size (see Limits below). Omit it to receive the whole page. It shapes the response, not the price — a call costs the same either way.

cursor
optional
string

Pagination cursor returned by a previous response.

fresh
optional
enum

Bypass cached data and force a live fetch for this one call. Use it for daily monitoring or any figure you are tracking over time. Accepts `true`, `1`, `false` or `0`; anything else returns 400 `invalid_fresh`. Defaults to false and costs exactly the same as a cached call.

One of: true, 1, false, 0

Example request

Live call. Successful calls are charged; failed and empty results are not.

curl
curl "https://fastfetchz.com/v1/tiktok-ad-library/ad-search?target=nasa" \
  -H "X-API-Key: $FASTFETCHZ_KEY"

Example response

200 application/json
{
  "success": true,
  "service": {
    "platform": "TikTok Ad Library",
    "name": "Ad / Search",
    "slug": "ad-search"
  },
  "credits_charged": 1,
  "credits_remaining": 99,
  "latency_ms": 214,
  "data": {
    "source": "tiktok_public_ads_library",
    "query": "nike",
    "ads": [
      {
        "id": "1874222777792674",
        "name": "NIKE Retail B.V.",
        "audit_status": "1",
        "type": "2",
        "first_shown_date": 1787356800000,
        "last_shown_date": 1788134400000,
        "videos": [
          {
            "video_url": "https://library.tiktok.com/api/v1/cdn/1788897917/video/aHR0cHM6Ly92NTgudGlrdG9rY2RuLmNvbS92aWRlby90b3MvYWxpc2cvdG9zLWFsaXNnLXZlLTAwNTFjMDAxLXNnL29ZMU53T0JLSEUxbmk1bW1Fb2ZBbXA3MjMzbzNrc0JRQWlBUndJLw==/c9e33fbf-23b4-47e8-8dc0-9ea0ea6f2310?VExpiration=1788919523&VSignature=ALfzx8VNkRei0-eNZbZepQ&a=475769&bt=899&btag=e000b0000&bti=PDU2NmYwMy86&ft=.NpOcInz7Thkm1rGXq8Zmo&l=20260909040516C947EB4E12FB18FD…",
            "cover_img": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oU3BAO7oFIAso5pNmBkm1fBlRwi3pABJ1EQmYi~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=cf61bbd2&x-expires=1788919200&x-signature=otcg9YWdRuSfaDVKVcPVUlJ3Yq0%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&shcp=9b759fb9&idc=sg1"
          }
        ],
        "estimated_audience": "10K-100K",
        "spent": "",
        "impression": 0,
        "show_mode": 1,
        "image_urls": [
          "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/oU3BAO7oFIAso5pNmBkm1fBlRwi3pABJ1EQmYi~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=cf61bbd2&x-expires=1788919200&x-signature=otcg9YWdRuSfaDVKVcPVUlJ3Yq0%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&shcp=9b759fb9&idc=sg1"
        ],
        "rejection_info": null,
        "sor_audit_status": "1",
        "title": "Schulanfang mit Nike",
        "url": "https://library.tiktok.com/ads/detail/?ad_id=1874222777792674"
      },
      {
        "id": "1873957502496802",
        "name": "NIKE Retail B.V.",
        "audit_status": "1",
        "type": "2",
        "first_shown_date": 1787184000000,
        "last_shown_date": 1788134400000,
        "videos": [
          {
            "video_url": "https://library.tiktok.com/api/v1/cdn/1788897917/video/aHR0cHM6Ly92NTgudGlrdG9rY2RuLmNvbS92aWRlby90b3MvYWxpc2cvdG9zLWFsaXNnLXZlLTAwNTFjMDAxLXNnL29nQk5OTkRKZHJaZkp1RkZyYVZHUWU1RU95MkZRRHFUQklnQVBqLw==/484b158e-9fd4-4646-940d-c82f6d98cba2?VExpiration=1788919523&VSignature=fDCb2wpcGYKZHrUBjbrjAA&a=475769&bt=624&btag=e000b0000&bti=PDU2NmYwMy86&ft=.NpOcInz7Thkm1rGXq8Zmo&l=20260909040516C947EB4E12FB18FD…",
            "cover_img": "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/ooz15CwIi8BAOosiskADF1kk78NAmBApEtnxfp~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=67558330&x-expires=1788919200&x-signature=CZtY2Wa%2B2iTJ5hGF%2BGmRor%2FxRSo%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&shcp=9b759fb9&idc=sg1"
          }
        ],
        "estimated_audience": "10K-100K",
        "spent": "",
        "impression": 0,
        "show_mode": 1,
        "image_urls": [
          "https://p16-common-sign.tiktokcdn.com/tos-alisg-p-0051c001-sg/ooz15CwIi8BAOosiskADF1kk78NAmBApEtnxfp~tplv-tiktokx-origin.jpeg?dr=14582&refresh_token=67558330&x-expires=1788919200&x-signature=CZtY2Wa%2B2iTJ5hGF%2BGmRor%2FxRSo%3D&t=4d5b0474&ps=13740610&shp=0c75dd76&shcp=9b759fb9&idc=sg1"
        ],
        "rejection_info": null,
        "sor_audit_status": "1",
        "title": "Schulanfang mit Nike",
        "url": "https://library.tiktok.com/ads/detail/?ad_id=1873957502496802"
      }
    ],
    "total": 5000,
    "has_more": true,
    "cursor": "eyJvZmZzZXQiOjEyLCJzZWFyY2hfaWQiOiJleUpzWVhOMFgzTnZjblFpT2xzeU9DNHhNelEzTkRnc01UYzRPREV6TkRRd01EQXdNRjBzSW01bGVIUmZZM1Z5YzI5eUlqb3hNbjA9In0"
  }
}

Getting more results

Each response includes a cursor. Pass it back as cursor to fetch the next 12 ads. Repeat until no cursor is returned.

two calls
# Call 1 — first 12 ads
curl "https://fastfetchz.com/v1/tiktok-ad-library/ad-search?target=nasa" \
  -H "X-API-Key: $FASTFETCHZ_KEY"
# -> { "data": { ... }, "cursor": "eyJwYWdlIjoyfQ" }

# Call 2 — next 12 ads
curl "https://fastfetchz.com/v1/tiktok-ad-library/ad-search?target=nasa&cursor=eyJwYWdlIjoyfQ" \
  -H "X-API-Key: $FASTFETCHZ_KEY"

Limits

  • Maximum per call: 12 ads.
  • Minimum per call: 1 ad — a target with less data returns fewer ads, and an empty result is still a successful call.
  • Each call fetches a full page of up to 12 and costs the same either way. Pass limit to receive fewer than that in the response.
  • Larger jobs are paginated with a cursor; there is no cap on how many pages you fetch.

What this costs in practice

120,000 ads = 10,000 calls × 1 credits per call = 10,000 credits = $0.00

Priced at the Custom pack rate: 1,000,000 credits for $0.00.

Open in the pricing calculator

Guides using this endpoint

Error codes

401invalid_api_keyMissing or unrecognized X-API-Key header. No credits are charged.
402insufficient_creditsYour balance is below the cost of the call. Top up to continue.
403account_suspended / key_revokedThe account is suspended or the key was revoked.
429rate_limitedOver your account's requests-per-second limit. Retrying helps: the body carries retry_after_seconds and the response carries a Retry-After header. Not charged.
429monthly_cap_reachedThis key used the monthly call cap you set for it. Retrying will not help — raise the cap, use another key, or wait for the next calendar month. No Retry-After header is sent. Not charged.
500upstream_errorUnexpected failure while fulfilling the request. Not charged.