TikTok Profile Videos API
One POST resolves a TikTok profile URL into a paginated list of the creator's videos, newest first: id, url, caption as the title, duration, @handle, publish time and play count. Every row's url is accepted by the transcript and batch endpoints as-is. since_video_id returns only videos newer than one you have already seen, and an empty answer is free, so a profile can be polled on a schedule for almost nothing.
Each page of results is one credit; a page trimmed to nothing by since_video_id costs nothing, so polling a profile for new videos is free. Failed requests are free.
On this platform
- Give the profile as its URL, tiktok.com/@user; the platform is read from it.
- tab, sort and query are YouTube-only and are refused on a TikTok profile.
- A profile that does not exist answers 404 not_found; a page with nothing newer than since_video_id costs nothing.
/api/v2/transcripts/channelidempotentList a channel's or profile's videos, Shorts, streams or playlists
Resolve a creator into a paginated list of videos (metadata only), newest first. A channel or profile that does not exist answers 404 not_found; an existing one with no uploads answers 200 with an empty list. The platform is read from the input: a YouTube channel, or a TikTok or Instagram profile URL. Every row's url is accepted by the transcript and batch endpoints as-is. Pass since_video_id to get back only the items newer than one you've already seen - a page with nothing new is free, which makes this safe to poll on a schedule. A YouTube channel also takes tab (its Shorts, live streams, playlists or podcasts instead of its videos), sort (popular or oldest first) and query (search inside the channel). The playlists and podcasts tabs answer with data.kind playlist_list, whose rows' urls the playlist endpoint accepts as-is.
Body parameters
channelstringrequiredtab"videos" | "shorts" | "live" | "playlists" | "podcasts"optionalsort"newest" | "popular" | "oldest"optionalquerystring (1-200 characters)optionallimitinteger (1–50)optionalcursorstringoptionalsince_video_idstringoptionalRequest example
Responses
{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "video_list",
"source": "channel_videos",
"platform": "tiktok",
"videos": [
{
"videoId": "7690953765293231373",
"url": "https://www.tiktok.com/@khanacademy/video/7690953765293231373",
"title": "Lower Car Payment? Check the Loan First! The best deal isn’t always the one with the lowest monthly payment. Learn more in Khan Academy’s Monthly payment versus total cost lesson! Link in bio",
"duration": 35,
"channel": "@khanacademy",
"publishedAt": "2026-09-29T13:49:18Z",
"stats": {
"plays": 539
}
},
{
"videoId": "7687991816741768462",
"url": "https://www.tiktok.com/@khanacademy/video/7687991816741768462",
"title": "Learn more in Khan Academy’s Beyond the car payment lesson in our FREE Financial Literacy course! Link in bio.",
"duration": 42,
"channel": "@khanacademy",
"publishedAt": "2026-09-21T14:15:17Z",
"stats": {
"plays": 2519
}
}
],
"next_cursor": "eyJvIjoxMH0"
},
"usage": {
"credits_spent": 1,
"balance": 656,
"bytes": 0
}
}Every TikTok endpoint
Frequently asked questions
- How do I list a TikTok creator's videos?
- POST the profile URL (tiktok.com/@user) as channel with a limit. The platform is read from the URL. Keep sending data.next_cursor back as cursor for older videos until it is null.
- Does this need a TikTok developer account?
- No. It is TranscriptFetch's own endpoint, called with your TranscriptFetch API key. One page costs 1 credit.
- How do I get notified of a creator's new TikToks?
- Poll with since_video_id set to the newest videoId you have seen: only newer videos come back and an empty page is free. Or create a monitor on the profile and receive each new video, optionally with its transcript, by webhook.
- Can I sort or search within a TikTok profile?
- No. sort, query and tab are YouTube channel options and are refused on TikTok. Videos come back newest first; filter or sort the rows on your side.