Twitch API
Channel profiles with live status and linked socials, a channel's VODs, its stream schedule, and clips resolved to directly downloadable MP4 urls — each one a single POST returning structured JSON. No app registration, no OAuth.
50 free credits on signup. No card, no Twitch developer app.
{ "data": { "id": "37402112", "login": "shroud", "display_name": "shroud", "description": "I'm back baby", "created_at": "2012-11-03T15:50:32.87847Z", "profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/c754eebf-745b-4e0a-814a-10bcaecaabbc-profile_image-300x300.png", "banner_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/dbee25e8-55b7-4565-87f0-e9d4661dcc66-profile_banner-480.jpeg", "primary_color_hex": "00ADFF", "is_partner": true, "is_affiliate": false, "follower_count": 11288357, "social_media": [ { "name": "discord", "title": "Discord", "url": "https://discord.gg/shroud" }, { "name": "youtube", "title": "YouTube", "url": "https://youtube.com/shroud" } ], "is_live": false, "stream": null, "last_broadcast": { "started_at": "2026-08-22T00:57:04.544458Z", "title": "doggin" } }, "response_time": 1208, "credits_used": 1, "credits_remaining": 4762}A real captured response from this endpoint. Sign up to run your own.
What is the Scavio Twitch API?
The Scavio Twitch API is a REST API that returns public Twitch data as structured JSON. You send a channel handle, clip slug or Twitch URL to one of 4 POST endpoints with your API key, and get back channel profile data with live status, a channel's VODs, its stream schedule, or clip metadata with directly downloadable MP4 source urls.
- 4
- endpoints, all live in production
- 1
- credit per call, every endpoint
- MP4
- clip source urls, ready to download
The four you'll reach for first
Profile tells you who and whether they're live, clip hands you a downloadable file, videos and schedule cover the catalogue and what's next.
Profile
POST /api/v1/twitch/profileAny channel by handle or URL: bio, avatar, banner, follower count, partner and affiliate flags, whether it is live right now, and every social link — in one call.
Clip
POST /api/v1/twitch/clipA clip resolved to its metadata and its directly downloadable MP4 source urls at 1080, 720, 480 and 360 — the piece an official-token integration will not hand you.
Videos (VODs)
POST /api/v1/twitch/user/videosA channel's latest VODs with duration, view count, game and thumbnail — filterable by type and sortable by time or views, up to 100 in a single call.
Schedule
POST /api/v1/twitch/user/scheduleThe next scheduled segment and every upcoming slot with start, end, title and categories — so you know what a channel is streaming before it goes live.
All 4 Twitch endpoints
Every route is a POST, returns JSON, and takes the same API key. 1 credit per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Profile/api/v1/twitch/profile | Channel by handle or URL — id, display name, bio, avatar, banner, partner/affiliate flags, follower count, linked socials, live status and the current stream | 1 |
Videos (VODs)/api/v1/twitch/user/videos | A channel's latest VODs — id, title, duration, view count, publish date, game and thumbnail; filter by type and sort by time or views | 1 |
Schedule/api/v1/twitch/user/schedule | A channel's stream schedule — the next segment and every upcoming slot with start, end, title and categories | 1 |
Clip/api/v1/twitch/clip | One clip by slug or URL — title, views, duration, curator, broadcaster, game, thumbnail and directly downloadable MP4 source urls at 1080/720/480/360 | 1 |
50 free credits on signup covers 50 calls of any kind. See plans
Resolve a channel, then grab a clip's MP4
Read live status, follower count and socials from a handle, then turn a clip into a downloadable file. The response on the right is a real capture, field names and all.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Resolve a channel: is it live, how many followers, which socials
p = client.twitch.profile(handle="shroud")["data"]
print(p["display_name"], p["follower_count"], "live:", p["is_live"])
for s in p["social_media"]:
print(s["title"], s["url"])
# Resolve a clip to a downloadable MP4
clip = client.twitch.clip(clip="DeliciousDelightfulPicklesWOOP")["data"]
best = clip["qualities"][0]
print(clip["title"], best["quality"], best["source_url"]){
"data": {
"id": "37402112",
"login": "shroud",
"display_name": "shroud",
"description": "I'm back baby",
"created_at": "2012-11-03T15:50:32.87847Z",
"profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/c754eebf-745b-4e0a-814a-10bcaecaabbc-profile_image-300x300.png",
"banner_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/dbee25e8-55b7-4565-87f0-e9d4661dcc66-profile_banner-480.jpeg",
"primary_color_hex": "00ADFF",
"is_partner": true,
"is_affiliate": false,
"follower_count": 11288357,
"social_media": [
{ "name": "discord", "title": "Discord", "url": "https://discord.gg/shroud" },
{ "name": "youtube", "title": "YouTube", "url": "https://youtube.com/shroud" }
],
"is_live": false,
"stream": null,
"last_broadcast": {
"started_at": "2026-08-22T00:57:04.544458Z",
"title": "doggin"
}
},
"response_time": 1208,
"credits_used": 1,
"credits_remaining": 4762
}Why not Twitch's official Helix API?
It exists, and it is built for authorising an app against your own account — not for reading everyone else's channels and clips.
Twitch Helix API
- Requires a registered application and an OAuth token before you can call anything
- No plain field for a clip's downloadable MP4 — you get metadata, not a file
- Does not expose a channel's linked social accounts as data
- Tokens to issue, refresh and rotate, with per-app rate limits to manage
Scavio Twitch API
- One API key, issued at signup — no app, no OAuth, no token rotation
- Clips resolve to directly downloadable MP4 source urls at four qualities
- Profiles carry live status, follower count and every linked social
- Same key and JSON envelope as 30 other Scavio platforms
Scavio returns publicly available data only, and never authenticates as a Twitch user.
What developers build with it
Clip downloading and reposting
Turn any clip slug or URL into a directly downloadable MP4 at 1080, 720, 480 or 360. The source urls come back ready to fetch, so a clips-to-Shorts or highlight pipeline is one call plus a download.
clipCreator and channel intelligence
Resolve any handle to follower count, partner and affiliate status, linked socials and whether it is live right now — profile a roster of streamers for sponsorship, casting or competitive analysis.
profileLive-status monitoring and alerts
Poll a set of channels on a schedule and read is_live with the current stream's game, title and viewer count, so a bot, dashboard or alert fires the moment a channel goes live.
profileVOD catalogues and content archives
Pull a channel's latest VODs with duration, view count, game and thumbnail, sorted by views or by time, to build a searchable archive or seed a content-recommendation feed.
user/videosSchedule and appointment feeds
Read a channel's next segment and every upcoming slot with start, end, title and categories, to power a countdown, a reminder bot or an aggregated stream calendar.
user/scheduleAgent tools for live media
Point an agent at the MCP server and Twitch becomes a callable tool — who is this streamer, are they live, grab this clip — with one key and the same JSON envelope as every other platform.
MCP + RESTHow to get Twitch data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no Twitch developer application or OAuth flow.
- 2
POST a handle, clip or URL
Send {"handle": "shroud"} to https://api.scavio.dev/api/v1/twitch/profile with an Authorization: Bearer header. All four endpoints are POSTs and take a channel handle, a clip slug, or a full Twitch URL.
- 3
Read the JSON
The response wraps the payload under data, plus credits_used and credits_remaining. Videos carry total_count and a cursor; clips carry a qualities array whose source_url values are downloadable MP4s.
Twitch API FAQ
What is the Scavio Twitch API?
+
It is a REST API that returns public Twitch data as structured JSON. Four POST endpoints cover channel profiles, a channel's VODs, a channel's stream schedule, and clip metadata with downloadable MP4 source urls. You authenticate with a Scavio API key and never register a Twitch app or run an OAuth flow.
Can I download a Twitch clip's MP4 with this?
+
Yes, and it is the main reason to use this API. The clip endpoint returns a qualities array where each entry carries a source_url that is a directly downloadable MP4 at 1080, 720, 480 or 360. Pass a clip slug or any clip URL, take the source_url of the quality you want, and fetch it — no extra signing step on your side.
How is this different from Twitch's official Helix API?
+
Twitch's official API requires you to register an application and manage OAuth tokens before you can call anything, and even then it does not hand you a clip's downloadable MP4, a channel's linked social accounts, or a clean single-call live status the way this does. Scavio needs no app and no token management: sign up, take the key, POST a handle or a clip.
Can I tell if a channel is live?
+
Yes. The profile endpoint returns is_live, and when the channel is live the stream object carries the type, viewer_count, game_name, title and started_at. When it is offline, stream is null and last_broadcast gives the title and start time of the previous broadcast.
Do profiles include a channel's other social accounts?
+
Yes. The profile response includes a social_media array where each entry has a name, a title and a url — the Discord, Twitter, YouTube, Instagram and other links a channel has added. This is data an official-token integration does not expose as a plain field.
How many VODs can I get, and can I paginate?
+
The videos endpoint returns up to 100 of a channel's latest VODs in a single call, filterable by type (archive, highlight, upload, past premiere) and sortable by time or views, along with a total_count. Page-one covers the full catalogue of any channel with 100 or fewer VODs of a type; for very large channels the first 100 are the reliable window, so build against that rather than assuming unlimited deep pagination.
What does a follower count look like, and are total views available?
+
The profile endpoint returns follower_count as an integer. Twitch retired the channel total-view-count metric in 2022, so it is not available from any source; report follower_count as the headline audience number.
How much does a Twitch request cost?
+
Every Twitch endpoint costs 1 credit per successful call — profile, videos, schedule and clip alike. Calls that fail are not billed. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
What input does each endpoint take?
+
Profile, videos and schedule take a channel handle or a full twitch.tv URL. The clip endpoint takes a clip slug or any clip URL (clips.twitch.tv/slug or twitch.tv/channel/clip/slug). Every route is a POST that accepts the identifier in a JSON body.
Which languages and tools are supported?
+
Official Python (pip install scavio) and JavaScript/TypeScript (npm i scavio) SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node. Any language can call the REST endpoints directly with an HTTP client.
Is using Twitch data this way legal?
+
Scavio returns publicly available channel, video, schedule and clip data and does not access private account data or authenticate as a user. You remain responsible for how you use the data, including compliance with Twitch's terms and with copyright and privacy law. Talk to your own counsel for your specific use case.
Explore more of Scavio
YouTube API
Search, video, channel, comments and transcripts.
TikTok API
Profiles, videos, search and downloadable media.
Instagram API
Profiles, posts, reels and hashtags as JSON.
X (Twitter) API
Users, tweets, search and followers.
MCP server
Every platform as a callable tool for agents.
Pricing
Credit packs and plans, no per-platform surcharge.
Start pulling Twitch data today
50 free credits on signup, no card. Your first request is a POST with a channel handle in it.