Rutube Video Downloader avatar

Rutube Video Downloader

Pricing

from $0.0825 / metadata

Go to Apify Store
Rutube Video Downloader

Rutube Video Downloader

Process one publicly accessible Rutube video page for structured metadata and an optional stored video file. Choose metadata-only mode or a download quality preference.

Pricing

from $0.0825 / metadata

Rating

0.0

(0)

Developer

TrueFetch

TrueFetch

Maintained by Community

Actor stats

1

Bookmarked

12

Total users

0

Monthly active users

2 hours ago

Last modified

Security

Limited permissions

Share

What does Rutube Video Downloader do?

Rutube Video Downloader turns one Rutube video link into a record you can export, compare and reuse. Read the title, creator, duration, available engagement and source URL without downloading a file, or request an MP4 for Rutube channel and topic research.

Keep channel attribution and source URLs beside videos selected for topic or editorial research. Metadata is the default; select a download quality only when the workflow needs the file.

How do I run Rutube Video Downloader?

  1. Open the Input tab and use the small example below.
  2. Click Start and wait for that run to finish.
  3. Open the default Dataset to inspect the row, then export JSON or CSV. For a download, open the row's video link to retrieve the MP4.
{
"video_url": "https://rutube.ru/video/c58f502c7bb34a8fcdd976b221fca292/",
"video_quality": "metadata"
}

Start with Metadata to inspect the record; change video_quality to low, medium or high when you need a saved file.

What data does Rutube Video Downloader return?

The Dataset has 43 top-level fields. Types below describe populated values; every field is nullable when unrequested or unavailable. Preserve genuine zero and false values. [] means an observed empty list.

FieldJSON typeMeaning and unit
idstringUnique video identifier from the source platform
source_urlstringCanonical source page returned for the individual video; for a definitive missing answer, the queried link. It is separate from the saved MP4 URL.
thumbnailstringDirect link to the source platform thumbnail image
platformstringSource platform name in lowercase.
media_typestringKind of media the source reports, such as video or audio.
live_statusstringWhether the item is a normal recording, currently live, or a finished live stream.
availabilitystringSource visibility of the item, such as public, unlisted, subscriber_only, or needs_auth.
age_limitnumberMinimum viewer age the source enforces. Zero means no restriction.
languagestringPrimary language of the item as reported by the source.
titlestringVideo title
descriptionstringFull video description or caption
durationnumberVideo length in seconds
published_atstringSource publication instant in UTC ISO 8601, retaining source precision. A date-only or separate creation time does not become an invented midnight timestamp.
authorstringSource channel or uploader name. Source-specific attribution is retained when provided.
author_idstringStable channel or uploader identifier on the source platform.
author_urlstringDirect link to the creator's profile page
followersnumberFollower or subscriber count of the author's channel at processing time.
is_verifiedbooleanWhether the author's channel carries a verified badge.
categoriesarrayList of categories assigned to the video
tagsarrayHashtags and keywords associated with the video
view_countnumberTotal number of video views
like_countnumberTotal number of likes or favorites
shares_countnumberNumber of times the video has been shared or reposted
saves_countnumberNumber of times viewers saved or bookmarked the item, on sources that expose it.
dislike_countnumberTotal number of dislikes (if available)
comment_countnumberTotal number of comments on the video
widthnumberVideo resolution width in pixels
heightnumberVideo resolution height in pixels
fpsnumberVideo frame rate (frames per second)
video_codecstringVideo format name reported for the video.
audio_codecstringAudio format name reported for the video.
bitratenumberCombined video and audio data rate, in kbit/s.
dynamic_rangestringColour range the source reports for the video, such as SDR or HDR10.
file_extstringFile extension, such as mp4 or webm. Saved downloads use mp4; a metadata lookup may leave this value empty.
file_sizenumberExact bytes of the saved file in download mode; an exact source size in metadata mode.
audio_titlestringTitle of the audio track or background music
audio_artiststringArtist name of the audio track or background music
subtitlesarrayArray of published subtitle language codes. This field contains no caption text or file links; automatic captions are excluded.
chaptersarrayChapter markers with title and start and end time in seconds, when the source defines them.
commentsarrayReturned comment text in source order, with replies where available. Treat this as a sample rather than a complete discussion.
videostringSaved MP4 URL after successful file delivery. Null in metadata mode. If a requested download cannot be retrieved or saved, no row is returned; the run status keeps the warning.
processorstringCanonical Store URL of this Actor.
processed_atstringTime this Actor prepared the public row, in UTC ISO 8601 with a Z suffix. This is the collection timestamp.

Nested objects

