Twitch APItwitch.tv ↗
Access Twitch streamer profiles, search channels, and browse live streams by category. Get followers, partner status, viewer counts, and stream tags.
What is the Twitch API?
This API exposes 3 endpoints covering Twitch streamer profiles, channel search, and live stream discovery. The get_streamer_profile endpoint returns over 10 fields per channel including follower count, partner/affiliate status, social links, and real-time stream info when the user is live. search_streamers lets you query across channel names and game names, while get_live_streams supports filtering by category slug and pagination via cursor.
curl -X GET 'https://api.parse.bot/scraper/58a628f7-dce2-4ee3-9adc-7acd8397acd9/get_streamer_profile?username=ninja' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace twitch-tv-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Twitch Streamer Profiles API — discover streamers, browse live streams."""
from parse_apis.twitch_streamer_profiles_api import Twitch, Sort, NotFoundError
client = Twitch()
# Get a specific streamer's full profile by username.
streamer = client.streamers.get(username="ninja")
print(streamer.display_name, streamer.followers_count, streamer.is_partner)
# Search for streamers matching a query; limit caps total items fetched.
for summary in client.streamers.search(query="valorant", limit=3):
print(summary.display_name, summary.followers_count, summary.is_live)
# Drill into a search result's full profile via .details().
first = client.streamers.search(query="minecraft", limit=1).first()
if first:
full = first.details()
print(full.display_name, full.description, full.is_affiliate)
# Browse live streams in a category sorted by viewer count.
for stream in client.streams.list(category="just-chatting", sort=Sort.VIEWER_COUNT, limit=3):
print(stream.title, stream.viewers_count, stream.broadcaster.display_name)
# Typed error handling for a non-existent streamer.
try:
client.streamers.get(username="thisuserdoesnotexist99999")
except NotFoundError as exc:
print(f"not found: {exc}")
print("exercised: streamers.get / streamers.search / details / streams.list")Get detailed profile information for a Twitch streamer including followers, description, partner status, social links, and current live stream details if streaming. Returns null for stream when offline and populates last_broadcast with the most recent game played.
| Param | Type | Description |
|---|---|---|
| usernamerequired | string | Twitch username/login (e.g., 'ninja', 'shroud') |
{
"type": "object",
"fields": {
"id": "string - Twitch user ID",
"login": "string - lowercase login name",
"stream": "object|null - current stream info (id, viewers_count, started_at, game) when live",
"is_live": "boolean - whether currently streaming",
"is_partner": "boolean - whether the streamer is a Twitch partner",
"description": "string|null - channel description",
"display_name": "string - display name with original casing",
"is_affiliate": "boolean - whether the streamer is a Twitch affiliate",
"social_links": "array|null - array of social media link objects with name, title, url",
"last_broadcast": "object|null - last broadcast info (game) when offline",
"followers_count": "integer|null - total follower count",
"banner_image_url": "string|null - URL to banner image",
"primary_color_hex": "string|null - hex color code without hash",
"profile_image_url": "string - URL to profile image"
}
}About the Twitch API
Streamer Profiles
The get_streamer_profile endpoint accepts a Twitch username (login) and returns a full channel record. When the streamer is live, the stream object includes viewers_count, started_at, and the current game. When offline, stream is null and last_broadcast is populated with the most recent game played. Additional fields cover is_partner, is_affiliate, description, display_name, and social_links — an array of objects with name, title, and url for each linked external profile.
Channel Search
search_streamers takes a query string and matches against channel names, stream titles, and game names. Each result in the channels array includes id, login, display_name, profile_image_url, is_live, followers_count, is_partner, and description. The total field tells you how many channels matched the query.
Live Stream Discovery
get_live_streams returns currently active streams. Filter by category using a game or category slug such as just-chatting, fortnite, or pokemon-pokopia. The limit parameter accepts 1–100. Each stream object in the streams array includes title, viewers_count, started_at, broadcaster, game, tags, and type. Use the cursor field from each response to request the next page; has_next_page tells you whether more results exist.
The Twitch API is a managed, monitored endpoint for twitch.tv — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when twitch.tv changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official twitch.tv API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track whether a specific streamer is live and how many viewers they currently have using
is_liveandstream.viewers_count - Build a streamer directory by searching for channels in a genre and ranking by
followers_count - Monitor category leaderboards by pulling top live streams in a game with
get_live_streamsfiltered by category slug - Check partner and affiliate status across a list of creators to qualify influencer outreach candidates
- Aggregate social media links from
social_linksto map a streamer's cross-platform presence - Track what game a streamer last played when offline via the
last_broadcast.gamefield - Paginate through all live streams in a category using the
cursorandhas_next_pagefields for bulk data collection
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Twitch have an official developer API?+
What does `get_streamer_profile` return when a streamer is offline?+
is_live is false, stream is null, and last_broadcast is populated with an object containing the most recent game they streamed. Static profile fields like description, social_links, is_partner, and is_affiliate are always returned regardless of live status.Can I retrieve historical VODs or past broadcast recordings?+
How does pagination work with `get_live_streams`?+
get_live_streams includes a cursor string and a has_next_page boolean. Pass the cursor value in your next request to retrieve the following page of results. When has_next_page is false, you have reached the end of the result set.Does the API return subscriber counts or subscription tier data?+
followers_count for channel search results and is_partner/is_affiliate status on profile endpoints. Subscription data is not covered. You can fork this API on Parse and revise it to surface additional monetization fields if Twitch exposes them.