Twitch ALL IN ONE URL | Search | Streams, VODs, Clips Scraper avatar

Twitch ALL IN ONE URL | Search | Streams, VODs, Clips Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Twitch ALL IN ONE URL | Search | Streams, VODs, Clips Scraper

Twitch ALL IN ONE URL | Search | Streams, VODs, Clips Scraper

From $1/1K. Scrape Twitch data at scale, including channels, live streams, clips, VODs, and top games. Extract HLS m3u8 stream URLs, clip MP4 downloads in multiple qualities, chapter markers, and metadata. Supports keyword search with rich, analytics-ready output.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

AbotAPI

AbotAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Twitch Scraper

Pull rich, structured data from Twitch.tv at scale: channel profiles, live streams in any game/category, clips with direct MP4 download URLs, VODs with chapter markers, top games, and unified keyword search. Returns playable HLS m3u8 stream URLs and clip MP4 download URLs (multiple qualities), features rarely available elsewhere.

Why this scraper?

  • Nine modes in one actor: channel, live streams, game streams, top games, search, clips, videos (VODs), VOD metadata, and a free-form URL mode that auto-detects what you paste.
  • Direct media URLs as a default field. Each live stream record carries a ready-to-play HLS playlist URL. Each clip record carries 1080p / 720p / 480p / 360p MP4 download URLs.
  • Resilient query path: raw GraphQL strings, not persisted-query SHA hashes (which Twitch rotates without notice). Survives upstream changes that would otherwise break a fixed-hash scraper.
  • Multi-tier session bootstrap with automatic failover: when the upstream edge tightens, the actor refreshes its session through alternate channels rather than stopping cold.
  • Lightweight runtime, ~512 MB peak memory, with per-call work amortised across many records per session.
  • Pricing is set on the actor's Apify Store page; volume discounts apply on paid plans.

Data you get

Sample shape, values are illustrative placeholders, not from a live record.

FieldExampleNotes
recordTypelive_streamOne of: channel, live_stream, game, clip, video, vod_metadata, search_channel, search_game
id00000000Twitch internal ID
loginexampleloginURL-safe username
displayNameExample DisplayUser-set display name
urlhttps://www.twitch.tv/exampleloginCanonical channel/category/video URL
titleSample stream titleLive stream title or VOD title
viewersCount12345Concurrent viewers (live)
viewCount54321Total views (clips, VODs)
followersCount100000Channel followers
gameNameSample GameGame / category name
gameSlugsample-gameURL slug for the category
gameId000000Game ID
languageenISO 639-1
createdAt2026-01-01T00:00:00ZStream / clip / VOD start
thumbnailUrlhttps://static-cdn.jtvnw.net/.../000000.jpgPreview image
profileImageUrlhttps://static-cdn.jtvnw.net/.../profile.pngAvatar
boxArtUrlhttps://static-cdn.jtvnw.net/ttv-boxart/000000-285x380.jpgGame cover art
isLivetrueWhether the channel is currently broadcasting
isPartnerfalseTwitch Partner status
isAffiliatetrueTwitch Affiliate status
streamHlsUrlhttps://usher.ttvnw.net/api/channel/hls/examplelogin.m3u8?sig=...&token=...Playable HLS playlist (live mode)
clipMp4Urls{ "1080": "https://.../1080.mp4", "720": "https://.../720.mp4" }Direct MP4 by quality (clips mode)
chapters[{ "type": "GAME_CHANGE", "positionMs": 0, "gameName": "Game A" }]Game-change markers (vod_metadata mode)
tags["English", "FPS"]Stream / video tags
socialMedias[{ "name": "twitter", "url": "https://twitter.com/example" }]Linked socials (channel mode)
scrapedAt2026-05-09T00:00:00.000ZUTC timestamp

How to use

Channel profile + clips + recent VODs

{
"mode": "channel",
"channels": ["shroud", "ninja", "pokimane"],
"includeMediaUrls": true,
"maxResults": 30
}

Live streams in a game (with playable HLS URLs)

{
"mode": "live_streams",
"gameSlug": "valorant",
"streamSort": "VIEWER_COUNT",
"includeMediaUrls": true,
"maxResults": 50,
"maxPages": 2
}

Top games right now

{
"mode": "top_games",
"maxResults": 100
}

Top clips per channel (with MP4 download URLs)

{
"mode": "clips",
"channels": ["xqc"],
"clipPeriod": "LAST_WEEK",
"includeMediaUrls": true,
"maxResults": 25
}
{
"mode": "search",
"searchQuery": "valorant",
"maxResults": 20
}

Recent VODs

{
"mode": "videos",
"channels": ["shroud"],
"maxResults": 20
}

VOD metadata with chapter markers

{
"mode": "vod_metadata",
"videoIds": ["2767213751"],
"includeMediaUrls": true
}

URL mode (paste any twitch.tv URL)

{
"mode": "url",
"urls": [
"https://www.twitch.tv/shroud",
"https://www.twitch.tv/directory/category/just-chatting",
"https://www.twitch.tv/videos/2767213751",
"https://www.twitch.tv/shroud/clip/TangentialBillowingJalapenoYee-ccA2oB1pEYh4CHWJ"
],
"maxResults": 50
}

Input parameters

ParameterTypeDefaultDescription
modestring enumchannelOne of: channel, live_streams, game_streams, top_games, search, clips, videos, vod_metadata, url
channelsstring[]["shroud"]Twitch logins (used by channel, clips, videos modes)
gameSlugstringvalorantCategory slug (used by live_streams and game_streams modes)
streamSortenumVIEWER_COUNTOne of: VIEWER_COUNT, RECENT, RELEVANCE
searchQuerystringvalorantFree-text query (used by search mode)
videoIdsstring[][]Numeric video IDs (used by vod_metadata mode)
clipPeriodenumLAST_WEEKOne of: LAST_DAY, LAST_WEEK, LAST_MONTH, ALL_TIME
urlsstring[][]Any twitch.tv URLs (used by url mode)
includeMediaUrlsbooleantrueWhen true, attach playable HLS m3u8 (live streams + VODs) and direct clip MP4 URLs
maxResultsinteger30Maximum records to push, 0 means unlimited up to maxPages cap
maxPagesinteger1Pages of results to walk for paginated modes (each page is ~30 items)
proxyConfigurationobjectApify DatacenterApify Residential US is recommended

Output example

Sample shape, values are illustrative placeholders, not from a live record.

{
"recordType": "live_stream",
"id": "000000000000",
"login": "examplelogin",
"displayName": "Example Display",
"url": "https://www.twitch.tv/examplelogin",
"title": "Sample stream title",
"viewersCount": 12345,
"createdAt": "2026-01-01T00:00:00Z",
"streamType": "live",
"gameName": "Sample Game",
"gameSlug": "sample-game",
"gameId": "000000",
"boxArtUrl": "https://static-cdn.jtvnw.net/ttv-boxart/000000-285x380.jpg",
"thumbnailUrl": "https://static-cdn.jtvnw.net/preview/0000.jpg",
"broadcasterId": "00000000",
"broadcasterDescription": "Sample broadcaster bio.",
"profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/0000-profile_image-70x70.png",
"isPartner": true,
"isAffiliate": false,
"followersCount": 100000,
"tags": ["English", "FPS"],
"streamHlsUrl": "https://usher.ttvnw.net/api/channel/hls/examplelogin.m3u8?sig=0000&token=%7B...%7D",
"scrapedAt": "2026-05-09T00:00:00.000Z"
}

For very large pulls (over 10,000 records) we recommend Apify Residential and setting maxPages to at least 3 per mode (or 0 for unlimited) to give the actor enough room to paginate.