# OK.ru Video Downloader (`codenest/ok-ru-video-downloader`) Actor

Effortlessly extracts video title, description, duration, like count, upload date + 6 quality formats (144p to 1080p) with direct download URLs. Returns JSON array with complete metadata.

- **URL**: https://apify.com/codenest/ok-ru-video-downloader.md
- **Developed by:** [CodeNest](https://apify.com/codenest) (community)
- **Categories:** Videos, Social media, Developer tools
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🎥 OK.ru Video Downloader - High-Quality Video Extraction Tool

**Effortlessly download videos from OK.ru (Odnoklassniki) with our powerful **OK.ru Video Downloader**! This Apify actor enables you to batch download OK.ru videos while preserving original quality, complete metadata, and providing up to 1080p Full HD resolution.**

---

### 📌 Overview

Need to archive OK.ru content, repurpose videos, or analyze engagement? This **OK.ru Video Downloader** delivers:

- 🎬 **Full HD 1080p Support** - Highest quality available
- 📝 **Rich Metadata** - Titles, descriptions, upload dates, like counts
- 🔄 **Batch Processing** - Download multiple videos simultaneously
- 📊 **Engagement Analytics** - Like counts and popularity metrics
- 🎯 **Direct CDN Access** - Fast, reliable downloads

Perfect for content creators 🎨, social media managers 📱, video editors ✂️, and data analysts 📈!

---

### ⚡ Core Capabilities

#### 🎬 Video Quality Options
- **Full HD (1080p)** - Highest quality (1920x1080)
- **HD Ready (720p)** - Great balance of quality & size
- **SD (480p)** - Standard definition (852x480)
- **Low (360p)** - Mobile optimized (640x360)
- **Lowest (240p)** - Bandwidth saving (426x240)
- **Mobile (144p)** - Ultra-compact (256x144)

#### 📝 Metadata Extraction
- **Video Title** - Full original title
- **Description** - Complete video description
- **Upload Date** - YYYYMMDD format
- **Duration** - Length in seconds
- **Like Count** - Engagement metrics
- **Video ID** - Unique identifier

#### 🚀 Advanced Features
- **HLS Streaming Support** - Multiple format options
- **Auto Quality Selection** - Best available resolution
- **Bulk Mode** - Process unlimited URLs
- **Error Resilience** - Continues on individual failures
- **Thumbnail Extraction** - High-quality preview images

---

### 📥 Input Configuration

Simply enter OK.ru video URLs in the Input Section, click "Start", and let the **OK.ru Video Downloader** handle the rest. URLs should follow this format:

```json
{
  "video_urls": [
    {
      "url": "https://ok.ru/video/12562133093043",
      "method": "GET"
    },
    {
      "url": "https://ok.ru/video/13779034180220"
    },
    {
      "url": "https://ok.ru/video/14091316300315"
    }
  ]
}
````

#### 📊 Input Specifications

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `video_urls` | Array | ✅ Yes | OK.ru video URLs to process |
| `url` | String | ✅ Yes | Valid OK.ru video URL (video/ format) |
| `method` | String | ❌ No | HTTP method (GET default) |

***

### 📤 Output Structure

Here's what the **OK.ru Video Downloader** returns for each video:

```json
{
  "success": true,
  "input_url": "https://ok.ru/video/12562133093043",
  "video_id": "12562133093043",
  "title": "Венские вафли — рецепт, который работает 100 %",
  "description": "Video \"Венские вафли...\" you can watch on the OK player",
  "duration": 88,
  "thumbnail": "https://iv.okcdn.ru/i?r=BDFSTM1h2o92P_v...",
  "uploader": "",
  "uploader_id": "",
  "upload_date": "20260324",
  "view_count": null,
  "like_count": 5432,
  "comment_count": null,
  "age_limit": 0,
  "webpage_url": "https://ok.ru/video/12562133093043",
  "best_download_url": "https://vd329.okcdn.ru/expires/.../video/",
  "formats": [...]
}
```

#### 📋 Output Field Documentation

**🎬 Core Video Information**
| Field | Description |
|-------|-------------|
| `success` | Download status (true/false) |
| `video_id` | Unique OK.ru video identifier |
| `title` | Complete video title (supports Cyrillic) |
| `description` | Full video description text |
| `duration` | Video length in seconds |
| `thumbnail` | High-quality preview image URL |

**📊 Engagement Metrics**
| Field | Description |
|-------|-------------|
| `like_count` | Number of likes (social proof) |
| `comment_count` | Comment count (if available) |
| `view_count` | View count (when accessible) |
| `upload_date` | Publication date in YYYYMMDD format |

**🔗 Download Links**
| Field | Description |
|-------|-------------|
| `best_download_url` | Recommended highest quality URL |
| `webpage_url` | Original OK.ru page URL |
| `formats` | Array of all available quality options |

***

### 🎯 Quality Tiers Available

The **OK.ru Video Downloader** automatically detects and provides 6 quality tiers:

| Tier | Resolution | Format ID | Bitrate Range | Best For |
|------|------------|-----------|---------------|----------|
| 🏆 **Full HD** | 1920×1080 | `full` / `hls-5208` | 2.8-5.2 Mbps | Professional editing |
| ⭐ **HD** | 1280×720 | `hd` / `hls-2646` | 1.5-2.6 Mbps | YouTube repurposing |
| 📺 **SD** | 852×480 | `sd` / `hls-1397` | 1.0-1.4 Mbps | Mobile viewing |
| 📱 **Low** | 640×360 | `low` / `hls-923` | 889-923 Kbps | Bandwidth saving |
| 📱 **Lowest** | 426×240 | `lowest` / `hls-530` | 515-530 Kbps | Slow connections |
| 📱 **Mobile** | 256×144 | `mobile` / `hls-329` | 321-329 Kbps | Preview only |

***

### 🛠️ Technical Features

#### 🎬 Format Support

- **Container:** MP4 (universal compatibility)
- **Frame Rates:** 25-30 fps (adaptive)
- **HLS Streaming:** Multiple adaptive bitrate options
- **Direct URLs:** CDN-optimized downloads

#### 📊 Metadata Extraction

- **Cyrillic Support:** Full Russian text preservation
- **Timestamp Accuracy:** Precise upload date extraction
- **Engagement Metrics:** Like counts for popularity analysis
- **Content Classification:** Age limit detection

#### ⚡ Performance Features

- **Parallel Processing:** Batch download multiple videos
- **Resume Capable:** Continues after individual failures
- **Auto-Retry:** Built-in error recovery
- **CDN Optimization:** Fastest available servers

***

### 💼 Use Cases

| User Type | How They Benefit from OK.ru Video Downloader |
|-----------|-----------------------------------------------|
| **Content Creators** | Repurpose OK.ru videos for YouTube, TikTok, Instagram |
| **Social Media Managers** | Archive client content and track engagement |
| **Video Editors** | Access raw footage for remixing and editing |
| **Market Researchers** | Analyze video popularity and trends |
| **Educators** | Download educational content for offline use |
| **Journalists** | Preserve news videos for documentation |

***

### ✅ Why Choose Our OK.ru Video Downloader?

- 🚀 **Fast Performance** - Direct CDN access for maximum speed
- 🎯 **High Success Rate** - Robust error handling
- 📊 **Rich Data** - Comprehensive metadata extraction
- 🔄 **Regular Updates** - Maintained for OK.ru compatibility
- 💰 **Cost Effective** - Batch processing saves execution time
- 🌐 **No Login Required** - Works with public videos only

***

### ⚠️ Limitations

- Only works with **public** OK.ru videos
- Private or age-restricted videos are not accessible
- Rate limits may apply based on OK.ru restrictions
- Uploader information may be unavailable for some videos

***

### 🔗 Related Actors (Complete Video Scraping Suite)

Explore our professional video downloader collection:

#### 🎥 Instagram Tools

- [Instagram Reels Downloader](https://apify.com/codenest/instagram-reels-downloader)

#### 📘 Facebook Tools

- [Facebook Video Downloader](https://apify.com/codenest/facebook-video-downloader)
- [Facebook Reels Downloader](https://apify.com/codenest/facebook-reels-downloader)

### 📧 Need Customization?

Want **higher resolutions**, **batch automation**, or **metadata enhancements** for the **OK.ru Video Downloader**?

✉️ Email **<codenest2.0@gmail.com>** for tailored solutions!

# Actor input Schema

## `video_urls` (type: `array`):

List of OK.ru video URLs to extract. Each item must have a 'url' key.

## `cookies` (type: `string`):

Netscape-format cookies.txt content from a logged-in OK.ru browser session. Enables uploader name, view count, and comment count fields that are hidden behind authentication. Export using a browser cookie-export extension.

## `proxy` (type: `object`):

Apify proxy settings. Residential proxies recommended if OK.ru blocks datacenter IPs.

## Actor input object example

```json
{
  "video_urls": [
    {
      "url": "https://ok.ru/video/12562133093043"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "video_urls": [
        {
            "url": "https://ok.ru/video/12562133093043"
        }
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("codenest/ok-ru-video-downloader").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 = {
    "video_urls": [{ "url": "https://ok.ru/video/12562133093043" }],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("codenest/ok-ru-video-downloader").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "video_urls": [
    {
      "url": "https://ok.ru/video/12562133093043"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call codenest/ok-ru-video-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=codenest/ok-ru-video-downloader",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "OK.ru Video Downloader",
        "description": "Effortlessly extracts video title, description, duration, like count, upload date + 6 quality formats (144p to 1080p) with direct download URLs. Returns JSON array with complete metadata.",
        "version": "0.0",
        "x-build-id": "aHpON9tRWAjoSLufM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/codenest~ok-ru-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-codenest-ok-ru-video-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/codenest~ok-ru-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-codenest-ok-ru-video-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/codenest~ok-ru-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-codenest-ok-ru-video-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "video_urls"
                ],
                "properties": {
                    "video_urls": {
                        "title": "OK.ru Video URLs",
                        "type": "array",
                        "description": "List of OK.ru video URLs to extract. Each item must have a 'url' key.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "url": {
                                    "title": "Video URL",
                                    "description": "Example: https://ok.ru/video/12562133093043",
                                    "type": "string",
                                    "pattern": "^https?://(www\\.)?ok\\.ru/video/\\d+"
                                }
                            },
                            "required": [
                                "url"
                            ]
                        }
                    },
                    "cookies": {
                        "title": "Session Cookies (optional)",
                        "type": "string",
                        "description": "Netscape-format cookies.txt content from a logged-in OK.ru browser session. Enables uploader name, view count, and comment count fields that are hidden behind authentication. Export using a browser cookie-export extension."
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Residential proxies recommended if OK.ru blocks datacenter IPs."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
