FetchPI
Log in

Guides

TikTok API for Developers: Profile, Posts, Comments and Search in One Request Model

How to fetch TikTok profiles, user posts, video comments and search results as normalized JSON — one API key, no scraper maintenance, with freshness control and transparent billing.

Last reviewed

What you get

FetchPI exposes the TikTok surfaces developers actually build against — profile, user posts, post detail, comments and search — behind one REST model. Every endpoint returns the same normalized envelope: a data array (or object), a next_cursor for pagination, and a meta block that reports the request id, which freshness layer served the data and exactly what the call cost.

The practical consequence: you integrate once, then swap platforms by changing the URL prefix. The author object in a TikTok post reads like the author object in a Reddit post.

The five capabilities

  • GET /v1/tiktok/users/{username} — profile: follower count, total likes, video count, verification.
  • GET /v1/tiktok/users/{username}/posts — the recent-video feed with per-video play/like/comment/share counts.
  • GET /v1/tiktok/posts/{id} — one video, full statistics.
  • GET /v1/tiktok/posts/{id}/comments — comment lists with author and engagement.
  • GET /v1/tiktok/search/posts — keyword search over videos.

Quickstart

Every request needs one header: Authorization: Bearer $FETCHPI_API_KEY. Create a free key in the console and you can replay every snippet on this page as-is.

curl -s -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/khaby.lame?freshness=default"

curl -s -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/khaby.lame/posts?freshness=default"

Freshness: cache, default, live

Every capability accepts freshness=cache|default|live and an optional max_age bound. default serves from the response cache when a fresh-enough copy exists and falls through to the upstream only on a miss — repeat analytics queries over the same profiles cost a fraction of the live price. The response meta.freshness.source_layer tells you which layer actually answered, and meta.billing reports the charge — the transparency is contractual, not a marketing promise.

# First call: upstream, full price. Second identical call within
# max_age: served from cache, meta.billing.cache_hit = true.
curl -s -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/khaby.lame?freshness=default&max_age=600"

Try it without a key

The TikTok Creator Analytics live demo runs the real profile and user-posts calls through an anonymous, rate-limited proxy — the same normalized responses you get with your own key.