Social Media

Twitch API

The Twitch API returns streaming data as clean JSON.

13 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary channel endpoint returns a channel's id, login, display name, description, creation date, images and follower count, and you can pull a live stream, videos, clips, search channels and categories, and top games. It is built for streaming analytics and esports tools that need Twitch data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, channel, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/twitch/v1/channel",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "login": "shroud"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "twitch",
    "endpoint": "channel",
    "mode": "live",
    "latency_ms": 818.1,
    "record_count": 1,
    "bytes": 624,
    "cache_hit": false,
    "method": "graphql"
  },
  "data": {
    "channel": {
      "id": "37402112",
      "login": "shroud",
      "display_name": "shroud",
      "description": "I'm back baby",
      "created_at": "[redacted-phone]T15:50:32.87847Z",
      "profile_image": "https://static-cdn.jtvnw.net/jtv_user_pictures/c754eebf-745b-4e0a-814a-10bcaecaabbc-profile_image-300x300.png",
      "banner_image": "https://static-cdn.jtvnw.net/jtv_user_pictures/dbee25e8-55b[redacted-phone]f0-e9d4661dcc66-profile_banner-480.jpeg",
      "follower_count": 11297586,
      "is_partner": true,
      "is_affiliate": false,
      "is_staff": null,
      "primary_color": "00ADFF",
      "is_live": false,
      "stream": null,
      "url": "https://www.twitch.tv/shroud"
    }
  }
}
Actions

What the Twitch API does

ActionDescriptionConcrete use caseKey params
channelFull channel/user profile by login: id, display name, description, created-at, profile and banner image, follower count, partner/affiliate/staff flags, and the current live stream (title, viewer count, game/category, started-at) if live.Ops teams call channel to get full channel/user profile by login.login
streamLive status of a channel: whether it is live right now and, if so, the stream id, title, viewer count, game/category, started-at timestamp and a 1080p thumbnail. Returns is_live=false (honest-empty) for an offline channel.Developer tools call stream to get live status of a channel.login
videosA channel's past broadcasts / VODs (most recent first), up to 100 in one page: id, title, duration, view count, published-at, game/category and thumbnail. Note: Twitch integrity-gates pagination beyond the first page for keyless access.Validation workflows call videos to get a channel's past broadcasts / VODs (most recent first), up to 100 in one page.login, limit, type, sort
clipsTop clips of a channel, ranked by views, up to 100 in one page: id, slug, title, view count, created-at, duration, game/category, the clip creator and the clip URL. Filter the time window with `period`. Pagination beyond page one is integrity-gated.Data-quality teams call clips to get top clips of a channel, ranked by views, up to 100 in one page.login, limit, period
search_channelsSearch Twitch channels by name/keyword. Returns matching channels with id, login, display name, description, follower count, partner/affiliate flags and live status (viewer count + game when live).Ops teams call search_channels to search Twitch channels by name/keyword.query, limit
search_categoriesSearch Twitch games/categories by name. Returns matching categories with id, name, display name, current live viewer count and box-art image.Developer tools call search_categories to search Twitch games/categories by name.query, limit
top_gamesThe top games/categories on Twitch right now, ranked by live viewers: id, name, display name, current viewer count, content tags and box-art image. Up to 30.Validation workflows call top_games to get the top games/categories on Twitch right now, ranked by live viewers.limit
top_streamsThe top live streams on Twitch right now, ranked by viewers: stream id, title, viewer count, started-at, the broadcasting channel (login, display name) and the game/category. Up to 30.Data-quality teams call top_streams to get the top live streams on Twitch right now, ranked by viewers.limit
gameGame/category detail by name plus its top live streams: category id, display name, total live viewers, description, avatar — and the top channels (up to 30) currently streaming it, each with title, viewer count and broadcaster.Ops teams call game to get game/category detail by name plus its top live streams.name, limit
scheduleA channel's stream schedule: the next upcoming stream (start, title, category) plus the channel's recurring weekly schedule segments — each with start/end time, title, cancelled flag and the planned game/category. Returns honest-empty when the channel has not published a schedule.Developer tools call schedule to get a channel's stream schedule.login
game_clipsTop clips for a whole game/category (site-wide, across all channels), ranked by views, up to 100 in one page: id, slug, title, view count, created-at, duration, the broadcaster the clip is from, the clip creator and the URL. Filter the time window with `period`. Pagination beyond page one is integrity-gated.Validation workflows call game_clips to get top clips for a whole game/category (site-wide, across all channels), ranked by views, up to….name, limit, period
game_videosTop past broadcasts / VODs for a whole game/category (site-wide, across all channels), up to 100 in one page: id, title, duration, view count, published-at, the owning channel and a thumbnail. Order by views (default) or newest. Pagination beyond page one is integrity-gated.Data-quality teams call game_videos to get top past broadcasts / VODs for a whole game/category (site-wide, across all channels), up to….name, limit, sort
teamA Twitch team profile by name plus its member channels: team id, name, display name, description, logo/banner image — and the member channels (up to 100), each with login, display name, partner/affiliate status and current live status (viewer count + game when live).Ops teams call team to get a Twitch team profile by name plus its member channels.name, limit
Code samples