PathTypeMeaning
chapters[].titlestringSource chapter title.
chapters[].start_timenumberOffset from the beginning, in seconds.
chapters[].end_timenumberChapter end offset, in seconds.
comments[].authorstringPublic source author name when supplied.
comments[].textstringReturned comment body, separate from the video description.
comments[].like_countnumberSource comment likes.
comments[].published_atstringSource comment publication instant, UTC ISO 8601 when supplied.

comment_count is a source total, not the length of comments. subtitles lists language codes and does not contain transcript text. processed_at is generated when the row is prepared and is not evidence of the video's age.

Complete specimen

Illustrative metadata record for the Quick Start link (abbreviated; the tables above list the complete contract):

{
"id": "source-video-id",
"source_url": "https://rutube.ru/video/c58f502c7bb34a8fcdd976b221fca292/",
"platform": "youtube",
"title": "Illustrative video title",
"duration": 19,
"video": null,
"processor": "https://apify.com/truefetch/rutube-video-downloader",
"processed_at": "2026-11-06T22:00:00Z"
}

Success, partial data, no result and unavailable

  • Success: a video record is saved. In metadata mode, video: null is expected. In download mode, a non-null video identifies the stored MP4.
  • Partial requested data: a saved row can retain available video facts when optional requested comments are missing. A failed requested download returns no row and incurs neither a Metadata nor a Download fee; the run status keeps the warning.
  • Definitive no video: when the source explicitly confirms an absent, deleted or supported private result, a sparse identity row can answer the supplied source_url, with no video ID or business facts. That row has no Metadata or Download event. Startup and usage still apply.
  • Unavailable: a source refusal or unresolved retrieval failure can leave zero rows. Zero rows do not prove deletion or that the URL contains no video. The run status provides the supported explanation.

The public Dataset does not add a status field. Interpret the row together with the requested mode and final run status; do not treat an MP4 link as present because the platform run says SUCCEEDED. Do not manufacture a blank video in your application when the Dataset is empty.

Exports and file retrieval

JSON preserves the complete nested arrays and null values. CSV is useful for scalar fields, while arrays may require JSON parsing in your spreadsheet workflow. Downloaded media is stored in the run's Key-Value Store; source_url remains the original page. Read the video URL, verify the response and retain the bytes you need within your storage-retention policy. A source thumbnail is an external image URL and can expire independently of a saved MP4.

What inputs can I configure?

InputTypeDefault / sampleEffect
video_urlstringRequired; sample "https://rutube.ru/video/c58f502c7bb34a8fcdd976b221fca292/"Public Rutube video link to read. Supply one video page, not a profile, search or playlist.
video_qualitystringDefault "metadata"; sample "metadata"Metadata reads the video information without a file. Low prefers a height up to 480 pixels, Medium up to 720, and High the highest available quality. If no version at or below the chosen height exists, the lowest available height is used. Saved downloads are MP4; output dimensions describe the actual file.

What platforms and markets does Rutube Video Downloader cover?

Use an individual public Rutube video page. Private, login-only, restricted or removed media may be unavailable; this Actor does not bypass access controls. It does not search accounts, collect playlists or download every post from a profile.

Why use Rutube Video Downloader?

Keep channel attribution and source URLs beside videos selected for topic or editorial research.

  • Start with metadata to review the record before requesting a file.
  • Keep the original URL and creator beside the exported record for attribution.
  • Read actual saved dimensions and file size when selecting media for editing.

Who is Rutube Video Downloader for?

  • Rutube channel and topic research: use Metadata to build a shortlist with titles, creators and source links.
  • Creative or editorial review: request Low, Medium or High when a saved MP4 is needed for a permitted workflow.
  • Repeatable tracking: save the input as an Apify Task, add a Schedule and compare later exports using source_url and processed_at. Counters are snapshots, not complete analytics.

How can I use Rutube Video Downloader through the API or MCP?

The account-qualified Actor name is truefetch~rutube-video-downloader. Each example starts once, polls that run and retrieves every default-Dataset page. Set APIFY_TOKEN in your own environment; never put a token into a shared URL, committed file or public log. The examples use the same complete metadata input as Quick Start.

A client wait ending can leave the Actor running. Poll the existing run ID; starting again can create another run and another bill. If the initial start response is lost, check your run list before submitting again. A terminal FAILED, TIMED-OUT or ABORTED run can still have saved data, so the examples read its Dataset too.

cURL and jq

Requires cURL, jq and a POSIX shell. Save the run ID printed by the script. Requests use the Authorization header rather than a token query parameter.

