Skip to main content
Glama

tiktok_ad_library_top_ads

TikTok Creative Center Top Ads — one ~20-row leaderboard page, not a library search (flat 2; ~1/ad on the fallback path). Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoOptional keyword that ranks the one ~20-row leaderboard page — not a library search. Case-insensitive whole-word hits on title/brandName/industry/objective (hair ≠ wheelchair) come first; the rest of TikTok's keyword-ranked page follows as fill (matchedFrom [] on those ads, rankedFill in the envelope). There is no tags field. advertiser.name is often null in the default US market. Envelope candidatesScanned is the pre-filter pool size. For a known advertiser, use /tiktok/ad-details by ad id.
cacheNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.
limitNoMax items to return (default 20, max 20). One Creative Center leaderboard page is ~20 rows; limit only trims that pool — it cannot scan more candidates. Flat 2 credits on the native path; the fallback path ~1 credit per returned ad (min 2).
matchNoKeyword token mode: "any" (default, OR) or "all" (AND). Zero whole-word hits still return TikTok's keyword-ranked page as matchBasis=ranked (literalMatches=0).
periodNoLookback window in days: 7, 30, or 180. Default 30.
countryNoTwo-letter ISO country code. Default US. Non-ISO codes are a definitive 400 INVALID_COUNTRY (Creative Center used to quietly return an empty leaderboard for them).
orderByNoSort: for_you, likes, ctr, impressions, or cost. Default for_you.
adFormatNoOptional format filter: spark or non_spark. Served only by the extended fetcher — while it is disabled, adFormat returns 503 filter_unavailable (retryable false, not billed). Omit adFormat for the native leaderboard.
industryNoOptional industry key or label from Creative Center.
objectiveNoOptional campaign objective (e.g. Traffic, Conversion, Reach).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Max items to return (default 20, max 20). One Creative Center leaderboard page is ~20 rows; limit only trims that pool — it cannot scan more candidates. Flat 2 credits on Decodo-native; Apify ~1 credit per returned ad (min 2)."New value: +"Max items to return (default 20, max 20). One Creative Center leaderboard page is ~20 rows; limit only trims that pool — it cannot scan more candidates. Flat 2 credits on the native path; the fallback path ~1 credit per returned ad (min 2)."
  2. Changed1 schema field changed
    • changedInput schema / properties / adFormat / description
      Previous value: -"Optional format filter: spark or non_spark."New value: +"Optional format filter: spark or non_spark. Served only by the extended fetcher — while it is disabled, adFormat returns 503 filter_unavailable (retryable false, not billed). Omit adFormat for the native leaderboard."
  3. Changed2 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Two-letter ISO country code. Default US."New value: +"Two-letter ISO country code. Default US. Non-ISO codes are a definitive 400 INVALID_COUNTRY (Creative Center used to quietly return an empty leaderboard for them)."
    • changedInput schema / properties / q / description
      Previous value: -"Optional keyword that filters the one ~20-row leaderboard page — not a library search. Case-insensitive whole-word match on title/brandName/industry/objective (hair ≠ wheelchair). There is no tags field. advertiser.name is often null in the default US market. Envelope candidatesScanned is the pre-filter pool size. For a known advertiser, use /tiktok/ad-details by ad id."New value: +"Optional keyword that ranks the one ~20-row leaderboard page — not a library search. Case-insensitive whole-word hits on title/brandName/industry/objective (hair ≠ wheelchair) come first; the rest of TikTok's keyword-ranked page follows as fill (matchedFrom [] on those ads, rankedFill in the envelope). There is no tags field. advertiser.name is often null in the default US market. Envelope candidatesScanned is the pre-filter pool size. For a known advertiser, use /tiktok/ad-details by ad id."
  4. Changed1 schema field changed
    • changedInput schema / properties / match / description
      Previous value: -"Keyword token mode: \"any\" (default, OR) or \"all\" (AND). Zero literal hits → empty ads[] (never an unfiltered soft list)."New value: +"Keyword token mode: \"any\" (default, OR) or \"all\" (AND). Zero whole-word hits still return TikTok's keyword-ranked page as matchBasis=ranked (literalMatches=0)."
  5. Changed1 schema field changed
    • changedInput schema / properties / cache / description
      Previous value: -"Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits."New value: +"Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh."
  6. Changed10 schema fields changed
    • changedInput schema / properties / adFormat / description
      Previous value: -"spark | non_spark."New value: +"Optional format filter: spark or non_spark."
    • changedInput schema / properties / cache / description
      Previous value: -"Serve from 24h cache when available (0 credits on hit)."New value: +"Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits."
    • changedInput schema / properties / country / description
      Previous value: -"ISO country code. Default US."New value: +"Two-letter ISO country code. Default US."
    • changedInput schema / properties / industry / description
      Previous value: -"Optional industry key or label."New value: +"Optional industry key or label from Creative Center."
    • changedInput schema / properties / limit / description
      Previous value: -"Max items (default 20, max 100). Flat 2 native; Apify ~1/ad (min 2)."New value: +"Max items to return (default 20, max 20). One Creative Center leaderboard page is ~20 rows; limit only trims that pool — it cannot scan more candidates. Flat 2 credits on Decodo-native; Apify ~1 credit per returned ad (min 2)."
    • changedInput schema / properties / match / description
      Previous value: -"Keyword mode: \"any\" (default) or \"all\"."New value: +"Keyword token mode: \"any\" (default, OR) or \"all\" (AND). Zero literal hits → empty ads[] (never an unfiltered soft list)."
    • changedInput schema / properties / objective / description
      Previous value: -"Optional campaign objective."New value: +"Optional campaign objective (e.g. Traffic, Conversion, Reach)."
    • changedInput schema / properties / orderBy / description
      Previous value: -"for_you | likes | ctr | impressions | cost."New value: +"Sort: for_you, likes, ctr, impressions, or cost. Default for_you."
    • changedInput schema / properties / period / description
      Previous value: -"Lookback days: 7, 30, or 180. Default 30."New value: +"Lookback window in days: 7, 30, or 180. Default 30."
    • changedInput schema / properties / q / description
      Previous value: -"Optional keyword (substring). See match + matchedFrom."New value: +"Optional keyword that filters the one ~20-row leaderboard page — not a library search. Case-insensitive whole-word match on title/brandName/industry/objective (hair ≠ wheelchair). There is no tags field. advertiser.name is often null in the default US market. Envelope candidatesScanned is the pre-filter pool size. For a known advertiser, use /tiktok/ad-details by ad id."
  7. Changed2 schema fields changed
    • changedInput schema / properties / cache / description
      Previous value: -"Set true to serve from the 24h response cache. Default false — always fetch fresh data."New value: +"Serve from 24h cache when available (0 credits on hit)."
    • changedInput schema / properties / limit / description
      Previous value: -"Max items to return. Default 20, max 100. Billed per result."New value: +"Max items (default 20, max 100). Flat 2 native; Apify ~1/ad (min 2)."
  8. Changed2 schema fields changed
    • addedInput schema / properties / match
      Added value: +{
      +  "description": "Keyword mode: \"any\" (default) or \"all\".",
      +  "type": "string"
      +}
    • changedInput schema / properties / q / description
      Previous value: -"Optional keyword filter."New value: +"Optional keyword (substring). See match + matchedFrom."
  9. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.