Twitch Scraper
Pricing
$1.50 / 1,000 results
Twitch Scraper
Pay per result Twitch scraper with no login. Get channel profiles, live streams by game or language, top games, clips and VODs. Export to JSON, CSV or Excel.
Pricing
$1.50 / 1,000 results
Rating
0.0
(0)
Developer
Untitledpng
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Twitch Scraper do?
Twitch Scraper is an unofficial Twitch API that gets public data from Twitch with no login, no API key and no browser. It reads the same public endpoint the Twitch website uses, so it runs on 256 MB of memory and finishes in seconds.
Twitch Scraper allows you to:
- scrape channel profiles with follower count, partner and affiliate status, social links, next scheduled stream, recent videos and top clips.
- search channels by keyword and get thousands of profiles for one query.
- scrape live streams sorted by viewers, filtered by game, language or stream tag.
- get the top 100 games and categories with viewers, live channels and followers.
- scrape clips of a channel or a game for the last day, week, month or all time.
- scrape videos, past broadcasts (VODs), highlights and uploads of a channel.
- export everything to JSON, CSV, Excel or XML, or read it through the API.
What data can I extract from Twitch?
👤 Channel ID, login, display name and channel URL 📝 Channel description, language and creation date 🖼️ Profile image, banner image, offline image and brand color 👥 Follower count ⭐ Partner and affiliate status 🔴 Live status, current viewers, current game and stream title 🔗 Social links (Twitter/X, YouTube, Discord, Instagram and more) 📅 Next scheduled stream and last broadcast 🎮 Live streams with viewers, game, language, tags, start time, uptime and preview image 🏆 Top games with viewers, live channels, followers and box art 🎬 Clips with views, duration, curator, game and thumbnail 📼 Videos and VODs with views, length, type, game and thumbnail
How much will it cost to scrape Twitch?
Twitch Scraper costs $1.50 per 1,000 results. Every record in the dataset (a channel, a stream, a game, a clip or a video) counts as one result. Platform usage is included in this price and there is no start fee.
The free Apify plan gives you $5 in monthly credits, which is enough for about 3,300 results per month. If you scrape Twitch regularly, an Apify subscription gives you more credits and longer data retention.
Some examples:
- 100 channel profiles, each with 10 recent videos and 10 top clips inside: $0.15
- 2,000 channels found by keyword search: $3.00
- Top 500 Thai live streams, once every hour for a day: $18.00
- Top 100 games, once a day for a month: $4.50
Videos and clips embedded inside a channel profile are free. Only the profile itself is counted.
How to scrape Twitch?
Twitch Scraper does not require any coding skills.
- Choose what to scrape: channel profiles, channel search, live streams, top games, clips or videos.
- Fill in the usernames, search keywords or game names for that mode.
- Set Maximum results to control how much you spend.
- Click "Start" and wait for the scraper to finish. Most runs take a few seconds.
- Download your data in JSON, CSV, Excel or XML format.
How to use scraped Twitch data
- Build lists of streamers for sponsorships and influencer marketing, filtered by game, language and follower count.
- Track live viewership of games and categories over time by running the scraper on a schedule.
- Monitor competing channels: when they go live, what they play and how many viewers they get.
- Find the best clips of a channel or a game for content curation.
- Archive the video catalog of a channel.
- Research the Twitch market in one language, for example all Thai or Japanese streams.
Input parameters
Select the mode first. Only the fields for that mode are used, the rest are ignored.
- Mode or
mode: what to scrape. One ofchannels,searchChannels,liveStreams,topGames,clips,videos. Defaultchannels. - Channels or
channels: Twitch usernames or channel URLs, for exampleshroud,@pokimaneorhttps://www.twitch.tv/xqc. Used bychannels,clipsandvideos. - Search queries or
searchQueries: keywords to search channels for, for examplevalorantorvtuber. Used bysearchChannels. - Games or
gameNames: category names as shown on Twitch, for exampleJust ChattingorVALORANT. Used byliveStreams,clipsandtopGames. Leave empty to get the global top. - Languages or
languages: two letter language codes such asen,th,ja,ko,de,es,pt. Filters live streams and game clips. - Stream tags or
tags: freeform tags such asVtuberorSpeedrun. Used byliveStreams. - Maximum results or
maxItems: stop after this many records in total, across all channels, queries or games in the run. Default 100. - Minimum viewers or
minViewers: skip live streams with fewer viewers. Used byliveStreams. - Clip period or
clipPeriod:LAST_DAY,LAST_WEEK,LAST_MONTHorALL_TIME. DefaultLAST_WEEK. - Clip sort or
clipSort:VIEWS_DESC,VIEWS_ASC,CREATED_AT_DESC,CREATED_AT_ASCorTRENDING. DefaultVIEWS_DESC. - Video type or
videoType:ALL,ARCHIVE(past broadcasts),HIGHLIGHTorUPLOAD. DefaultALL. - Video sort or
videoSort:TIME(newest first) orVIEWS. DefaultTIME. - Recent videos per channel or
channelVideos: how many recent videos to include inside each channel profile, 0 to 100. Default 5. - Top clips per channel or
channelClips: how many top clips to include inside each channel profile, 0 to 100. Default 5. - Proxy or
proxyConfiguration: optional. Twitch normally works without a proxy.
To see the full list of parameters and their default values, head over to the Input tab.
Input examples
Scrape three channel profiles with 10 recent videos and 10 top clips of the month:
{"mode": "channels","channels": ["shroud", "pokimane", "https://www.twitch.tv/xqc"],"channelVideos": 10,"channelClips": 10,"clipPeriod": "LAST_MONTH"}
Find up to 2,000 channels related to VALORANT:
{"mode": "searchChannels","searchQueries": ["valorant"],"maxItems": 2000,"channelVideos": 0,"channelClips": 0}
Get the top Thai live streams with at least 20 viewers:
{"mode": "liveStreams","languages": ["th"],"minViewers": 20,"maxItems": 500}
Get live streams in two games:
{"mode": "liveStreams","gameNames": ["VALORANT", "Just Chatting"],"maxItems": 200}
Get the top 100 games by viewers:
{"mode": "topGames","maxItems": 100}
Get the most viewed clips of the week for a channel and a category:
{"mode": "clips","channels": ["xqc"],"gameNames": ["Just Chatting"],"clipPeriod": "LAST_WEEK","maxItems": 200}
Get all past broadcasts of a channel, newest first:
{"mode": "videos","channels": ["shroud"],"videoType": "ARCHIVE","videoSort": "TIME","maxItems": 100}
Results
Each channel, stream, game, clip or video is stored as one item in the dataset. Every item has a type field and a fixed set of fields. Missing values are null, they are never left out, so CSV and Excel exports always have the same columns. The Output tab has a separate table view for each type.
👤 Example channel
{"type": "channel","id": "37402112","login": "shroud","displayName": "shroud","url": "https://www.twitch.tv/shroud","description": "I'm back baby","profileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/...-profile_image-300x300.png","bannerImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/...-profile_banner-480.jpeg","offlineImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/...-channel_offline_image-1920x1080.jpeg","primaryColorHex": "00ADFF","language": "EN","followersCount": 11290608,"isPartner": true,"isAffiliate": false,"isLive": false,"currentViewers": null,"currentGame": null,"streamTitle": null,"stream": null,"lastBroadcastId": "320267692764","lastBroadcastTitle": "the dog is back to save us all","lastBroadcastStartedAt": "2026-09-11T07:24:38.78317Z","lastBroadcastGame": "Battlefield 6","nextScheduledStream": {"title": "","startAt": "2026-09-11T18:00:00Z","categories": []},"socialLinks": [{ "name": "discord", "title": "Discord", "url": "https://discord.gg/shroud" },{ "name": "twitter", "title": "Twitter", "url": "https://twitter.com/shroud" },{ "name": "youtube", "title": "YouTube", "url": "https://youtube.com/shroud" }],"videoCount": 1571,"recentVideos": [ { "type": "video", "id": "2870437527", "title": "...", "viewCount": 136309, "lengthSeconds": 21231 } ],"topClips": [ { "type": "clip", "id": "...", "title": "...", "viewCount": 52000 } ],"createdAt": "2012-11-03T15:50:32.87847Z","updatedAt": "2026-09-10T15:33:30.150644Z","searchQuery": null,"scrapedAt": "2026-09-11T14:02:11Z"}
When the channel is live, stream contains the stream id, title, viewers, start time, language, type, mature flag, game, tags and preview image.
🔴 Example live stream
{"type": "stream","id": "316014893160","title": "[Live] Wardogs is open now","url": "https://www.twitch.tv/nutsurusama","viewersCount": 198,"startedAt": "2026-09-11T10:56:28Z","uptimeMinutes": 185,"language": "EN","broadcasterLanguage": "TH","streamType": "live","isMature": false,"gameId": "743893402","gameName": "WARDOGS","tags": ["Thai", "DropsEnabled"],"previewImageUrl": "https://static-cdn.jtvnw.net/previews-ttv/live_user_nutsurusama-640x360.jpg","broadcasterId": "153258411","broadcasterLogin": "nutsurusama","broadcasterDisplayName": "NutsuruSama","broadcasterProfileImageUrl": "https://static-cdn.jtvnw.net/jtv_user_pictures/...-profile_image-150x150.png","broadcasterFollowers": 58066,"broadcasterIsPartner": true,"broadcasterIsAffiliate": false,"scrapedAt": "2026-09-11T14:02:11Z"}
🏆 Example game
{"type": "game","id": "509658","name": "Just Chatting","displayName": "Just Chatting","url": "https://www.twitch.tv/directory/category/just-chatting","rank": 1,"viewersCount": 220203,"broadcastersCount": 3672,"followersCount": 53190362,"boxArtUrl": "https://static-cdn.jtvnw.net/ttv-boxart/509658-285x380.jpg","tags": ["IRL"],"scrapedAt": "2026-09-11T13:01:56Z"}
🎬 Example clip
{"type": "clip","id": "3006751830","slug": "ZanyAssiduousMinkHumbleLife-EcYOnfK_-LHOOCYE","title": "Clutch round","url": "https://www.twitch.tv/kmomo_0512/clip/ZanyAssiduousMinkHumbleLife-EcYOnfK_-LHOOCYE","viewCount": 10500,"durationSeconds": 58,"createdAt": "2026-09-06T18:28:16Z","language": "zh","gameId": "516575","gameName": "VALORANT","broadcasterId": "12345","broadcasterLogin": "kmomo_0512","broadcasterDisplayName": "kmomo","broadcasterUrl": "https://www.twitch.tv/kmomo_0512","curatorId": "67890","curatorLogin": "9peach_1111","curatorDisplayName": "9peach","thumbnailUrl": "https://static-cdn.jtvnw.net/twitch-video-assets/.../thumb-1920x1080.jpg","videoId": "2860000000","videoOffsetSeconds": 5321,"scrapedAt": "2026-09-11T14:02:11Z"}
📼 Example video
{"type": "video","id": "2870437527","title": "the dog is back to save us all","url": "https://www.twitch.tv/videos/2870437527","viewCount": 136309,"lengthSeconds": 21231,"publishedAt": "2026-09-10T18:05:11Z","createdAt": "2026-09-10T18:05:11Z","broadcastType": "ARCHIVE","language": "en","description": "","gameId": "2027006220","gameName": "Battlefield 6","channelId": "37402112","channelLogin": "shroud","channelDisplayName": "shroud","channelUrl": "https://www.twitch.tv/shroud","thumbnailUrl": "https://static-cdn.jtvnw.net/cf_vods/.../thumb-640x360.jpg","scrapedAt": "2026-09-11T14:02:11Z"}
Notes for developers
Twitch page limits
Twitch does not let anonymous clients page through directory listings. In one request the scraper gets the top 30 global live streams (per language and tag combination), up to 100 streams per game, 100 top games, 100 clips per channel or game for one period and sort, and 100 videos per channel for one type and sort. To go deeper, the liveStreams mode without game names walks the top 100 games automatically, which gives up to about 10,000 live streams. Channel search is paginated and can return thousands of channels.
Limiting results with maxItems
maxItems is the main cost control. The scraper stops as soon as it has stored that many records. You can also set a maximum total charge on the run; the scraper stops cleanly when it is reached and says so in the status message.
Free preview
When a run is not billed per result, for example when you run the code locally with apify run, output is limited to 50 records. This is by design, not an error.
Not available
Follower lists, chat messages and viewer identities are not available to anonymous clients and are not part of this scraper.
FAQ
Do I need a Twitch account or API key?
No. The scraper reads the same public data that Twitch shows to logged out visitors.
Do you need proxies for scraping Twitch?
No. Twitch's public endpoint works without a proxy and the scraper runs without one by default. If you ever see request failures, you can turn on Apify Proxy in the input.
How do I get only streams in my language?
Use the languages field, for example ["th"] for Thai or ["ja", "ko"] for Japanese and Korean. Twitch matches streams by their language tag, which you can see in the tags field (for example ภาษาไทย for Thai). The language and broadcasterLanguage fields show the language the streamer set in their own settings, so they can say EN for a stream that is clearly in Thai.
Why did I get fewer results than maxItems?
Either Twitch had fewer matches (a small game, or a channel with few clips), a filter such as minViewers removed some, or the page limits above apply. The final status message of the run explains what happened.
Can I use Twitch Scraper with the Apify API?
Yes. The Apify API gives you programmatic access to run the scraper, get its results and manage schedules. See the API tab for ready to use code in Node.js, Python and cURL.
Can I use Twitch Scraper through an MCP server?
Yes. You can call this scraper from AI agents and tools such as Claude, Cursor or VS Code through the Apify MCP server. Pass the same input JSON shown above.
Can I integrate Twitch Scraper with other apps?
Yes. Twitch Scraper can be connected with Google Sheets, Slack, Make, Zapier, webhooks and other Apify integrations, so results are delivered where you need them.
Is it legal to scrape Twitch?
The scraper only collects data that Twitch shows publicly: channel profiles, stream metadata, clip and video metadata. It does not collect private data, chat messages or viewer identities. You are responsible for using the data in line with Twitch's terms and the laws that apply to you. Personal data is protected by the GDPR in the European Union and by other regulations around the world, so do not scrape personal data unless you have a legitimate reason to do so.
Twitch Scraper ภาษาไทย
Twitch Scraper ดึงข้อมูลสาธารณะจาก Twitch โดยไม่ต้องล็อกอิน ไม่ต้องใช้ API key และไม่ต้องใช้เบราว์เซอร์ รองรับ 6 โหมด:
channels: ข้อมูลโปรไฟล์ช่อง (ผู้ติดตาม, สถานะ Partner/Affiliate, ลิงก์โซเชียล, ตารางสตรีมถัดไป, วิดีโอล่าสุด, คลิปยอดนิยม)searchChannels: ค้นหาช่องด้วยคีย์เวิร์ด เช่นvalorantหรือvtuberliveStreams: สตรีมที่กำลังไลฟ์ เรียงตามผู้ชม กรองตามเกม ภาษา (ใส่thเพื่อดูสตรีมเมอร์ไทย) และแท็กtopGames: 100 เกมและหมวดหมู่ยอดนิยม พร้อมจำนวนผู้ชมและช่องที่ไลฟ์อยู่clips: คลิปยอดนิยมของช่องหรือของเกม เลือกช่วงเวลาและการเรียงได้videos: VOD ไฮไลต์ และวิดีโออัปโหลดของช่อง
ราคา 1.5 ดอลลาร์ต่อ 1,000 รายการ เท่ากันทุกแพลน ไม่มีค่าเริ่มรัน บัญชี Apify ฟรีมีเครดิต 5 ดอลลาร์ต่อเดือน ใช้ได้ประมาณ 3,300 รายการ
วิธีใช้: เลือกโหมด, กรอกชื่อช่องหรือคีย์เวิร์ดหรือชื่อเกม, ตั้งค่า maxItems เพื่อจำกัดค่าใช้จ่าย, กด Start แล้วดาวน์โหลดผลลัพธ์เป็น JSON, CSV หรือ Excel (ไฟล์ CSV เปิดใน Excel ได้ ภาษาไทยไม่เพี้ยน)
ตัวอย่างอินพุตสำหรับสตรีมภาษาไทยที่มีผู้ชมอย่างน้อย 20 คน:
{ "mode": "liveStreams", "languages": ["th"], "minViewers": 20, "maxItems": 300 }
ข้อจำกัด: ต่อหนึ่งคำขอจะได้สตรีมทั่วโลกสูงสุด 30 รายการ (ต่อภาษาหรือแท็ก), สตรีมต่อเกมสูงสุด 100 รายการ, คลิปหรือวิดีโอต่อช่องสูงสุด 100 รายการ โหมด liveStreams ที่ไม่ระบุเกมจะไล่ดึงจาก 100 เกมยอดนิยมให้อัตโนมัติ ส่วนการค้นหาช่องดึงได้หลายพันรายการ
Your feedback
We are always working on improving this scraper. If you find a bug, a missing field or have a feature request, please create an issue on the Issues tab of this Actor. Feedback in English or Thai is welcome.