TikTok profile videos API
List public uploads for a TikTok handle as structured video rows — captions, stats, media URLs, and cursor pagination in the shared Social Fetch envelope.
GET /v1/tiktok/profiles/{handle}/videos1 credit base. With `hostMedia`, +2 credits per hosted asset (up to 24 assets, 49 credits max).
About this endpoint
`GET /v1/tiktok/profiles/{handle}/videos` takes a TikTok handle (with or without a leading `@`) and returns `data.videos` plus `data.page` (`hasMore`, `nextCursor`). Each row carries id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, engagement stats, and download-related media URLs. Optional query params: `sortBy` (`latest` or `popular`), `cursor`, `userId` (when you already have the numeric id), `region`, `trim` for a smaller payload, and `hostMedia` for SocialFetch-hosted copies.
`thumbnailUrl` and `media.download*` URLs are source-platform CDN links when TikTok exposes them. They can expire or fail outside the original retrieval context and are not SocialFetch-hosted assets. For SocialFetch-hosted copies on this list page, pass `hostMedia=true` (up to 24 assets / 90-day retention; +2 credits per successfully stored asset; prefers watermark-free video when present).
This route has no `lookupStatus`. An empty `data.videos` array can mean no uploads in the selected sort window, a private profile, or other cases. Call `GET /v1/tiktok/profiles/{handle}` first when you need an explicit `found` / `not_found` / `private` outcome before you interpret an empty list. Bill from `meta.creditsCharged`.
TikTok profile videos API FAQ
How do I list TikTok videos for a profile via API?
Call `GET /v1/tiktok/profiles/{handle}/videos` with your Social Fetch API key (`x-api-key`). Pass the TikTok username as the path parameter, with or without a leading `@`. Read `data.videos` and `data.page` in the JSON response.
How much does the TikTok profile videos API cost?
1 credit per successful list page by default. With `hostMedia`, +2 credits per hosted asset (up to 24 assets, 49 credits max). Always bill from `meta.creditsCharged` on the response.
What does each TikTok profile video row include?
id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, stats (views, likes, comments, shares, saves), and media download URLs. Optional `details` may carry extra TikTok-native fields that are not duplicated at the top level.
How does pagination work on TikTok profile videos?
When `data.page.hasMore` is true, pass `data.page.nextCursor` as the `cursor` query param on the next request. Keep the same handle and filters across pages.
Can I sort TikTok profile videos by latest or popular?
Yes. Pass optional `sortBy=latest` or `sortBy=popular`. When you omit `sortBy`, the feed uses the default ordering for that request.
Why is data.videos empty when the TikTok handle looks valid?
This route has no `lookupStatus`. An empty array can mean no videos in the selected sort window, a private profile, or other cases. Call `GET /v1/tiktok/profiles/{handle}` when you need an explicit `private` or `not_found` outcome before treating an empty list as "zero posts."
Do I need TikTok OAuth to list a profile's videos?
No. You authenticate to Social Fetch with an API key. The route reads public profile feed data; it does not act on behalf of a logged-in TikTok user.
How is this different from GET /v1/tiktok/videos (single video)?
This route pages a creator's feed by handle. Single-video detail is `GET /v1/tiktok/videos` with a video URL. Use the list route to discover ids, then the single-video or transcript routes when you need one clip in depth.
Other TikTok endpoints
- ProfileGET /v1/tiktok/profiles/{handle}
- Profile followersGET /v1/tiktok/profiles/{handle}/followers
- Profile followingGET /v1/tiktok/profiles/{handle}/following
- Profile regionGET /v1/tiktok/profiles/{handle}/region
- Profile audienceGET /v1/tiktok/profiles/{handle}/audience
- Live streamGET /v1/tiktok/profiles/{handle}/live
- Profile engagementGET /v1/tiktok/profiles/{handle}/engagement
- User searchGET /v1/tiktok/users/search