TikTok · Guide

How to get TikTok trending feed

TL;DR
To get TikTok trending feed, sign up for a free Captapi key, then send one GET request to /v1/tiktok/trending-feed with your input. You get clean JSON back in seconds for 2 credits per call — no OAuth, scraping or platform SDKs. For You by default; pass orderBy/period/page for Creative Center popular videos (like/hot/comment/repost) with totalCount. Flat 2 credits.

How to get TikTok trending feed (step by step)

  1. 1

    Get a free API key

    Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.

  2. 2

    Call the TikTok Trending Feed API

    Send an authenticated GET request to /v1/tiktok/trending-feed with your input. No OAuth, no scraping setup.

  3. 3

    Read the JSON response

    Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.

Code example

curl "https://api.captapi.com/v1/tiktok/trending-feed" \
  -H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."

What the response looks like

{
  "success": true,
  "data": {
    "platform": "tiktok",
    "country": "US",
    "countryCode": "US",
    "cached": false,
    "totalReturned": 2,
    "requested": 20,
    "hasMore": false,
    "nextCursor": null,
    "truncatedReason": null,
    "fetchedAt": "2026-08-03T11:30:00.000Z",
    "results": [
      {
        "url": "https://www.tiktok.com/@adamjones73/video/7660991836407811358",
        "id": "7660991836407811358",
        "coverUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oERcgNIQQgASfTiefnLoipqrkyeCfiAGGKmNEI~tplv-tiktokx-origin.image?dr=9636&x-expires=1785517200&x-signature=FF%2Fhr528f3arMCaHqCr9%2BeBIue0%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5",
        "author": "adamjones73",
        "authorName": "Adam",
        "views": 5400000,
        "likes": 823500,
        "comments": 4301,
        "shares": 147900,
        "rank": 1,
        "caption": "#gta #viral #fyp",
        "platform": "tiktok",
        "createTime": 1783713660,
        "publishedAt": "2026-07-10T20:01:00.000Z",
        "mediaType": "video",
        "thumbnailUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oERcgNIQQgASfTiefnLoipqrkyeCfiAGGKmNEI~tplv-tiktokx-origin.image?dr=9636&x-expires=1785517200&x-signature=FF%2Fhr528f3arMCaHqCr9%2BeBIue0%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5",
        "isAd": false
      },
      {
        "url": "https://www.tiktok.com/@123court/video/7655473367125855519",
        "id": "7655473367125855519",
        "coverUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oIMffQHCCga9fWiRXUy8JOfP3WVUFGAL7oQtAQ~tplv-tiktokx-origin.image?dr=9636&x-expires=1785517200&x-signature=zF4ZAiNfBFLlLm4zu51g3NjykhI%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5",
        "author": "123court",
        "authorName": "123 Court",
        "views": 3600000,
        "likes": 133800,
        "comments": 1872,
        "shares": 8999,
        "rank": 2,
        "caption": "Engaged Mom Demands More Money, But Judge Finds Out The Shocking Truth! ​#CourtroomDrama  ​#FamilyCourt  ​#ChildSupport  ​#ChildSupportCourt  ​#JudgeJules   ​#InstantKarma  ​#Backfired  ​#CaughtInTheAct  ​#PlotTwist  ​#TruckDriverLife  ​#CoParenting  ​#SplitCustody  ​#SiblingDrama  ​#RevengeBackfires",
        "platform": "tiktok",
        "createTime": 1782428791,
        "publishedAt": "2026-06-25T23:06:31.000Z",
        "mediaType": "video",
        "thumbnailUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oIMffQHCCga9fWiRXUy8JOfP3WVUFGAL7oQtAQ~tplv-tiktokx-origin.image?dr=9636&x-expires=1785517200&x-signature=zF4ZAiNfBFLlLm4zu51g3NjykhI%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5",
        "isAd": false
      }
    ]
  }
}

Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.

Request parameters

NameTypeRequiredDescription
countrystringNoTwo-letter ISO country (default US). For You: region-availability hint. Creative Center mode: chart market.
countryCodestringNoAlias of country. Wins when both are set.
orderBystringNoCreative Center sort: hot (views), like, comment, or repost. Unknown values are 400. vv/views/plays are aliases of hot — the response echoes the public name. Setting this (or period / page>1) switches from For You to the popular-videos chart. On a For You fallthrough the same sort is applied locally.
periodintegerNoLookback days: 7, 30, or 120 (180→120). Triggers chart mode. Every returned publishedAt is inside this window — a For You fallthrough is filtered the same way.
pageintegerNoCreative Center page (default 1). page>1 triggers chart mode.
limitintegerNoMax items to return (default 20, max 200). Flat 2 credits per call.
cachebooleanNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.

Frequently asked questions

What does the TikTok Trending Feed API do?

The TikTok Trending Feed API lets you list items in bulk with metadata from a public TikTok trending feed using one GET request to /v1/tiktok/trending-feed. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the TikTok Trending Feed API cost?

Each successful call costs 2 credits. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.

Do I need a TikTok API key or OAuth?

No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.

Why was I billed when the browser timed out?

The origin used to finish past Cloudflare's ~125s read timeout, log a 200, and debit 2 credits after the connection was already dead (385s and 430s rows in request history). The endpoint now has the same 110s deadline as popular-hashtags. A wall with a 6h last-good page is labelled stale 200 at 0 credits (stale=true, source=cache). A miss with no snapshot is 502 UPSTREAM_UNAVAILABLE, 0 credits, with timings.totalMs.

Does orderBy=vv sort by views?

vv is accepted as an alias of hot (Creative Center's internal key) and the response echoes orderBy=hot. Unknown tokens are 400. On a Creative Center hit the chart is already sorted. On a For You fallthrough the list is re-sorted locally by that metric and the note says so — rank is not a raw array index of an unsorted feed.

Why is mediaType photo on a /video/ URL?

It isn't anymore. mediaType used to track whether we extracted a playable videoUrl. Session-bound play URLs are deliberately omitted, so that labelled roughly half the feed as photo. mediaType is now photo only when the canonical url contains /photo/, or durationSeconds is null on an image post. A 126-second /video/ row with no videoUrl is a video.

Why is author.followers null?

The signed mobile For You card often omits follower_count. We read author / authorStats / nested author.stats (including compact strings like 12.3K), then hydrate unique still-null handles from /api/user/detail (8s budget, not a second FYP page — those items never overlap). Null means the feed omitted the count and user/detail missed or timed out for that creator.

Can I page the For You feed?

No. A filled page is hasMore true, nextCursor null, truncatedReason=single_page_only — more exist and are unreachable. hasMore is never true without a cursor unless that reason is set (same rule as truth-social/user-posts). A short page is hasMore false. Creative Center mode uses page + pagination.totalCount (truncatedReason=chart-page when the chart page filled).

Is the TikTok Trending Feed API suitable for production use?

Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.

Ready to get TikTok trending feed?

Start free with 100 credits — no credit card required.

Get your free API key