Kick.com Scraper - Streamers, Live Streams, VODs & Clips
Pricing
from $2.30 / 1,000 kick item delivereds
Kick.com Scraper - Streamers, Live Streams, VODs & Clips
Scrape Kick.com streamer profiles (followers, verified, bio, socials, live viewers), top live streams by category and language, VODs, clips and categories with viewers. Public JSON, no login. US$ 3 per 1,000 items; channels not found are free.
Pricing
from $2.30 / 1,000 kick item delivereds
Rating
0.0
(0)
Developer
Scrapewise Data
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
9 hours ago
Last modified
Categories
Share
Kick.com Scraper turns Kick's public data into flat rows: streamer profiles with followers, verification, bio and social links, the top live streams right now by category and language, past broadcasts (VODs), clips, and categories with live viewers. It reads the same public JSON kick.com uses in the browser, with no login. It is used by influencer agencies vetting creators, sponsors looking for the most-watched streams in a category, and streaming analytics products tracking viewers over time.
At a glance
| Apify plan | Per row | Per 1,000 rows |
|---|---|---|
| Free | US$ 0.0030 | US$ 3.00 |
| Bronze | US$ 0.0027 | US$ 2.70 |
| Silver | US$ 0.0025 | US$ 2.50 |
| Gold and above | US$ 0.0023 | US$ 2.30 |
- One charge per row, whatever the mode: a channel, a live stream, a VOD, a clip or a category. 100 creator profiles cost US$ 0.30.
- No monthly fee and no start fee. Channels that do not exist, empty filters and blocked requests are free rows with an
errorCode.
Quick start
The default input returns two channel profiles:
{ "mode": "channels", "channelNames": ["xqc", "https://kick.com/adinross", "@amouranth"] }
A real row from 2026-09-15, trimmed:
{"type": "channel","channelName": "xqc","channelUrl": "https://kick.com/xqc","channelId": 668,"displayName": "xQc","bio": "THE BEST AT ABSOLUTELY EVERYTHING. THE JUICER. LEADER OF THE JUICERS.","followersCount": 1111456,"verified": true,"hasSubscriptions": true,"isLive": false,"recentCategories": ["Grand Theft Auto V (GTA)", "Just Chatting", "Escape From Tarkov"],"instagram": "https://www.instagram.com/xqcow1/","twitter": "https://x.com/xqc","youtube": "https://www.youtube.com/channel/UCmDTrq0LNgPodDOFZiSbsww","discord": "xqcow","scrapedAt": "2026-09-15T18:07:46.101Z"}
When the channel is live, isLive is true and currentViewers, currentStreamTitle, currentCategory, currentStreamLanguage, currentStreamTags and startedAt are filled.
Modes
| Mode | Input | One row per | Typical use |
|---|---|---|---|
channels | channel names or URLs | channel | creator vetting, follower tracking, live check |
liveStreams | optional categories, languages, min viewers, tags | live stream | top streams now, sponsor discovery |
videos | channel names or URLs | past broadcast (VOD) | views, peak viewers and duration of recent streams |
clips | channels, categories, or nothing for trending | clip | viral moments, highlight research |
categories | nothing (top N) or category slugs | category | category viewers leaderboard |
search | keywords | channel | find streamers by name |
Every row has a type (channel, livestream, video, clip, category) and scrapedAt, so modes can share one pipeline. Top 50 live streams in Just Chatting in Spanish with at least 50 viewers:
{ "mode": "liveStreams", "categories": ["just-chatting"], "languages": ["es"], "minViewers": 50, "maxResults": 50 }
The 100 most viewed clips of a channel: { "mode": "clips", "channelNames": ["xqc"], "clipSort": "view", "clipPeriod": "all", "maxResults": 100 }.
Switching from another Kick actor? Your existing input works
| Field you already send | Here |
|---|---|
mode: channel_details / live_streams, top_channels, livestreams / subcategories | channels / liveStreams / categories |
mode: channel_videos with videoType videos or clips | videos or clips |
channelSlugs, channelUrls, startUrls, watchlist | Same as channelNames |
category, categorySlugs | Same as categories |
livestreamLanguages, livestreamTags, searchKeywords | Same as languages, tags, searchQueries |
maxItems | Same as maxResults |
Output names follow the common convention (channelName, displayName, followersCount, isLive, currentViewers, currentCategory, currentStreamTitle, viewers, thumbnailUrl), so most mappings keep working.
Output examples
Real rows from 2026-09-15.
{"type": "livestream","rank": 2,"channelName": "alabinha5","title": "JOGANDO OUTROS JOGOS e REACTS | 3 DIAS PRO NOVO FIFA","viewers": 2534,"category": "Just Chatting","categorySlug": "just-chatting","language": "pt","isMature": false,"startedAt": "2026-09-15T12:19:23Z","isLive": true}
{"type": "video","videoId": "c3df33dd-375c-4955-862e-5fd0a32d43a1","channelName": "xqc","title": "LIVE HERE GTA V NOPIXEL ROLEPLAY","views": 52550,"peakViewers": 7218,"duration": 39804,"durationFormatted": "11:03:24","category": "Grand Theft Auto V (GTA)","startedAt": "2026-09-14T19:57:58Z","videoUrl": "https://stream.kick.com/.../media/hls/master.m3u8"}
{"type": "category","rank": 1,"name": "Grand Theft Auto V (GTA)","slug": "grand-theft-auto-v","parentCategory": "Games","viewers": 269060,"tags": ["Shooter", "Action", "Open World"]}
Clip rows carry clipId, title, url, views, likes, duration, category, createdAt, thumbnailUrl and an HLS videoUrl.
Main fields
| Field | Types | Description |
|---|---|---|
channelName, displayName, channelUrl, channelId | channel, livestream, video, clip | Slug as in kick.com/ |
followersCount | channel, category | Followers (category only with slug input) |
verified, isAffiliate, isBanned, hasSubscriptions, vodEnabled | channel | Channel flags |
bio, avatarUrl, bannerUrl, recentCategories | channel | Public profile |
instagram, twitter, youtube, tiktok, facebook, discord, socialLinks | channel | Social links set by the streamer |
isLive, currentViewers, currentStreamTitle, currentCategory, startedAt | channel | Current live stream, if any |
rank, viewers, title, language, tags, isMature | livestream | Live stream now, ranked by viewers |
views, peakViewers, duration, durationFormatted, videoUrl | video | VOD stats and HLS playlist |
category, categorySlug, parentCategory | livestream, video, clip | Category of the content |
input, error, errorCode | all | Input line that produced the row; error info (not charged) |
Error codes (never charged)
CHANNEL_NOT_FOUND, INVALID_CHANNEL, CATEGORY_NOT_FOUND, INVALID_CATEGORY, NO_RESULTS, CHANNEL_UNAVAILABLE, BLOCKED. Each comes as a row with error and errorCode. The run fails only when Kick blocked every retry and nothing was delivered, so one bad name in a list of 500 does not ruin the run.
Only new VODs, clips and streams
Turn on onlyNew and save the input as a Task with a daily Schedule. What each channel, category or live filter already delivered is kept in the key-value store kick-scraper-only-new in your account, and each run delivers, and charges, only what is new:
videos: broadcasts published since the last run (the first run marks the channel's VOD list as seen).clips: clips created since the last run, read newest first.liveStreams: each live stream once, even if it is still live on the next run.
A day with nothing new costs nothing for results. onlyNew does nothing in channels, search and categories, which are fresh snapshots. Delete the store to start over.
Limitations
- VODs: Kick's public API serves the 24 most recent past broadcasts per channel.
- Live streams are a snapshot of the moment of the run; schedule the Actor every 15 or 60 minutes for a viewer history. Category and language filters are applied by Kick;
minViewersandtagson top. - Search returns up to 20 channels per keyword, Kick's own limit.
- Gambling, casino and betting categories are not collected in any mode (24 categories under Kick's
gamblingparent). Names that only look like gambling, such as chat-roulette, are collected. - Chat messages and viewer data are not collected, nor the username of who created a clip.
FAQ
How fast is it? 600 top live streams took 31 seconds, 500 clips of a channel 44 seconds, two channel profiles 3 seconds. Plain HTTP through the Apify datacenter proxy, five requests at a time.
Can I monitor if a streamer is live?
Yes. Run channels on a schedule and read isLive, currentViewers, currentStreamTitle and currentCategory.
Why did I get fewer rows than maxResults?
The channel has fewer VODs or clips, fewer streams match the filters right now, or Kick's limits apply. You pay only for rows delivered.
Can I call it from the API, n8n, Make, Zapier or an AI agent?
Yes: scrapewise/kick-scraper through the Apify API, the Apify app in those tools, or the MCP server at https://mcp.apify.com/?actors=scrapewise/kick-scraper.
curl -X POST "https://api.apify.com/v2/acts/scrapewise~kick-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" -d '{"mode": "liveStreams", "languages": ["en"], "maxResults": 100}'
Is scraping Kick legal? The Actor collects only public data anyone can see on kick.com without an account. Follow Kick's terms and the data protection laws of your country.
Changelog
- 2026-10-04:
onlyNewfor daily schedules invideos,clipsandliveStreams. - 2026-09-15 (0.1.7): gambling, casino and betting categories blocked by parent category, word and slug.
- 2026-09-15: first version with six modes and input names of other Kick scrapers accepted.
Something broke or you need a field? Open an issue on the Issues tab; issues are answered the same day.