Twitch
Twitch streamer profiles, past videos, clip details, and published stream schedules through one unified API
Twitch streamer profiles, a channel's videos and highlights, individual clip details, and the schedule a streamer has published. Every endpoint is a GET and costs 1 credit.
Base URL: /v1/twitch/...
user/videos returns one fixed set of up to 100 rows and that is the whole
result. There is no cursor and nothing to page, so use filter_by and
sort_by to make those 100 the right 100 rather than expecting to walk a full
history.
Quickstart
1. Fetch a profile
curl "https://www.socialcrawl.dev/v1/twitch/profile?handle=ninja" \
-H "x-api-key: YOUR_API_KEY"2. Fetch their content
curl "https://www.socialcrawl.dev/v1/twitch/user/videos?handle=ninja&sort_by=VIEWS" \
-H "x-api-key: YOUR_API_KEY"3. Read computed fields
When an endpoint supports a computed field and the required source inputs are present, the unified response includes that optional field. Depending on the endpoint, optional fields can include engagement_rate, language, content_category, and estimated_reach. See Computed fields for formulas, clamping rules, and null semantics. Where an endpoint supports them, list rows also carry judged labels (computed.labels, computed.relevance) by default at no extra credits; see Labels.
Channels
| Endpoint | Credits | What it returns | Key parameters |
|---|---|---|---|
GET /v1/twitch/profile | 1 | Display name, follower count, bio, profile image, broadcast language, partner status | handle |
GET /v1/twitch/user/videos | 1 | Up to 100 videos: title, URL, view count, duration, language, game, thumbnail, qualities | handle, filter_by, sort_by |
GET /v1/twitch/user/schedule | 1 | Each schedule segment's start and end time, title, categories, and cancellation flags | handle |
filter_by picks the kind, HIGHLIGHT or UPLOAD, and sort_by is TIME for newest first or VIEWS. Both enums are uppercase.
Archived past broadcasts are not among them. filter_by=ARCHIVE is rejected before billing because the upstream deterministically fails it, so HIGHLIGHT and UPLOAD are what exists.
curl "https://www.socialcrawl.dev/v1/twitch/user/schedule?handle=kaicenat" \
-H "x-api-key: YOUR_API_KEY"Clips
| Endpoint | Credits | What it returns | Key parameters |
|---|---|---|---|
GET /v1/twitch/clip | 1 | Title, view count, duration, creator and broadcaster names, game, thumbnail, creation time | url |
user/videos covers past broadcasts, clip covers one shared moment, and user/schedule covers what has not happened yet.
curl "https://www.socialcrawl.dev/v1/twitch/clip?url=https://www.twitch.tv/ninja/clip/ExampleClipSlug" \
-H "x-api-key: YOUR_API_KEY"All endpoints
4 endpoints available.
| Endpoint | Path | Credit Tier |
|---|---|---|
| Get Twitch clip details | /v1/twitch/clip | standard (1cr) |
| Get Twitch streamer profile | /v1/twitch/profile | standard (1cr) |
| Get a Twitch user's stream schedule | /v1/twitch/user/schedule | standard (1cr) |
| List a Twitch user's videos | /v1/twitch/user/videos | standard (1cr) |
Platform notes
channel.schedule is null when the streamer has not published one. Plenty of channels never fill it in, so treat a null schedule as normal rather than as an error. The call succeeds and returns nothing; do not branch on it failing.
Nothing on this platform paginates.
Identifiers split two ways. profile, user/videos, and user/schedule take a handle without the @; clip takes the clip url.
