Kick Live Status & Viewer Count Monitor
Pricing
from $3.29 / 1,000 channel status row returneds
Kick Live Status & Viewer Count Monitor
Check whether Kick streamers are live right now: viewer count, stream title, category, tags, start time and follower count. Turn monitoring on and a run returns a channel only when it goes live, ends a stream or starts a new one, for a small fee per channel checked.
Pricing
from $3.29 / 1,000 channel status row returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Kick Live Status & Viewer Count Monitor - go-live alerts for Kick streamers, priced per check
Check whether Kick channels are live right now - viewer count, stream title, category, tags, language, start time, how long they have been live and follower count - and, with monitoring on, receive a row only when something happens: a channel goes live, ends a stream, or starts a new one. A poll on which nothing changed returns a single free no-change row.
In monitoring mode you pay a small fee per channel checked, $0.30 per 1,000 checks, and the normal row price only for the rows that report a change. Watching 20 streamers every 5 minutes is 172,800 checks a month, which is $51.84 in check fees, plus the change rows you receive.
Best for
- Go-live alerts - schedule a run every few minutes, send the dataset to Slack, Discord, Telegram or a webhook, and every row you receive is an event worth sending.
- Sponsored-stream verification - confirm that a paid Kick streamer actually went live, in which category, for roughly how long, and the highest viewer count seen while you were watching.
- Creator and competitor tracking - log when a roster of Kick channels streams, what they stream and how big those streams get, next to their follower counts.
- "Who is live now" lists - check a roster once with
onlyLiveand receive only the channels that are live.
What each row contains
- What you asked for and what Kick returned -
inputChannel,slug,channelId,userId,username,channelUrl. - Live status -
isLive,streamId. - Only while live -
title,category,categoryId,startedAt,liveDurationSeconds,viewerCount,language,isMature,tags,thumbnailUrl. - Channel -
followerCount,isVerified,isAffiliate,isBanned,subscriptionEnabled,profileImageUrl. - Monitoring -
change,isFirstCheck,previousCheckedAt,previousIsLive,previousStreamId, and for a stream that ended:endedAfter,endedBefore,streamDurationSecondsAtLeast,streamDurationSecondsAtMost,peakViewerCountSeen,checksWhileLive.
Measured on 2026-10-19: iceposeidon was live in IRL with viewerCount 17054 and 264743 followers; the stream had started at 17:35 UTC the day before.
Every row is matched to the channel you asked for by the channel name Kick returns, so a row is never filled from another channel's answer. startedAt is converted to ISO 8601 in UTC, and followerCount is a number.
Viewer count
viewerCount is the number Kick returns at the moment of the request. Kick does not publish a stream's peak viewer count, so peakViewerCountSeen is the highest value your monitoring runs saw while the stream was live.
What is deliberately not returned for a channel that is not live
title, category, tags, viewerCount, language and startedAt are filled only while the channel is live. For a channel that is not live you get isLive: false with the channel details and follower count, and these fields are null rather than old values presented as current.
Monitoring, and what it costs
Turn monitoring mode on and the Actor remembers each channel's live status. On later runs a channel comes back only with one of these change values:
change | Meaning |
|---|---|
first-check | The channel had not been seen before. Every channel is returned once on the first run, to set the baseline. |
went-live | Not live at the previous run, live now. |
ended | Live at the previous run, not live now. The row says the stream ended between endedAfter (the previous run) and endedBefore (this run), gives the duration as a range (streamDurationSecondsAtLeast to streamDurationSecondsAtMost), and the highest viewer count seen by your runs while it was live. |
new-stream | Live at both runs, but with a different stream id: the previous stream ended and a new one started in between. |
A channel whose status did not change is not returned, so it costs no row price; the check fee for reading it still applies.
The duration of a stream is a range, not a single number, because the Actor only knows the status at the moments it runs. Run it more often for a narrower range.
The status is remembered per channel, not per list, so adding a channel does not reset the channels already being watched. In monitoring mode maxChannels does not cut changes: every change among the channels read is returned. If the run's maximum total charge stops a change from being delivered, that change is not remembered, so the channel still counts as changed the next time it is checked.
Do not put the same channel in two schedules that can run at the same time. Each run writes back only the channels it checked, merged into the statuses as they are at that moment, then reads them again and writes once more if another run overwrote them - so two overlapping runs over different channels keep each other's history. But Apify's key-value store has no atomic update, so this cannot be made watertight: runs that finish at the same instant, or check the same channel at the same time, can still overwrite each other's record, and the next run may return a first-check or a change a second time.
What monitoring costs
- $0.30 per 1,000 channel checks - charged in monitoring mode for every channel whose status was read, whether or not it changed. Names Kick has no channel for and bot checks are not charged.
- The row price - charged only for the rows returned, which in monitoring mode means
first-checkrows and changes.
The Actor reads only as many channels as the run's maximum total charge can pay for with both a check and a change row each, so a low limit cannot use up the budget on check fees and leave nothing for the rows. Channels beyond that are not checked; a budget-reached row says how many, and raising the maximum total charge lets them be checked. Runs with monitoring off are charged per row only.
Rows that are never charged
When there is nothing to return, this Actor says why instead of returning an empty result:
no-such-channel- Kick has no channel under that name. Kick gives the same answer for a channel that was banned or removed, so the row does not claim which.blocked- Kick answered with a bot check, a rate limit or an empty response. The channel is not reported as offline. Requests go out directly first, and only this answer makes the run switch to a proxy session and try again.unreadable- the answer could not be read: Kick sent an error (its message is included), answered with a different channel, or sent a stream that is not marked as live, which is not translated.robots-disallowed- Kick's robots.txt does not allow the request for that channel, so it was not made. If robots.txt itself cannot be read, no channel is requested and every channel gets ablockedrow.no-change- monitoring ran and no channel changed. The row lists the channels that are still live.no-match-onlyLiveis on and none of the channels is live right now.invalid-input- the text is not a Kick channel name or channel URL, so nothing was requested.budget-reached- the run's maximum charge was reached: the row says how many ready rows fit, or how many channels were not checked in monitoring mode.not-checked- some channels were not checked or not returned, becausemaxChannelshad already been reached (monitoring off), or because more than 1,000 channels were given. The row says how many.
How fast
Each channel is one request, with a 0.3-second pause between requests, so 100 channels take well under a minute. Measured from Apify on 2026-10-19, 60 requests in a row all succeeded with an average answer time of 82 ms.
Input
| Field | What it does |
|---|---|
channels | The channels to check: name, @name, or a channel URL (https://kick.com/name). Names are sent in lower case, so XQC and xqc are the same channel and are checked once. If empty, the example channels xqc and iceposeidon are checked. |
maxChannels | How many charged rows to return in total (up to 1,000). |
onlyLive | Return only the channels that are live right now. |
monitoringMode | Remember the status and return a channel only when it changes. |
resetMonitoringState | Forget every remembered status and start a fresh baseline. |
useProxy | Retry through a proxy if Kick answers with a bot check or a rate limit. Every request goes out directly first. |
Questions
How do I get an alert when a Kick streamer goes live?
Turn on monitoringMode, schedule the Actor, and send the run's dataset to your channel with an Apify integration or webhook. How often is a trade-off between how fast you hear about a stream and the check fee: 20 channels every 5 minutes is 172,800 checks a month ($51.84); every 15 minutes is 57,600 ($17.28). Rows with change: "went-live" are go-live events; ended rows tell you the stream is over.
Does monitoring charge me when nothing changed? Unchanged channels are not returned and cost no row price. Each channel checked costs the check fee ($0.30 per 1,000), changed or not - that is what pays for polling.
Do I need a Kick account or API key? No. The Actor reads the public channel data Kick's website loads, with no login.
Can I get the viewer count of a Kick stream over time?
Yes. Run it on a schedule with monitoring off and every run returns each channel's current viewerCount with a scrapedAt time; with monitoring on you get the highest value seen in each ended row.
Good to know
- The rows come from the channel endpoint that Kick's own website uses (
kick.com/api/v2/channels/<name>). It is not a documented developer API, so Kick can change it without notice; if it does, the run returns freeunreadablerows with the message Kick sent instead of guessing. - For a channel that is not live, Kick's channel data does not include its most recent past stream, so no last-stream title or time is returned.
- A stream that starts and ends entirely between two monitoring runs is not seen. Run more often if short streams matter to you.
viewerCountis whatever Kick reported at the moment of the request; it is not an average or a peak.- Underscore and hyphen are part of the name:
ice_poseidonandice-poseidonare two different Kick channels, so names are sent exactly as typed apart from lower case. - Up to 1,000 channels per run; split longer lists across runs.
- This Actor reports status, stream details and counts; it does not record or download streams and does not read chat.
Example input
{"channels": ["xqc", "iceposeidon", "https://kick.com/adinross"],"monitoringMode": true,"onlyLive": false,"maxChannels": 100}
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.