Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Kick Creator Scraper icon

Kick Creator Scraper

Scrape Kick.com creators: followers, verified status, live or offline, current stream title, category and viewers. By username, search term or live feed.

18 runs on Apify $0.0033 per creator ($3.3 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust channels, searchTerms, browseLive (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0033 per creator = $3.3 per 1,000

You are charged forWhenPrice
Creator scrapedOne Kick creator with follower count, verification and the current stream. Channels that do not exist are never charged.$0.0033

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
channelsThe creators you already know by name. A username, a kick.com link or a link with a tab on the end all work - xqc, https://kick.com/xqc and kick.com/xqc/videos are the same channel. Up to 200 per run. These are read first, before anything found by search or from the live feed.array
searchTermsWords to look up in Kick's own channel search, for finding creators you cannot name yet. Up to 10 terms, and Kick returns at most 20 channels per term - it has no second page, so a term that matches thousands of channels still gives you 20. They come back roughly by follower count, largest first.array
browseLiveSwitch this on to walk Kick's live feed instead of naming channels. It pages through who is currently on air and reads each one, newest broadcasts first, until the row limit is reached.boolean
categoryNarrows the live feed to one Kick category, written as it appears in the URL: just-chatting, grand-theft-auto-v, counter-strike-2. Leave it blank for every category. It has no effect on usernames or search terms.string
languageWhich language edition of the live feed to walk. Kick groups its live feed by broadcast language, so en gives you English-speaking streams, fr French, de German. Defaults to en.string
liveOnlyOnly deliver, and only charge for, creators who are on air at the moment they are read. Useful with search terms, where most matches will be offline. Someone who goes offline between being found and being read is dropped, and is not charged.boolean
maxItemsHow many creator rows to return in total. Named channels are read first, then search terms, then the live feed. Keep it low while you are testing - you pay per row. Hard ceiling 1,000.integer
proxyUrlsLeave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port.array

What you get

A structured dataset — each result includes fields like:

usernamechannelSlugchannelUrlfollowersCountverifiedisLivestreamViewersstreamTitlestreamCategorystreamStartedAtstreamLanguagelastCategorybioprofilePicture

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

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.

CreatorsTotal cost
100$0.3306
1,000$3.3006
10,000$33.0006
100,000$330.0006

What is actually charged

  • One creator-scraped event 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
}
FieldWhat it does
channelsUsernames 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.
searchTermsWords 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.
browseLiveSwitch 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.
categoryNarrows 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.
languageWhich language edition of the live feed to walk. Kick groups it by broadcast language. en, fr, de. Defaults to en. Live feed only.
liveOnlyDeliver and charge only for creators who are on air when they are read. Worth switching on with search terms, where most matches are offline.
maxItemsTotal 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.
proxyUrlsLeave 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, with streamCategorySlug carrying 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 of channels, search:<your term> or browseLive. 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 followersCount and isLive to 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": true and "recordType": "creator". One billed event each.
  • The sample row carries "_sample": true and "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": false and an errorCode you can switch on: NOT_FOUND when Kick has no such channel, NO_RESULTS when a search term matched nobody, BLOCKED when Kick answered but not with a channel record, RATE_LIMITED when it throttled the run, NETWORK when it could not be reached, TIME_BUDGET when the run ran out of time before reaching an item. Each carries a plain-English error and the channel or searchTerm it 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 bio is 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. channelId is 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 lastCategory tells you what they were doing last, and it does not say when.
  • streamThumbnail is 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 lastCategory null 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_FOUND diagnostic 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.