# Chzzk Channel Scraper (`hgservices/chzzk-channel-scraper`) Actor

Scrape Chzzk (치지직) channels from Naver's live-streaming platform. Get follower counts, verification, live/offline status, current stream title, category, viewer counts, total views, and each channel's recent videos with view counts. No login, no proxy. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/hgservices/chzzk-channel-scraper.md
- **Developed by:** [Harish Garg](https://apify.com/hgservices) (community)
- **Categories:** Videos, Social media, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 channel scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Chzzk Channel Scraper 📺

**Scrape any Chzzk (치지직) channel in seconds** — get follower counts, verification status, live/offline status, current stream title, category, live viewer count and total views. One clean data row per channel, ready to export to Excel, CSV, JSON, or Google Sheets.

Chzzk is Naver's fast-growing live-streaming platform, home to Korea's top gaming, e-sports, and IRL streamers. This Actor turns any public Chzzk channel into structured data you can analyze, monitor, and build on — no account, no browser extension, and no coding required.

### What can Chzzk Channel Scraper do?

- ✅ **Get channel profiles** — channel name, avatar, description, follower count, and verified badge.
- ✅ **Check who is live right now** — a simple live / offline flag for every channel.
- ✅ **Capture the current stream** — stream title, category, and how many viewers are watching.
- ✅ **Track audience size** — live concurrent viewers plus total accumulated views for the broadcast.
- ✅ **See their recent videos** — each channel's latest uploads and past broadcasts with view counts, included by default.
- ✅ **Scrape many channels at once** — paste a whole list and get one row per channel.
- ✅ **Export anywhere** — download as JSON, CSV, Excel, XML, or push straight to Google Sheets, Make, Zapier, or your own app via the Apify API.

### Who is it for?

- **Streamers & creators** tracking their own growth or benchmarking against others.
- **Talent agencies & sponsors** shortlisting and monitoring Chzzk streamers for partnerships.
- **Market & audience researchers** studying Korea's live-streaming and gaming scene.
- **Developers** who need reliable Chzzk channel data feeding a dashboard, bot, or database.

### How to scrape Chzzk channels

1. Click **Try for free** / **Start**.
2. Add one or more channels in the **Chzzk channels to scrape** field — one per line.
   You can paste the full channel URL (for example `https://chzzk.naver.com/9381e7d6816e6d915a44a13c0195b202`) **or** just the 32-character channel ID.
3. Click **Save & Start**.
4. When the run finishes, open the **Output** tab and download your data in any format you like.

> **Where do I find a channel URL?** Open the streamer's page on `chzzk.naver.com`. The address bar shows `chzzk.naver.com/<channelId>` — copy the whole URL and paste it in.

### Input example

```json
{
    "channels": [
        "https://chzzk.naver.com/9381e7d6816e6d915a44a13c0195b202",
        "7efa5b40ee1729ac57d3adbebf3ddb3c"
    ]
}
```

### Output example

Each channel becomes one record like this:

```json
{
    "channelId": "9381e7d6816e6d915a44a13c0195b202",
    "channelName": "Example Streamer",
    "channelUrl": "https://chzzk.naver.com/9381e7d6816e6d915a44a13c0195b202",
    "channelImageUrl": "https://nng-phinf.pstatic.net/.../profile.jpg",
    "verifiedMark": true,
    "channelDescription": "Daily gaming streams 🎮",
    "followerCount": 128940,
    "isLive": true,
    "liveTitle": "Ranked grind to Master!",
    "liveCategory": "League_of_Legends",
    "liveCategoryValue": "League of Legends",
    "categoryType": "GAME",
    "concurrentUserCount": 4213,
    "accumulateCount": 51877,
    "openDate": "2026-08-05 19:30:11",
    "closeDate": null,
    "adult": false,
    "krOnlyViewing": false,
    "tags": ["LoL", "Ranked"],
    "recentVideosCount": 10,
    "recentVideos": [
        {
            "videoNo": 14532446,
            "videoTitle": "Ranked highlights of the week",
            "videoType": "REPLAY",
            "readCount": 88213,
            "duration": 8134,
            "publishDate": "2026-08-04 21:30:00",
            "videoCategoryValue": "League of Legends",
            "thumbnailImageUrl": "https://nng-phinf.pstatic.net/.../thumb.jpg",
            "tags": ["lol"]
        }
    ],
    "scrapedAt": "2026-08-05T11:02:44.512Z"
}
```

### Output fields

| Field | Description |
|---|---|
| `channelId` | The Chzzk channel ID. |
| `channelName` | Channel display name. |
| `channelUrl` | Direct link to the channel. |
| `channelImageUrl` | Channel profile image (avatar). |
| `verifiedMark` | `true` if the channel is verified. |
| `channelDescription` | Channel bio / description. |
| `followerCount` | Number of followers. |
| `isLive` | `true` if the channel is broadcasting live right now. |
| `liveTitle` | Title of the current (or most recent) stream. |
| `liveCategory` | Category code of the stream. |
| `liveCategoryValue` | Human-readable category name (game or topic). |
| `categoryType` | Type of category (for example a game). |
| `concurrentUserCount` | Live viewers watching right now. |
| `accumulateCount` | Total views for the broadcast. For offline channels this is the last stream's final total. |
| `openDate` | When the stream started. |
| `closeDate` | When the stream ended (empty while live). |
| `adult` | `true` if the stream is marked adult-only. |
| `krOnlyViewing` | `true` if viewing is restricted to Korea. |
| `tags` | Stream tags set by the streamer. |
| `scrapedAt` | Timestamp of when the data was collected. |

### Recent videos (included by default)

Each channel row also lists that channel's latest videos and clips — a great way to see what a streamer actually publishes, not just their live moment. Use **Number of recent videos** (default 10, up to 100) to control how many you get per channel, or switch **Include recent videos** off for profile and live status only.

Each `recentVideos` list has one entry per video:

| Field | Description |
|---|---|
| `videoNo` | Video number (used in the video URL). |
| `videoTitle` | Video title. |
| `videoType` | `REPLAY` (past broadcast) or `UPLOAD`. |
| `readCount` | View count. |
| `duration` | Length in seconds. |
| `publishDate` | When it was published. |
| `videoCategoryValue` | Category (game or topic). |
| `thumbnailImageUrl` | Thumbnail image. |
| `tags` | Video tags. |

The row also gets a `recentVideosCount` field with the number of videos returned.

### Pricing

This Actor uses **pay per event** — you pay only for the results you get, with no per-second server charges to guess at:

- **Channel scraped** — charged once for each channel returned (profile + live status).
- **Video details scraped** — charged once for each recent video returned. This applies only when **Include recent videos** is on; turn it off to pay for the base channel data alone.

So a run over 5 channels with 10 recent videos each is billed as 5 channel events + 50 video events. See the **Pricing** tab on the Actor page for the current per-event rates.

### Frequently asked questions

**Do I need a Chzzk or Naver account?**
No. The Actor collects publicly available channel information without any login.

**Can I monitor channels on a schedule?**
Yes. Use the Apify **Schedules** feature to run the Actor every hour or day and keep a fresh dataset — perfect for tracking follower growth or catching when a streamer goes live.

**How many channels can I scrape?**
As many as you like — add them all to the input list and the Actor returns one row each.

**In what formats can I export the data?**
JSON, CSV, Excel, XML, RSS, or HTML. You can also connect the output to Google Sheets, Make, Zapier, Slack, or pull it programmatically with the Apify API.

**Is web scraping legal?**
This Actor collects only publicly accessible data. As with any scraping, you are responsible for how you use the data and for complying with applicable laws and Chzzk's terms. Do not collect personal or sensitive data without a lawful basis.

### Integrations & API

Run Chzzk Channel Scraper from the Apify Console, on a schedule, or programmatically through the **Apify API** and client libraries for JavaScript and Python. Connect the results to Google Sheets, Make, Zapier, Airbyte, and hundreds of other tools, or feed them into an AI agent over MCP.

Have a feature request or a Chzzk data need this Actor does not cover yet? Open an issue on the Actor page — feedback shapes the roadmap.

# Actor input Schema

## `channels` (type: `array`):

The Chzzk (치지직) channels to scrape. Add one channel per line — paste the full channel URL (for example https://chzzk.naver.com/9381e7d6816e6d915a44a13c0195b202) or just the 32-character channel ID. The scraper returns one row per channel with the profile and the live status.

## `includeRecentVideos` (type: `boolean`):

Also return each channel's most recent videos and clips — title, type, view count, duration, category and tags — as a list inside each channel row. On by default; turn off for profile and live status only.

## `recentVideosCount` (type: `integer`):

How many recent videos to return per channel when "Include recent videos" is on.

## Actor input object example

```json
{
  "channels": [
    "9381e7d6816e6d915a44a13c0195b202",
    "https://chzzk.naver.com/7efa5b40ee1729ac57d3adbebf3ddb3c"
  ],
  "includeRecentVideos": true,
  "recentVideosCount": 10
}
```

# Actor output Schema

## `channels` (type: `string`):

Every scraped channel as a data record — download as JSON, CSV, or Excel.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "channels": [
        "9381e7d6816e6d915a44a13c0195b202",
        "https://chzzk.naver.com/0b33823ac81de48d5b78a38cdbc0ab94",
        "7efa5b40ee1729ac57d3adbebf3ddb3c"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hgservices/chzzk-channel-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "channels": [
        "9381e7d6816e6d915a44a13c0195b202",
        "https://chzzk.naver.com/0b33823ac81de48d5b78a38cdbc0ab94",
        "7efa5b40ee1729ac57d3adbebf3ddb3c",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("hgservices/chzzk-channel-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "channels": [
    "9381e7d6816e6d915a44a13c0195b202",
    "https://chzzk.naver.com/0b33823ac81de48d5b78a38cdbc0ab94",
    "7efa5b40ee1729ac57d3adbebf3ddb3c"
  ]
}' |
apify call hgservices/chzzk-channel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hgservices/chzzk-channel-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/H18uXWFsphwvJVZEM/builds/pMOWJuIwGvfiDje3n/openapi.json
