TikTok hub

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}/videos

1 credit per successful request.

About this endpoint

Most creator pipelines need the recent feed after they already know the handle: last N posts, engagement on each clip, and a stable video id to fan out into transcript or comment routes. Scraping the profile grid yourself means replaying mobile clients, parsing nested JSON that reshuffles often, and inventing your own pagination tokens.

`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`, and `trim` for a smaller payload.

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. Pricing is on the credit badge for this operation; bill from `meta.creditsCharged`. on every response.

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?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

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.