# 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) — Channel/person id Example: `38770854`
- `limit` (query, optional, string) — Max results 1-50 (default 20) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rutube-api/v1/channel?id=38770854&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 and endpoint list

**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 Example: `news`
- `limit` (query, optional, string) — Max results 1-50 (default 20) 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 search) Example: `a180471182f720083305d002138ec091`

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

**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)
```


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