# SOOP (AfreecaTV) Live Streaming API
> Live data from SOOP (formerly AfreecaTV, sooplive.co.kr), South Korea's biggest live-streaming platform, read keyless from its public web API. SOOP is where Korea's "BJ" broadcasters stream games, talk, music and just-chatting to audiences that send star-balloon gifts in real time — the platform that defined Korean streaming culture, much bigger there than Twitch. This exposes who is broadcasting live right now, how many are watching, which categories are hot and each broadcaster's standing. The live endpoint lists the top broadcasts on air right now, ranked by current viewers, each with its BJ (broadcaster) name, title, viewer count, category and how long it has been live. The categories endpoint aggregates the top live broadcasts by category — the games and genres pulling the biggest audiences right now. The station endpoint returns one broadcaster's channel profile by their BJ id: follower count, the all-time views and visits their channel has drawn, when they joined, their total hours broadcast, their partner/best-BJ status and whether they are live now. This is the SOOP platform cut — a distinct social/streaming platform, separate from the Twitch, Kick, SHOWROOM, Bilibili and other feeds in the catalogue. Viewer and follower counts are live; nothing is stored beyond a short cache. Counts are integers; times are reported by the platform (KST).

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/soop-api/..."
```

## Pricing
- **Free** (Free) — 1,250 calls/Mo, 2 req/s
- **Starter** ($17/Mo) — 31,000 calls/Mo, 6 req/s
- **Pro** ($54/Mo) — 172,000 calls/Mo, 16 req/s
- **Scale** ($149/Mo) — 590,000 calls/Mo, 40 req/s

## Endpoints

### Live

#### `GET /v1/live` — Top broadcasts live now, ranked by viewers

**Parameters:**
- `limit` (query, optional, string) — Max broadcasts (1-60) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/soop-api/v1/live?limit=25"
```

**Response:**
```json
{
    "data": {
        "note": "The top SOOP broadcasts on air right now, ranked by current viewers — each with its BJ (broadcaster) name, title, viewer count, category and how long it has been live. total_live_broadcasts is the platform-wide count of live channels (this returns the top by viewers). Pass limit (1-60, default 25). Live, cached ~45s.",
        "count": 25,
        "source": "SOOP public web API (live.sooplive.co.kr), keyless",
        "broadcasts": [
            {
                "bj_id": "sccha21",
                "title": "팡이요 쇼케이스4시★데몬리마기원  메이플플래닛",
                "bj_nick": "팡이요",
                "started": "2026-06-12 22:30:16",
                "viewers": 4314,
                "category": "메이플스토리",
                "hashtags": [
                    "메이플스토리",
                    "팡이요",
                    "메이플",
                    "넥슨커넥트",
                    "메이플스토리월드"
                ],
                "channel_url": "https://play.sooplive.co.kr/sccha21",
                "broadcast_no": 294768943,
                "live_minutes": 913,
                "broadcast_views": 5691
            },
            {
                "bj_id": "jrdart",
                "title": "무수네민박 답사 멸망전 [무수]",
                "bj_nick": "이지상:)",
                "started": "2026-06-13 09:57:00",
                "viewers": 3490,
                
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/live-search` — Find live broadcasts on air by keyword

**Parameters:**
- `q` (query, required, string) — Keyword (game/topic/title) Example: `lol`
- `limit` (query, optional, string) — Max results (1-50) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/soop-api/v1/live-search?q=lol&limit=20"
```

### Categories

#### `GET /v1/categories` — Top live broadcasts aggregated by category

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/soop-api/v1/categories"
```

