# Kick Live Streams & Viewer Count

> Check live status, viewers, title, category and paid subscribers for up to 1,000 Kick channels, or top streams of a category. Your own free Kick key.

URL: https://cliqtomedia.com/actors/kick-channels/

Category: Video, audio & streaming · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Paste Kick channel names or links. Get live status, viewers, title, category and paid subscribers. You can also list the top live streams of a category. You use your own free Kick key.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `xqc` in Channels. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Kick Live Streams & Viewer Count gets live status, viewer count, stream title, category, language and paid subscriber count for a list of Kick channels, or the top live streams of any Kick category. You paste channel names or kick.com links, or type a category such as *Just Chatting*, and add your own free Kick Client ID and Client Secret. You get one clean table row per channel, with numbers as numbers.

- Accepts channel names (`xqc`), handles (`@adinross`) and links (`https://kick.com/xqc`). Upper and lower case do not matter.
- Channel rows come in the order of your list. A channel that appears twice is looked up once.
- For a category, the Actor saves the channels live in it right now, most viewers first, up to `maxItems`. A channel that is already in your list is not saved twice.
- A channel that Kick does not have gets a `not_found` row with your original line. A line that is not a Kick channel name gets an `invalid_input` row.
- An offline channel has `isLive: false` and `null` viewers, title and category. `null` is never written as `0`.
- E-mail addresses in a channel description are replaced with `[email removed]`. The Actor does not collect contacts.

### Good for

- You track a list of streamers and need to know who is live, with how many viewers, right now.
- You want the biggest live streams of a category (for example *Slots & Casino* or *Just Chatting*) as a table.
- You want an official, stable data source instead of page scraping.

### Not a good fit

- You need follower counts. The official Kick API does not give followers, so this Actor does not have them. It gives the paid subscriber count instead.
- You need clips, past broadcasts (VODs), chat messages or viewer lists.
- You need e-mails or other contacts of streamers. This Actor does not collect them.
- You have no Kick account with two-factor authentication. You need it to make the free key.

## Price

Prices will be shown after release.

## Questions

### Do I need a Kick key?

Yes. You make a free Client ID and Client Secret in your Kick account. Two-factor login must be on.

### Does it give follower counts?

No. The official Kick API does not give followers. You get paid subscribers instead.

### What if a channel is offline?

The row shows isLive false. Viewers, title and category are empty, not zero.

### How many channels can I check?

Up to 1,000 channels and 20 categories per run. Kick gives up to 100 live streams per category.

### Do I need a Kick account?

Yes, to make the free key, with two-factor authentication on. The Actor does not log in to your account and does not use cookies.

### Does it cost Kick money?

No. The Kick API is free. You pay only the Apify price above.

### Can I switch from another Kick scraper without changes?

Not without changes. Field names differ (for example `viewerCount`, `channelSlug`, `title`), and there are no followers. In return you get one row format for channels and categories, clear `not_found` / `invalid_input` rows and ISO UTC times.

### Is personal data included?

Only public channel and stream data that Kick shows on the channel page. E-mail addresses in descriptions are removed. No viewer or chat data.

## Data fields

- `status` (string): complete = all fields found; partial = saved, but Kick did not return some fields (see message); not_found = no Kick channel or category with this name (small empty-result fee); invalid_input = not a Kick channel name (small empty-result fee); api_key_required = free notice when the Client ID or Secret is missing.
- `input` (string): Your channels or categories entry as typed.
- `matchedBy` (string): channel = from your channels list; category = a live stream from one of your categories.
- `rank` (integer): 1-based position among the category's live streams by viewers (category rows only).
- `channelSlug` (string): Channel name as in kick.com/<channel>.
- `userId` (integer): Kick broadcaster user id; stable even when the channel name changes.
- `displayName` (string): Channel display name.
- `isLive` (boolean): True when the channel is live right now.
- `title` (string): Live stream title; null when offline.
- `viewerCount` (integer): Current viewers; null when offline (never a made-up 0).
- `category` (string): Category of the live stream, e.g. Just Chatting; null when offline.
- `categoryId` (integer): Kick category id of the live stream.
- `language` (string): Stream language as Kick reports it; null when offline.
- `isMature` (boolean): True when the stream is marked for mature audiences.
- `startedAt` (string): When the live stream started (ISO 8601, UTC).
- `thumbnailUrl` (string): Live stream thumbnail image.
- `description` (string): Channel description. E-mail addresses are replaced with [email removed].
- `activeSubscribers` (integer): Active paid subscribers of the channel as reported by Kick.
- `profilePictureUrl` (string): Channel avatar.
- `bannerPictureUrl` (string): Channel banner image.
- `url` (string): https://kick.com/<channel>.
- `source` (string): Always kick-public-api.
- `fetchedAt` (string): When this row was fetched (ISO 8601, UTC).
- `message` (string): Why a row is partial, not_found, invalid_input or api_key_required; null otherwise.

## Input settings

