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.