Kick Creator Scraper - Followers, Live Status
Pricing
from $3.30 / 1,000 creator scrapeds
Kick Creator Scraper - Followers, Live Status
One row per Kick.com creator: follower count, verified badge, whether they are live right now, and the current stream title, category and viewer count when they are. Name the channels, search for them, or read whoever is on air. No login, no API key, no browser.
Pricing
from $3.30 / 1,000 creator scrapeds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Kick Creator Scraper
One row per Kick.com creator. Follower count, the verified tick, whether they are on air at this second and, if they are, the stream title, the category, how many people are watching and when it started. Give it usernames you already know, a search term, or nothing but a switch and let it read whoever is live right now. No login, no API key, no browser.
- Three ways in: a list of usernames, a search term, or the live feed. Every one produces the same row.
- The live fields are genuinely live: viewers and stream title are read at the moment the row is built, not from a cache.
- A channel that does not exist costs you nothing: it comes back as a free diagnostic row saying so.
- Runs with empty input return a labelled sample row, free, so you can see the shape before you spend anything.
Price
$3.30 per 1,000 creators, plus a $0.0006 start fee per run.
This is a flat rate on every plan, free or paid. There are no volume tiers, no minimum spend, no subscription and no add-on fees. What you read here is what you pay on day one and on day four hundred.
| Creators | Total cost |
|---|---|
| 100 | $0.3306 |
| 1,000 | $3.3006 |
| 10,000 | $33.0006 |
| 100,000 | $330.0006 |
What is actually charged
- One
creator-scrapedevent per creator row written to the dataset. Nothing else is metered per row. - Free: the sample row an empty run returns, and every diagnostic row: a blocked target, a dead URL, a search that matched nothing. Those rows all carry
"charged": false. - Channels that do not exist, or that Kick refused to describe, come back as free diagnostic rows.
- A creator named twice in one run (by username and again from the live feed) is read and charged once.
- With "Skip creators who are offline" switched on, creators who turn out to be offline are dropped before they are charged.
- A run that finds nothing costs the start fee and nothing more.
- Rows never leave the dataset without a charge, and are never charged without a row.
Input
{"channels": ["xqc","https://kick.com/trainwreckstv"],"searchTerms": ["chess"],"browseLive": true,"category": "just-chatting","maxItems": 50}
| Field | What it does |
|---|---|
channels | Usernames or channel links for creators you already know. xqc, https://kick.com/xqc and kick.com/xqc/videos all mean the same channel. Up to 200 per run, and these are read first. |
searchTerms | Words to put through Kick's own channel search, for finding creators you cannot name yet. Up to 10 terms. Kick caps its search at 20 channels per term and has no second page, so a term matching thousands still gives you 20, roughly the largest 20 by follower count. |
browseLive | Switch this on to walk the live feed instead of naming anyone. It pages through who is on air and reads each one until the row limit is reached. |
category | Narrows the live feed to one category, spelled the way it appears in the URL: just-chatting, grand-theft-auto-v, counter-strike-2. No effect on usernames or search terms. |
language | Which language edition of the live feed to walk. Kick groups it by broadcast language. en, fr, de. Defaults to en. Live feed only. |
liveOnly | Deliver and charge only for creators who are on air when they are read. Worth switching on with search terms, where most matches are offline. |
maxItems | Total creator rows to return. Named channels first, then search terms, then the live feed. Default 20, hard ceiling 1,000. Keep it low while testing, because you pay per row. |
proxyUrls | Leave empty. Fill it in only if you want the traffic to leave through proxy servers you already pay for, as http://user:pass@host:port. |
Run it with empty input and you get one clearly labelled sample row, free, so you can see the output shape before you spend anything.
Output
One row per creator. A real row from a real run:
{"ok": true,"charged": true,"recordType": "creator","username": "DeenTheGreat","channelSlug": "deenthegreat","channelUrl": "https://kick.com/deenthegreat","followersCount": 437206,"verified": true,"isLive": true,"streamViewers": 15183,"streamTitle": "LOCKED-IN-ATHON DAY 69 OF 90 🔥 w/ HITMAKA MAKING A HIT PROJECT DAY 3 💿","streamCategory": "IRL","streamCategorySlug": "irl","streamStartedAt": "2026-09-19T20:25:38.000Z","streamLanguage": "English","streamIsMature": false,"streamTags": [],"streamThumbnail": "https://stream.kick.com/thumbnails/livestream/128131381/thumb0/video_thumbnail/thumb0.jpg","lastCategory": "IRL","lastCategorySlug": "irl","bio": "THE GREATS 🏆 COB ☝🏾 LIVE DAILY! 🔥","profilePicture": "https://files.kick.com/images/user/5508767/profile_image/conversion/573bc8be-7580-426c-b741-a65dca3ab089-fullsize.webp","bannerImage": "https://files.kick.com/images/channel/5417122/banner_image/1e204686-4746-410a-b07b-3fbdd51b357c","isAffiliate": true,"isBanned": false,"subscriptionEnabled": true,"vodEnabled": true,"twitter": "DeenTheGreat","instagram": "DeenTheGreat","youtube": "channel/UCQXJe2loenb0J_bKbUMAncw","tiktok": "DeenTheGreat1","discord": "/invite/PXE24SN49u","facebook": null,"channelId": 5417122,"userId": 5508767,"foundVia": "channels","scrapedAt": "2026-09-20T09:35:49.068Z"}
Field notes
followersCount: a plain number. Kick sends it as text on some routes and as a number on others; it is normalised here so you can sort on it without cleaning.verified: true or false, never null. Kick reports the verified tick three different ways depending on which route answered; all three are collapsed to a boolean.isLive: true only if the creator is broadcasting at the moment the row is built. Someone who goes offline thirty seconds later still reads true. It is a snapshot, not a subscription.streamViewers: the live viewer count at read time. Null when the creator is offline, and 0 is a real answer for a stream nobody has found yet.streamTitle: what the creator typed as the title of this broadcast. Null when offline.streamThumbnail: a still from the live video, but Kick only attaches one to some channels. Measured on 23 live creators in one run, 20 of them had none, so treat this as a bonus rather than something to build on.streamCategory: the category the current stream is filed under, withstreamCategorySlugcarrying the URL form. Null when offline.streamStartedAt: when this broadcast went live, as ISO 8601 in UTC. Subtract it from now to get how long they have been on.lastCategory: the most recent category the channel used, present whether they are live or not. This is what you get for an offline creator.bio: the channel bio, exactly as the creator wrote it on their page, including line breaks and any links they put in it.twitter, instagram, youtube, tiktok, discord, facebook: the handles the creator filled into their own Kick profile. They are handles and paths, not full URLs, and a creator who left one blank gets null.channelId, userId: Kick's own numeric ids. Stable across a rename, so use them as the key when a creator changes their username.foundVia: how this creator entered the run, one ofchannels,search:<your term>orbrowseLive. Useful when you mix modes and want to know which one paid off.
Every real row carries "charged": true. Sample rows carry "_sample": true and diagnostic rows carry "_diagnostic": true with an errorCode you can filter on, and neither is ever billed.
How it works
- It reads Kick's own public channel records directly. No page rendering, no headless browser, no login, no API key.
- Every row is built from the same place, the channel record, whichever way the creator was found, so a row from a search term and a row from the live feed have identical fields.
- Rate limits on the target are handled automatically.
- Before a row is charged the run checks the record actually describes the channel that was asked for. A page that answers but describes somebody else is thrown away, not billed.
What people use it for
- Watching a handful of creators you sponsor or compete with: run the same usernames on a schedule and diff
followersCountandisLiveto see growth and when they actually stream. - Building a shortlist in a niche: search a few terms, filter the rows by follower count, and you have the creators worth approaching with their own published social handles attached.
- Snapshotting who is on air in one category through the day, so you can see when a category is busy and who owns the peak hours.
- Feeding a dashboard that shows live viewer counts across a set of channels without holding a websocket open.
- Checking whether a creator who is big elsewhere has actually turned up on Kick, and what they have been streaming since.
Reading the output
Every run writes three kinds of row, and they are easy to tell apart:
- Real rows carry
"charged": trueand"recordType": "creator". One billed event each. - The sample row carries
"_sample": trueand"charged": false. There is exactly one, it only appears when the input named nothing at all, and it exists so you can look at the output shape before spending anything. - Diagnostic rows carry
"_diagnostic": true,"charged": falseand anerrorCodeyou can switch on:NOT_FOUNDwhen Kick has no such channel,NO_RESULTSwhen a search term matched nobody,BLOCKEDwhen Kick answered but not with a channel record,RATE_LIMITEDwhen it throttled the run,NETWORKwhen it could not be reached,TIME_BUDGETwhen the run ran out of time before reaching an item. Each carries a plain-Englisherrorand thechannelorsearchTermit belongs to.
Two things keep a broken input from filling the dataset with noise. Only the first 30 problems are listed one by one; after that a single row tells you how many more there were. And if 25 channels in a row come back with nothing, the run stops and says so rather than working through the rest. A whole list failing in a row means the list is wrong, not that Kick is having a bad minute. Neither costs you anything; both rows are free.
If you only want data, filter on charged == true. The count of those rows equals the number of events you were billed for, so the dataset is its own invoice.
What this does not do
Worth knowing before you buy, because none of it is fixable by re-running:
- No emails. There is no email field and none is derived from anything. The
biois returned exactly as the creator wrote it on their public page, and if they chose to put a business address in there it stays where they put it. Nothing goes looking for one. - No cross-referencing. The social handles are the ones the creator typed into their own Kick profile. Nothing is looked up, matched or confirmed against those other platforms.
- No chat, clips, VODs or past broadcasts. One row, one creator, as they are right now.
- No subscriber counts, revenue or payout data. Kick does not publish it and neither does this.
- No history. Every run is a fresh snapshot. If you want a trend, run it on a schedule and keep the rows yourself.
channelIdis the stable key to join on.
Limitations
- Follower counts, viewer counts and live status are a snapshot at read time. A busy channel's viewer count will have moved by the time you open the row.
- Kick's channel search returns at most 20 results per term and has no second page. Ten terms is therefore a hard ceiling of 200 discovered creators, however broad the terms are.
- The live feed reshuffles between page requests, so paging it deep returns a few repeats. They are dropped before they are charged, but it means "walk the whole live feed" is not something this can promise.
- The live feed is grouped by broadcast language, so browsing it reaches the creators streaming in the language you asked for, not everyone on the platform.
- Offline creators have every stream field null. Only
lastCategorytells you what they were doing last, and it does not say when. streamThumbnailis usually null even for someone who is live. Kick attaches a still to some channels and not others, and there is no pattern to it worth relying on.- A creator who has never streamed has
lastCategorynull as well, so a brand-new channel gives you identity and follower count and nothing about content. - Social handles are whatever the creator typed. Some are bare handles, some are paths like
channel/UC…or/invite/…, and some are simply wrong because nobody checks them. - A banned or deleted channel comes back as a free
NOT_FOUNDdiagnostic row. Kick does not distinguish the two, so neither can this. - If 25 channels in a row return nothing the run stops early rather than reading the rest of your list. Paste a list where every name is misspelled and you get 25 answers and an explanation, not 200 answers.
- The hard ceilings are 1,000 rows, 200 named channels and 10 search terms per run. Split bigger jobs across runs.
- Nothing here reads a private or subscriber-only page. If it is not on the public channel page, it is not in the row.
Questions
Do I need a Kick account or an API key?
No. Everything this reads is the public channel data Kick serves to anyone, so there is no login, no key, no token and nothing to keep in sync.
What happens if I give it a username that does not exist?
You get one free diagnostic row with errorCode: "NOT_FOUND" naming the channel, and the run carries on to the rest of your list. You are never billed for a channel that is not there.
Can I find creators without knowing their usernames?
Yes, two ways. searchTerms puts words through Kick's own channel search and reads the matches, up to 20 per term. browseLive walks the feed of whoever is broadcasting right now, optionally narrowed to one category and one language.
How fresh is the live data?
It is read when the row is built, so the viewer count and stream title are seconds old. It is a snapshot though, not a stream. To watch a channel over time, run this on a schedule.
Will the run fail if Kick blocks it or a channel is missing?
No. Blocked, missing and empty all produce uncharged diagnostic rows and the run still finishes as succeeded. A failed run would still bill you the start fee, which would mean paying to be told something went wrong.
Can I use this to build a mailing list?
No, and it is not built for it. There is no email field and nothing derives one. What you get is what the creator published on their own channel page.
Can I run it on a schedule?
Yes. Nothing is held between runs, so the same input is safe to repeat. Join on channelId rather than the username, because the id survives a rename and the username does not.
Why did I get fewer rows than I asked for?
Usually one of three things: the search terms matched fewer than 20 channels each, "Skip creators who are offline" dropped the ones that were not on air, or the same creator turned up through two routes and was read once. The diagnostic rows say which.