Call channel from your stack

curl -X POST https://api.reefapi.com/twitch/v1/channel \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"login":"shroud"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.twitch.channel with {"login":"shroud"}.
Use cases

Who uses this API and why

  • Streaming analytics call channel and stream to track a streamer's status and audience.
  • Esports tools use top_games and clips to follow trends.
  • Discovery uses search_channels and search_categories to find creators.
FAQ

Questions developers ask before integrating

What is the Twitch API?

Twitch API is a ReefAPI endpoint group for twitch It returns live JSON through POST requests under /twitch/v1.

Is the Twitch API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Twitch calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Twitch login or account?

No login to Twitch is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Twitch data?

The page example is captured from a live channel call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Twitch API use?

Twitch actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Twitch from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call twitch actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Twitch API a Twitch scraper?

It is the managed alternative to a DIY Twitch scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same twitch back as clean JSON.

Why does my Twitch scraper keep getting blocked?

Most Twitch scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / twitch

Twitch

Twitch

base /twitch/v113 endpoints
post/twitch/v1/channel1 credit

Full channel/user profile by login: id, display name, description, created-at, profile and banner image, follower count, partner/affiliate/staff flags, and the current live stream (title, viewer count, game/category, started-at) if live.

ParameterAllowed / rangeDescription
loginrequiredTwitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.
Try in playground →
post/twitch/v1/stream1 credit

Live status of a channel: whether it is live right now and, if so, the stream id, title, viewer count, game/category, started-at timestamp and a 1080p thumbnail. Returns is_live=false (honest-empty) for an offline channel.

ParameterAllowed / rangeDescription
loginrequiredTwitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.
Try in playground →
post/twitch/v1/videos1 credit

A channel's past broadcasts / VODs (most recent first), up to 100 in one page: id, title, duration, view count, published-at, game/category and thumbnail. Note: Twitch integrity-gates pagination beyond the first page for keyless access.

ParameterAllowed / rangeDescription
loginrequiredTwitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.
limit = 20optional1–100How many VODs to return (1-100, single page).
type = ARCHIVEoptionalARCHIVE · HIGHLIGHT · UPLOAD · ALLWhich kind of videos: ARCHIVE (past broadcasts, default), HIGHLIGHT, UPLOAD or ALL.
sort = TIMEoptionalTIME · VIEWSOrder: TIME (newest first, default) or VIEWS (most viewed).
Try in playground →
post/twitch/v1/clips1 credit

Top clips of a channel, ranked by views, up to 100 in one page: id, slug, title, view count, created-at, duration, game/category, the clip creator and the clip URL. Filter the time window with `period`. Pagination beyond page one is integrity-gated.

ParameterAllowed / rangeDescription
loginrequiredTwitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.
limit = 20optional1–100How many clips to return (1-100).
period = LAST_WEEKoptionalLAST_DAY · LAST_WEEK · LAST_MONTH · ALL_TIMETime window for top clips: LAST_DAY, LAST_WEEK (default), LAST_MONTH or ALL_TIME.
Try in playground →
post/twitch/v1/search_channels1 credit