set -eu
: "${APIFY_TOKEN:?Set APIFY_TOKEN}"
BASE=https://api.apify.com/v2
INPUT='{"video_url":"https://rutube.ru/video/c58f502c7bb34a8fcdd976b221fca292/","video_quality":"metadata"}'
RUN=$(curl --fail-with-body --silent --show-error -H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' --data "$INPUT" "$BASE/acts/truefetch~rutube-video-downloader/runs")
RID=$(printf '%s' "$RUN" | jq -er '.data.id')
printf 'Run ID: %s
' "$RID" >&2
while :; do
RUN=$(curl --fail-with-body --silent --show-error -H "Authorization: Bearer $APIFY_TOKEN" "$BASE/actor-runs/$RID")
STATUS=$(printf '%s' "$RUN" | jq -r '.data.status')
case "$STATUS" in SUCCEEDED|FAILED|TIMED-OUT|ABORTED) break;; esac
sleep 3
done
DID=$(printf '%s' "$RUN" | jq -r '.data.defaultDatasetId // empty')
printf 'Final status: %s
' "$STATUS" >&2
if [ -n "$DID" ]; then
OFFSET=0
while :; do
PAGE=$(curl --fail-with-body --silent --show-error -H "Authorization: Bearer $APIFY_TOKEN" "$BASE/datasets/$DID/items?format=json&clean=false&limit=1000&offset=$OFFSET")
printf '%s' "$PAGE" | jq -c '.[]'
COUNT=$(printf '%s' "$PAGE" | jq 'length')
[ "$COUNT" -lt 1000 ] && break
OFFSET=$((OFFSET + COUNT))
done
fi

Python

Uses Python 3 and the requests package. The start request is not automatically repeated. A later client error does not cancel the Actor; retain the printed run ID and resume polling it.

import json
import os
import time
import requests
BASE = "https://api.apify.com/v2"
session = requests.Session()
session.headers["Authorization"] = "Bearer " + os.environ["APIFY_TOKEN"]
run_input = {'video_url': 'https://rutube.ru/video/c58f502c7bb34a8fcdd976b221fca292/', 'video_quality': 'metadata'}
def get(path, **params):
response = session.get(BASE + path, params=params, timeout=60)
response.raise_for_status()
return response.json()
response = session.post(BASE + "/acts/truefetch~rutube-video-downloader/runs", json=run_input, timeout=60)
response.raise_for_status()
run = response.json()["data"]
run_id = run["id"]
print("Run ID:", run_id, flush=True)
terminal = {"SUCCEEDED", "FAILED", "TIMED-OUT", "ABORTED"}
while run["status"] not in terminal:
time.sleep(3)
run = get("/actor-runs/" + run_id)["data"]
print("Final status:", run["status"])
dataset_id = run.get("defaultDatasetId")
if dataset_id:
offset = 0
while True:
page = get("/datasets/" + dataset_id + "/items", format="json",
clean="false", offset=offset, limit=1000)
for item in page:
print(json.dumps(item, ensure_ascii=False))
if len(page) < 1000:
break
offset += len(page)

JavaScript

Uses Node.js 18 or later with built-in fetch. Save as an ES module (.mjs) and set APIFY_TOKEN. It does not need an additional SDK package. A failed HTTP request ends this client, not necessarily the remote run.

const base = 'https://api.apify.com/v2';
const token = process.env.APIFY_TOKEN;
if (!token) throw new Error('Set APIFY_TOKEN');
const input = {"video_url": "https://rutube.ru/video/c58f502c7bb34a8fcdd976b221fca292/", "video_quality": "metadata"};
async function api(path, options = {}) {
const response = await fetch(base + path, {
...options,
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
});
if (!response.ok) throw new Error(`Apify HTTP ${response.status}`);
return response.json();
}
let { data: run } = await api('/acts/truefetch~rutube-video-downloader/runs', {
method: 'POST', body: JSON.stringify(input),
});
const runId = run.id;
console.log('Run ID:', runId);
const terminal = new Set(['SUCCEEDED', 'FAILED', 'TIMED-OUT', 'ABORTED']);
while (!terminal.has(run.status)) {
await new Promise(resolve => setTimeout(resolve, 3000));
({ data: run } = await api(`/actor-runs/${runId}`));
}
console.log('Final status:', run.status);
if (run.defaultDatasetId) {
for (let offset = 0; ; ) {
const page = await api(`/datasets/${run.defaultDatasetId}/items?format=json&clean=false&limit=1000&offset=${offset}`);
for (const item of page) console.log(JSON.stringify(item));
if (page.length < 1000) break;
offset += page.length;
}
}

Make, n8n and downstream tools