**Response:**
```json
{
    "data": {
        "note": "The categories pulling the biggest audiences on SOOP right now — for each game or genre among the top live broadcasts, the number of those broadcasts and their combined viewers, with the leading channel, ranked by viewers. Based on the top live broadcasts by viewers (where the audience concentrates), not every one of the platform's live channels. Live, cached ~45s.",
        "count": 21,
        "source": "SOOP public web API (live.sooplive.co.kr), keyless",
        "categories": [
            {
                "top_bj": {
                    "bj_nick": "팡이요",
                    "viewers": 4314
                },
                "viewers": 6326,
                "category": "메이플스토리",
                "live_broadcasts": 3
            },
            {
                "top_bj": {
                    "bj_nick": "마이곰이",
                    "viewers": 1659
                },
                "viewers": 5597,
                "category": "버추얼",
                "live_broadcasts": 11
            },
            {
                "top_bj": {
                    "bj_nick": "이지상:)",
                    "viewers": 3490
                },
                "viewers": 5200,
                "category": "여행",
                "live_broadcasts": 6
            },
            {
                "top_bj": {
                    "bj_nick": "박진우[JINU]",
                    "viewers": 969
                },
                "vi
…(truncated, see openapi.json for full schema)
```

### Station

#### `GET /v1/station` — One broadcaster's channel profile by bj_id

**Parameters:**
- `bj_id` (query, required, string) — SOOP broadcaster id Example: `phonics1`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/soop-api/v1/station?bj_id=phonics1"
```

**Response:**
```json
{
    "data": {
        "note": "One SOOP broadcaster's channel: their follower count, the all-time views and visits the channel has drawn, when they joined, their total hours broadcast and their partner/best-BJ status — plus, if they are live now, their current viewer count and how long they have been on. Live, cached ~45s.",
        "bj_id": "sccha21",
        "joined": "2010-10-04 11:29:49",
        "source": "SOOP public web API (chapi.sooplive.co.kr/api/{bj}/station), keyless",
        "is_live": true,
        "followers": 522531,
        "is_best_bj": true,
        "channel_url": "https://play.sooplive.co.kr/sccha21",
        "total_views": 454574956,
        "live_minutes": null,
        "live_viewers": null,
        "total_visits": 17887479,
        "is_partner_bj": true,
        "profile_image": "//profile.img.sooplive.co.kr/LOGO/sc/sccha21/sccha21.jpg",
        "station_title": "메이플스토리 스카니아 방송",
        "total_broadcast_hours": 60084
    },
    "meta": {
        "timestamp": "2026-06-13T04:42:48.480Z",
        "request_id": "840391d3-e369-453b-8c06-5b8a64f34264"
    },
    "status": "ok",
    "message": "Station retrieved successfully",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/soop-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "live takes limit (1-60, default 25). categories and meta take no parameters. station takes bj_id (a SOOP broadcaster id, required). Viewer and follower counts are live integers; timestamps are KST as reported, durations computed in minutes/hours. A short ~45-second cache fronts the upstream.",
        "sample": {
            "top_bj": "팡이요",
            "viewers": 4314,
            "total_live_broadcasts": 1641
        },
        "source": "SOOP public web API (sooplive.co.kr), keyless, live",
        "service": "soop-api",
        "endpoints": {
            "GET /v1/live": "Top broadcasts live now, ranked by viewers (limit).",
            "GET /v1/meta": "This document.",
            "GET /v1/station": "One broadcaster's channel profile by bj_id (bj_id=sccha21).",
            "GET /v1/categories": "Top live broadcasts aggregated by category."
        },
        "description": "Live data from SOOP (formerly AfreecaTV), South Korea's biggest live-streaming platform, from its public web API (no key). The live endpoint lists the top broadcasts on air now ranked by viewers (BJ name, title, viewers, category, live duration); categories aggregates the top live broadcasts by game/genre; station returns one broadcaster's channel profile by BJ id (followers, all-time views/visits, join date, total broadcast hours, partner/best-BJ status, live status). The SOOP platform cut — a distinct social/streaming platform, separate from the Twitch, Kick, 
…(truncated, see openapi.json for full schema)
```

### Broadcasters

#### `GET /v1/search` — Find broadcasters (BJs) by name

**Parameters:**
- `q` (query, required, string) — Broadcaster name Example: `lol`
- `limit` (query, optional, string) — Max results (1-50) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/soop-api/v1/search?q=lol&limit=20"
```


---
Marketplace page: https://www.oanor.com/api/soop-api
OpenAPI spec: https://www.oanor.com/api/soop-api/openapi.json
