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 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.