# RUTUBE API
> Live data from RUTUBE, the largest Russian video platform with tens of millions of users — served straight from its public web API, no key, nothing cached. Search videos by query and get their view counts, duration and channel; pull one video's full stats (views, duration, publish date, category and author); and list a channel's recent uploads by its person id. A distinct video-platform feed, separate from YouTube, Vimeo, Bilibili, Dailymotion, PeerTube and other video APIs.

## 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/rutube-api/..."
```

## Pricing
- **Free** (Free) — 4,500 calls/Mo, 2 req/s
- **Starter** ($7/Mo) — 95,000 calls/Mo, 8 req/s
- **Pro** ($21/Mo) — 480,000 calls/Mo, 20 req/s
- **Business** ($49/Mo) — 2,800,000 calls/Mo, 45 req/s

## Endpoints

### RUTUBE

#### `GET /v1/channel` — A channel's recent uploads by person id

**Parameters:**
- `id` (query, required, string) — Numeric channel/person id Example: `695267`
- `limit` (query, optional, string) — Max videos (1-50) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rutube-api/v1/channel?id=695267&limit=20"
```

**Response:**
```json
{
    "data": {
        "count": 20,
        "source": "RUTUBE",
        "videos": [
            {
                "id": "40849908dae223bd89b81c8d1c3b9f25",
                "url": "https://rutube.ru/video/40849908dae223bd89b81c8d1c3b9f25/",
                "title": "КОТ СЛИШКОМ ТЯЖЕЛЫЙ ДЛЯ БАБУЛИ #shorts #vr #iamcat",
                "views": 159,
                "channel": {
                    "id": 38770854,
                    "url": "https://rutube.ru/video/person/38770854/",
                    "name": "Shkav Games"
                },
                "category": "Разное",
                "is_adult": false,
                "published": "2026-06-09T16:00:52",
                "thumbnail": "https://pic.rtbcdn.ru/video/2026-06-09/2a/7c/2a7c5441f585262e2cbcb3dc88ef7a96.jpg",
                "duration_sec": 24
            },
            {
                "id": "e7fe0b84da8ada5e0dd5a7bb79e6881a",
                "url": "https://rutube.ru/video/e7fe0b84da8ada5e0dd5a7bb79e6881a/",
                "title": "КОТ УМЕНЬШИЛ БАБУЛЮ В ПАНАМКЕ #shorts #vr #iamcat",
                "views": 326,
                "channel": {
                    "id": 38770854,
                    "url": "https://rutube.ru/video/person/38770854/",
                    "name": "Shkav Games"
                },
                "category": "Разное",
                "is_adult": false,
                "published": "2026-06-09T14:01:23",
               
…(truncated, see openapi.json for full schema)
```

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

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

**Response:**
```json
{
    "data": {
        "source": "RUTUBE public API (rutube.ru/api, live)",
        "service": "rutube-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/video": "One video's full stats by id (id=<hex>, from /v1/search).",
            "GET /v1/search": "Search videos by query (q=news, limit=20). Returns views, duration, channel.",
            "GET /v1/channel": "A channel's recent uploads by person id (id=38770854, limit=20)."
        },
        "description": "Live data from RUTUBE, the largest Russian video platform (tens of millions of users), served straight from its public web API. The search endpoint finds videos by query with their view counts, duration and channel; the video endpoint returns one video's full stats (views, duration, publish date, category, author); the channel endpoint returns a channel's recent uploads by person id. Live, no key, nothing stored. A distinct video-platform feed, separate from YouTube, Vimeo, Bilibili, Dailymotion, PeerTube and other video APIs.",
        "sample_video_id": "b68e4526d60f0945b36853edee93aca8",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-10T22:56:34.029Z",
        "request_id": "d200330e-3c40-4257-b82c-0e968a3c683d"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```

#### `GET /v1/search` — Search videos by query

**Parameters:**
- `q` (query, required, string) — Search query (min 2 chars) Example: `news`
- `limit` (query, optional, string) — Max results (1-50) Example: `20`

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

**Response:**
```json
{
    "data": {
        "count": 20,
        "query": "news",
        "source": "RUTUBE",
        "results": [
            {
                "id": "b68e4526d60f0945b36853edee93aca8",
                "url": "https://rutube.ru/video/b68e4526d60f0945b36853edee93aca8/",
                "title": "Первый информационный",
                "views": 233441,
                "channel": {
                    "id": 695267,
                    "url": "https://rutube.ru/video/person/695267/",
                    "name": "NEWS.BY: новости Беларуси и мира"
                },
                "category": "Телепередачи",
                "is_adult": false,
                "published": "2026-04-13T14:12:17",
                "thumbnail": "https://pic.rtbcdn.ru/video/2026-04-13/8e/a5/8ea5a0b08c6a36237f286fd786dd607c.jpg",
                "duration_sec": 0
            },
            {
                "id": "0214eb496e08748194b054d6598bed2c",
                "url": "https://rutube.ru/video/0214eb496e08748194b054d6598bed2c/",
                "title": "Манифест тотальной войны: Европа выдвинула России условия, достойные лишь трибунала",
                "views": 13898,
                "channel": {
                    "id": 23323865,
                    "url": "https://rutube.ru/video/person/23323865/",
                    "name": "Rogandar NEWs"
                },
                "ca
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/video` — One video's full stats by id