- `clientId` (string): Client ID of your own Kick app from kick.com → Settings → Developer. Stored encrypted; never written to the dataset, logs or run summary.
- `clientSecret` (string): Client Secret of the same app. Stored encrypted; the app token made from it is revoked at the end of the run.
- `channels` (array): Kick channel names, @handles or kick.com links, up to 1000. Each one gets a row: live status and channel stats, or a not_found / invalid_input row explaining why there is none (charged as a small empty result).
- `categories` (array): Optional: Kick category names (e.g. Just Chatting, Slots & Casino) or numeric category ids, up to 20. For each one the Actor saves the channels live in it right now, most viewers first. Can be combined with the channels list.
- `maxItems` (integer): Save up to this many live streams from each category, most viewers first (Kick returns at most 100). Does not limit the channels list. Each saved channel is one paid result.

## Step by step on Apify

1. Get a key (see above).
2. Paste your Client ID and Client Secret.
3. The Channels field already has `xqc`. Add more names or links, one per line, or add a category in Categories.
4. Click Start. A few channels take about 3 seconds.
5. Open the Channels view of the dataset, or download it as CSV, Excel or JSON.

## Use cases

| Task | Input | Key fields | Next step |
|---|---|---|---|
| Check which of your streamers are live | the creators' channel names | `isLive`, `viewerCount`, `title`, `category` | Alert your team or update a dashboard |
| Find top streamers of a category for a campaign | `categories`, `maxItems: 100` | `rank`, `viewerCount`, `language`, `activeSubscribers` | Shortlist channels of the right size and language |
| Track viewers over time | the same list every 15 minutes or every hour | `viewerCount`, `fetchedAt`, `userId` | Chart peak and average viewers in a sheet |
| Clean a creator list | a list from a sheet or CRM | `status`, `channelSlug`, `url` | Remove renamed or banned channels |
| Enrich data for BI or a model | many channels | all fields | Join on `userId` |

## Tips

- Paste names, @handles or kick.com links. Each form works.
- Add a category like Just Chatting to see the most watched channels.
- Run it on a schedule to build a history of viewer counts.

## Limits

Data comes from the Kick Public API under your own Kick app. Please follow the Kick Developer Terms. This Actor is not affiliated with or endorsed by Kick.

- Up to 1,000 lines in `channels` and up to 20 categories with up to 100 live streams each per run. We tested both at once: 1,449 rows saved in about 118 seconds (the other category streams were already in the channel list).
- Kick gives at most 100 live streams per category, most viewers first.
- Kick marks its old live streams endpoint (the only one sorted by viewers) as deprecated. If Kick turns it off, the Actor switches by itself to the newer endpoint, reads all live streams of the category and sorts them by viewers. Results stay the same; a big category takes a few more requests.
- If Kick says "too many requests" and the limit does not come back after about 45 seconds of waiting, the Actor keeps the saved rows and ends as `PARTIAL` with reason `QUOTA_LIMIT`. The run still SUCCEEDED. Run again a few minutes later, or split the list.
- The Actor stops looking up channels 15 seconds before the run timeout so it can save the results. It keeps the saved rows and ends as `PARTIAL` with reason `TIME_LIMIT`. The default timeout of 300 seconds is enough for the maximum input.
- If Kick fails again and again, the run keeps saved rows and ends with reason `SOURCE_ERROR`.
- `isLive` and `viewerCount` are live at `fetchedAt` and change all the time.
- No follower counts: the official Kick Public API does not give them.

## Sample result

```json
{
  "status": "complete",
  "input": "Just Chatting",
  "matchedBy": "category",
  "rank": 1,
  "channelSlug": "absi",
  "userId": 27894320,
  "displayName": "Absi",
  "isLive": true,
  "title": "مين ضيف اليوم",
  "viewerCount": 18942,
  "category": "Just Chatting",
  "categoryId": 15,
  "language": "ar",
  "isMature": false,
  "startedAt": "2026-10-22T08:59:29.000Z",
  "thumbnailUrl": "https://images.kick.com/video_thumbnails/IUNVIedvenl6/4RMUEbHHHebd/480.webp",
  "description": null,
  "activeSubscribers": 1593,
  "profilePictureUrl": "https://files.kick.com/images/user/27894320/profile_image/conversion/951102c4-68da-415c-a344-d6dbaec3fb05-medium.webp",
  "bannerPictureUrl": null,
  "url": "https://kick.com/absi",
  "source": "kick-public-api",
  "fetchedAt": "2026-10-22T10:31:40.720Z",
  "message": null
}
```

## Similar tools

- [YouTube Search Results Scraper — No Login](https://cliqtomedia.com/actors/youtube-search-scraper/)
- [Bluesky Scraper — Posts, Profiles, Feeds & Threads, No Login](https://cliqtomedia.com/actors/bluesky-scraper/)
- [Threads Scraper — Posts, Profiles, Replies & Search](https://cliqtomedia.com/actors/threads-scraper/)
- [YouTube Subtitles & Transcript Scraper API](https://cliqtomedia.com/actors/youtube-transcript-scraper/)
- [YouTube Comments Scraper](https://cliqtomedia.com/actors/youtube-comments-scraper/)
- [Apple Podcast Directory & RSS Contacts Scraper](https://cliqtomedia.com/actors/podcast-directory-rss-contacts-scraper/)
