Kick.com Scraper - Streamers, Live Streams, VODs & Clips avatar

Kick.com Scraper - Streamers, Live Streams, VODs & Clips

Pricing

from $2.30 / 1,000 kick item delivereds

Go to Apify Store
Kick.com Scraper - Streamers, Live Streams, VODs & Clips

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

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

9 hours ago

Last modified

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 planPer rowPer 1,000 rows
FreeUS$ 0.0030US$ 3.00
BronzeUS$ 0.0027US$ 2.70
SilverUS$ 0.0025US$ 2.50
Gold and aboveUS$ 0.0023US$ 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

ModeInputOne row perTypical use
channelschannel names or URLschannelcreator vetting, follower tracking, live check
liveStreamsoptional categories, languages, min viewers, tagslive streamtop streams now, sponsor discovery
videoschannel names or URLspast broadcast (VOD)views, peak viewers and duration of recent streams
clipschannels, categories, or nothing for trendingclipviral moments, highlight research
categoriesnothing (top N) or category slugscategorycategory viewers leaderboard
searchkeywordschannelfind 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 sendHere
mode: channel_details / live_streams, top_channels, livestreams / subcategorieschannels / liveStreams / categories
mode: channel_videos with videoType videos or clipsvideos or clips
channelSlugs, channelUrls, startUrls, watchlistSame as channelNames
category, categorySlugsSame as categories
livestreamLanguages, livestreamTags, searchKeywordsSame as languages, tags, searchQueries
maxItemsSame 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

FieldTypesDescription
channelName, displayName, channelUrl, channelIdchannel, livestream, video, clipSlug as in kick.com/
followersCountchannel, categoryFollowers (category only with slug input)
verified, isAffiliate, isBanned, hasSubscriptions, vodEnabledchannelChannel flags
bio, avatarUrl, bannerUrl, recentCategorieschannelPublic profile
instagram, twitter, youtube, tiktok, facebook, discord, socialLinkschannelSocial links set by the streamer
isLive, currentViewers, currentStreamTitle, currentCategory, startedAtchannelCurrent live stream, if any
rank, viewers, title, language, tags, isMaturelivestreamLive stream now, ranked by viewers
views, peakViewers, duration, durationFormatted, videoUrlvideoVOD stats and HLS playlist
category, categorySlug, parentCategorylivestream, video, clipCategory of the content
input, error, errorCodeallInput 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; minViewers and tags on 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 gambling parent). 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: onlyNew for daily schedules in videos, clips and liveStreams.
  • 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.