**Parameters:**
- `id` (query, required, string) — Video id (hex, from /v1/search) Example: `b68e4526d60f0945b36853edee93aca8`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rutube-api/v1/video?id=b68e4526d60f0945b36853edee93aca8"
```

**Response:**
```json
{
    "data": {
        "id": "a180471182f720083305d002138ec091",
        "url": "https://rutube.ru/video/a180471182f720083305d002138ec091/",
        "title": "КОСМО УМИРАЕТ! КОТ, ЧТО ТЫ НАТВОРИЛ?! I Am Cat VR / Часть 75",
        "views": 27759,
        "source": "RUTUBE",
        "channel": {
            "id": 38770854,
            "url": "https://rutube.ru/video/person/38770854/",
            "name": "Shkav Games"
        },
        "category": "Видеоигры",
        "is_adult": false,
        "track_id": 451920737,
        "published": "2026-04-17T04:36:27",
        "thumbnail": "https://pic.rtbcdn.ru/video/2026-04-17/00/c9/00c9c6754ad4d9dad7fa6f8cea74e7b8.jpg",
        "description": "😱 КОСМО СЛОМАЛСЯ… и теперь ему срочно нужна операция!\n\nМы с Космо просто наблюдали за птичками в I Am Cat VR… но всё пошло НЕ ПО ПЛАНУ 😳\nОн упал с крыши, и теперь у него не работают гусеницы, повреждена батарея и даже пропал вай-фай 😨\n\nПришлось срочно придумывать, как его починить…\nНо есть одна проблема — МЫ ВООБЩЕ НЕ ВРАЧИ 🤡\n\nВ этом видео тебя ждёт:\n🔧 Безумный ремонт робота\n⚡ Шокер вместо зарядки\n🍞 Тостер как 
…(truncated, see openapi.json for full schema)
```

### Channels

#### `GET /v1/profile` — A channel's metadata and stats (subscribers, total videos/views)

**Parameters:**
- `id` (query, required, string) — Numeric channel/person id Example: `695267`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rutube-api/v1/profile?id=695267"
```

**Response:**
```json
{
    "data": {
        "name": "NEWS.BY: новости Беларуси и мира",
        "joined": "2014-08-29T15:21:39",
        "source": "RUTUBE",
        "avatar_url": "https://pic.rtbcdn.ru/user/2026-05-11/fe/b7/feb731573b037eaa858ceb13456f7097.jpg",
        "channel_id": 695267,
        "channel_url": "https://rutube.ru/channel/695267/",
        "description": "Официальный канал Белтелерадиокомпании Республики Беларусь. БТ / Беларусь 1: новости и эксклюзив",
        "is_official": true,
        "last_upload": "2026-05-11T08:18:56.841139",
        "subscribers": 8014,
        "total_views": 3973038,
        "video_count": 22024
    },
    "meta": {
        "timestamp": "2026-06-13T13:58:23.290Z",
        "request_id": "02309aaf-c966-4c24-a9a6-15e1d1bee5a9"
    },
    "status": "ok",
    "message": "Channel profile retrieved successfully",
    "success": true
}
```

### Discovery

#### `GET /v1/categories` — The list of RUTUBE content categories

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

**Response:**
```json
{
    "data": {
        "note": "RUTUBE's content categories, each with its id and name (Russian, as RUTUBE publishes them). The catalogue of genres on the platform.",
        "count": 35,
        "source": "RUTUBE",
        "categories": [
            {
                "id": 26,
                "name": "Музыка"
            },
            {
                "id": 28,
                "name": "Юмор и развлечения"
            },
            {
                "id": 29,
                "name": "Для детей"
            },
            {
                "id": 31,
                "name": "Авто-мото"
            },
            {
                "id": 34,
                "name": "Фильмы и сериалы"
            },
            {
                "id": 35,
                "name": "Мультфильмы"
            },
            {
                "id": 36,
                "name": "Новости и события"
            },
            {
                "id": 38,
                "name": "Животные"
            },
            {
                "id": 39,
                "name": "Путешествия и природа"
            },
            {
                "id": 40,
                "name": "Разное"
            },
            {
                "id": 42,
                "name": "Люди и общество"
            },
            {
                "id": 43,
                "name": "Спорт"
            },
     
…(truncated, see openapi.json for full schema)
```


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