In Make, select Apify's Run an Actor, use the Actor ID above, map the same JSON input and retain the returned run ID. Wait for that run to finish, then use Get Dataset Items with its defaultDatasetId; configure pagination rather than assuming the first page is the whole result. In n8n, use the Apify Actor action and pass the same input; retain the run and Dataset IDs between nodes. If the workflow stops waiting, resume polling the existing run.

For a media archive, fetch the saved video URL. For analytics, ingest Dataset JSON with its source links and collection timestamp. Caption text requires a separate transcript workflow.

For an MCP workflow, connect an Apify-supported MCP client and select this Actor with the same input keys. The API page provides the integration entry points. Keep the run ID so a client disconnect does not lead to a second run.

How much does Rutube Video Downloader cost?

Pay per event. FREE is an Apify plan name, not a zero-price promise. The Pricing tab shows the applicable plan.

EventWhen it appliesFREEBRONZESILVERGOLDPLATINUMDIAMOND
Actor Usage (actor_usage)Accrued usage units$0.00001$0.00001$0.00001$0.00001$0.00001$0.00001
Actor Start (apify-actor-start)Once per run$0.01$0.01$0.01$0.01$0.01$0.01
Metadata (metadata)One saved metadata record$0.11$0.099$0.088$0.0825$0.0825$0.0825
Download (download)One saved downloaded-video record$0.26$0.234$0.208$0.195$0.195$0.195

Whole-bill examples

Illustrative FREE-plan bills with exactly 100 Actor Usage units at $0.00001 per unit:

  • One metadata result: $0.01 startup + $0.11 metadata + $0.00100 usage = $0.12100.
  • One download result: $0.01 startup + $0.26 download + $0.00100 usage = $0.27100.

Metadata and Download are alternatives for the saved row. A requested download that cannot be retrieved or saved returns no row and incurs neither result fee; startup and accrued usage still apply. An explicit absent-video answer has no Metadata or Download fee. Usage varies, so the examples are not a fixed quote.

How does Rutube Video Downloader compare with alternatives?

Use the source platform directly for a single manual lookup or its permitted download option. Use its official developer tools when you need account-owned analytics or permissions beyond public video facts. This Actor is useful when the workflow needs an exportable video record or a permitted saved file from known links.

What are the limits and troubleshooting steps?

Use one individual public video page. On supported pages containing several videos, the Actor selects the first video.

  • No rows: check the final run message and verify the individual link. Source access can prevent retrieval; zero rows alone do not mean the video was deleted.
  • File request: read video for a saved MP4. If retrieval or saving fails, no row or Metadata/Download fee is produced; startup and accrued usage still apply.
  • Missing details: use the shared missing-value meanings in Output Data Schema. Source engagement totals and the returned comment sample describe different things.
  • Interrupted client or pending billing: retain the run ID, inspect its Dataset and charged events, and contact support before starting a replacement.
  • File retention: save the media you need before removing its run storage.

Use public content only, follow the source platform's terms and applicable law, and ensure you have permission to download, store or reuse media and personal data. This Actor does not grant reuse rights. Keep private inputs and credentials out of public support messages.

Frequently asked questions

Can I download a whole account or playlist?

No. Supply one public video link per run. This Actor does not discover every video from an account or playlist.

Does Metadata include a video file or transcript?

No. video is null in Metadata mode. subtitles lists published caption languages; it is not transcript text. Request a download quality for an MP4.

Will I always get every engagement field?

No. Sources expose different facts. Missing facts are null, and available zeros stay zero. Requested comments can be unavailable while the base record is saved.

Can I export and schedule the result?

Open the default Dataset and choose JSON, CSV or another supported export. Save the input as an Apify Task and add a Schedule to collect later snapshots.

What do I pay when a requested file fails?

Startup and accrued usage apply, but a failed download returns no row and has no Metadata or Download result fee. See the event table and complete examples above.

What if my client stops waiting?

Keep the run ID, poll that run and inspect its final message and Dataset. Starting a replacement can repeat work and charges. For help, send the run ID and a public link through Issues.

  • Image Search Download API - Use a subject from the returned title or description as keyword to find related images.
  • Academic Search API - For educational or research videos, use a topic from title or description as keyword to find papers.
  • Job Search - For career or training videos, use a role, skill or company named in title or description as keyword; choose a country and result limit to search vacancies.

Support

Use the Issues page for reproducible problems and the TrueFetch community for usage questions. Include the run ID, a public input or safe equivalent, expected result and observed message. Keep credentials and private inputs out of public messages.

Start a small run | Open the API reference

Last Updated: November 8, 2026