Search Twitch channels by name/keyword. Returns matching channels with id, login, display name, description, follower count, partner/affiliate flags and live status (viewer count + game when live).

ParameterAllowed / rangeDescription
queryrequiredFree-text search term.
limit = 10optional1–30Max channels to return (1-30).
Try in playground →
post/twitch/v1/search_categories1 credit

Search Twitch games/categories by name. Returns matching categories with id, name, display name, current live viewer count and box-art image.

ParameterAllowed / rangeDescription
queryrequiredFree-text search term.
limit = 10optional1–30Max categories to return (1-30).
Try in playground →
post/twitch/v1/top_games1 credit

The top games/categories on Twitch right now, ranked by live viewers: id, name, display name, current viewer count, content tags and box-art image. Up to 30.

ParameterAllowed / rangeDescription
limit = 20optional1–30How many top games to return (1-30).
Try in playground →
post/twitch/v1/top_streams1 credit

The top live streams on Twitch right now, ranked by viewers: stream id, title, viewer count, started-at, the broadcasting channel (login, display name) and the game/category. Up to 30.

ParameterAllowed / rangeDescription
limit = 20optional1–30How many top streams to return (1-30).
Try in playground →
post/twitch/v1/game1 credit

Game/category detail by name plus its top live streams: category id, display name, total live viewers, description, avatar — and the top channels (up to 30) currently streaming it, each with title, viewer count and broadcaster.

ParameterAllowed / rangeDescription
namerequiredExact game/category name as Twitch lists it (e.g. 'VALORANT', 'Just Chatting', 'Counter-Strike'). Use search_categories to resolve a fuzzy name first.
limit = 20optional1–30How many of the game's top live streams to return (1-30).
Try in playground →
post/twitch/v1/schedule1 credit

A channel's stream schedule: the next upcoming stream (start, title, category) plus the channel's recurring weekly schedule segments — each with start/end time, title, cancelled flag and the planned game/category. Returns honest-empty when the channel has not published a schedule.

ParameterAllowed / rangeDescription
loginrequiredTwitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.
Try in playground →
post/twitch/v1/game_clips1 credit

Top clips for a whole game/category (site-wide, across all channels), ranked by views, up to 100 in one page: id, slug, title, view count, created-at, duration, the broadcaster the clip is from, the clip creator and the URL. Filter the time window with `period`. Pagination beyond page one is integrity-gated.

ParameterAllowed / rangeDescription
namerequiredExact game/category name as Twitch lists it (e.g. 'VALORANT', 'Just Chatting', 'Counter-Strike'). Use search_categories to resolve a fuzzy name first.
limit = 20optional1–100How many clips to return (1-100).
period = LAST_WEEKoptionalLAST_DAY · LAST_WEEK · LAST_MONTH · ALL_TIMETime window for top clips: LAST_DAY, LAST_WEEK (default), LAST_MONTH or ALL_TIME.
Try in playground →
post/twitch/v1/game_videos1 credit

Top past broadcasts / VODs for a whole game/category (site-wide, across all channels), up to 100 in one page: id, title, duration, view count, published-at, the owning channel and a thumbnail. Order by views (default) or newest. Pagination beyond page one is integrity-gated.

ParameterAllowed / rangeDescription
namerequiredExact game/category name as Twitch lists it (e.g. 'VALORANT', 'Just Chatting', 'Counter-Strike'). Use search_categories to resolve a fuzzy name first.
limit = 20optional1–100How many VODs to return (1-100).
sort = VIEWSoptionalVIEWS · TIMEOrder: VIEWS (most viewed, default) or TIME (newest first).
Try in playground →
post/twitch/v1/team1 credit

A Twitch team profile by name plus its member channels: team id, name, display name, description, logo/banner image — and the member channels (up to 100), each with login, display name, partner/affiliate status and current live status (viewer count + game when live).

ParameterAllowed / rangeDescription
namerequiredTwitch team name/slug (lowercase, as in the team page URL twitch.tv/team/<name> — e.g. 'tsm', 'fnatic', 'cloud9').
limit = 25optional1–100Max member channels to return (1-100).
Try in playground →