TikTok hub

TikTok collection videos API

List public TikTok posts in a collection or playlist URL, with cursor pagination in the shared Social Fetch envelope.

GET /v1/tiktok/collections/videos

1 credit per successful request.

About this endpoint

GET /v1/tiktok/collections/videos takes a public TikTok collection URL (TikTok also calls this a playlist), for example https://www.tiktok.com/@kibblemaster808/collection/Want-to-go-7665668414573546258. The response returns data.collectionId, a data.videos array, and data.page (hasMore, nextCursor). Each video row matches the profile-feed shape: id, caption, createdAt, url, thumbnailUrl, durationMs, pinned, isAd, engagement stats, and media download URLs. Pass optional cursor with the same url when data.page.hasMore is true.

This route has no lookupStatus. An empty data.videos array can mean no public videos in the collection, or other cases. Bill from meta.creditsCharged. For a creator's own uploads use GET /v1/tiktok/profiles/{handle}/videos. For posts that reuse a sound use GET /v1/tiktok/music/{clipId}/videos. For a single post by URL use GET /v1/tiktok/videos.

TikTok collection videos API FAQ

How do I list TikTok videos in a collection via API?

Call GET /v1/tiktok/collections/videos with your Social Fetch API key (x-api-key) and the public collection URL as url. Read data.videos and data.page in the JSON response. See the API docs for parameters and examples.

What URL should I pass for a TikTok collection?

A public collection (playlist) URL that includes the creator handle, slug, and numeric id, such as https://www.tiktok.com/@handle/collection/Name-123456789. A bare numeric id is not enough.

How much does the TikTok collection videos endpoint 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. Each paginated page is a separate billed request.

How does pagination work on TikTok collection videos?

When data.page.hasMore is true, pass data.page.nextCursor as the cursor query param on the next request. Keep the same collection url across pages.

What does each collection video row include?

The same shape as profile feed rows: 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.

Why is data.videos empty for a collection URL that looks valid?

This route has no lookupStatus. An empty array can mean no public videos in this collection, or other cases. Do not treat an empty list as a hard "collection not found" signal without additional checks.

How is this different from profile videos, music videos, or keyword search?

This route pages posts saved in one public collection. GET /v1/tiktok/profiles/{handle}/videos pages a creator's feed by handle. GET /v1/tiktok/music/{clipId}/videos pages posts that reuse a sound. GET /v1/tiktok/search is free-text keyword discovery. Use collection videos when the playlist URL is the join key.

Do I need TikTok OAuth to list videos in a collection?

No. You authenticate to Social Fetch with an API key. The route reads public collection video data; it does not act on behalf of a logged-in TikTok user.