Body parameters
YouTube: @handle, /channel/UC… URL, or UC… ID. TikTok: profile URL (tiktok.com/@user). Instagram: profile URL (instagram.com/user/).
YouTube channels only. Which tab to list: videos (the default), shorts, or live (streams: past broadcasts and upcoming ones). playlists and podcasts list the channel's playlists instead of its videos: data.kind is playlist_list, and each row's url is accepted by the playlist endpoint. A tab the channel does not have (live on a channel that has never streamed, say) answers 200 with an empty list, which is free, and a notice such as "This channel has no Live tab."
YouTube channels only. Order of the videos, shorts or live tab: newest (the default), popular or oldest. popular is YouTube's own Popular order, most viewed first, and it leaves out videos with no views. Not accepted with the playlists and podcasts tabs.
YouTube channels only. Search inside this channel: the page holds its videos that match, rather than its latest uploads. Leave tab and sort unset.
Max items to return per page: videos, or the playlists or channels some listing options return. Defaults to 5.
Opaque pagination cursor from a previous response's next_cursor (max 256 characters). Omit for the first page. Cursors are scoped to the listing that issued them, so send the same platform and listing options with each page. Offset-based sources cannot page past the first 2000 items.
Newest video ID you have already seen. The response is trimmed to videos newer than it. A poll with since_video_id is a check for new uploads and costs 1 credit whether or not it finds any (a plain listing that comes back empty stays free). It needs newest-first videos: on a YouTube channel, the videos, shorts or live tab with the default sort and no query.
{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "video_list",
"source": "channel_videos",
"platform": "instagram",
"videos": [
{
"videoId": "Dd1gQBsCWE8",
"url": "https://www.instagram.com/reel/Dd1gQBsCWE8/",
"title": "What happens when we detect an asteroid that could pose a threat to Earth?\n\nIn early 2025, NASA joined scientists around the world in tracking asteroid 2024 YR4, which had a small chance of impacting ",
"duration": 38,
"channel": "nasa",
"publishedAt": "2026-09-28T15:27:08Z",
"stats": {
"plays": 4661792
}
},
{
"videoId": "DdhFkS7KGkZ",
"url": "https://www.instagram.com/reel/DdhFkS7KGkZ/",
"title": "Our first Leader of the Uprising 🔥\n\nTune in on @paramountplus / @nfloncbs",
"duration": 23,
"channel": "nasa",
"publishedAt": "2026-09-20T17:20:00Z",
"stats": {
"plays": 7201293
}
}
],
"next_cursor": "eyJvIjoxMH0"
},
"usage": {
"credits_spent": 1,
"balance": 656,
"bytes": 0
}
}Every Instagram endpoint
- POSTTranscriptFetch an Instagram Reel's transcript over REST: the request, every parameter, a real Reel response from AI Fallback Transcription with timestamped segments, and curl, Python and Node examples.
- POSTSearchSearch Instagram Reels by keyword over REST: the request, the platform parameter, a real Instagram response with play counts, and curl, Python and Node examples.
- POSTProfile ReelsList an Instagram account's Reels over REST without the Graph API: the request with a profile URL, since_video_id polling, a real response with play counts, and curl, Python and Node examples.
- POSTProfile MonitorWatch an Instagram account for new Reels over REST: create a monitor on a profile URL, receive each new Reel by signed webhook or from the events list, optionally with its transcript, with curl, Python and Node examples.
Frequently asked questions
How do I list an Instagram account's Reels?
POST the profile URL (instagram.com/user/) as channel with a limit. The platform is read from the URL. Keep sending data.next_cursor back as cursor for older Reels until it is null.
Does this replace the Instagram Graph API?
For reading a public account's Reels, yes: no Meta app, app review, access token or business account, only your TranscriptFetch API key. One page costs 1 credit.
Can I list a private account?
No. Only public profiles are reachable. A private or nonexistent profile answers 404 not_found and costs nothing.
How do I transcribe the Reels the list returns?
Send the rows' urls to the batch endpoint. Instagram has no caption track, so each Reel goes to AI Fallback Transcription, billed on delivery at its rate; a short Reel is one credit.