# RedTube Video Downloader (`maximedupre/redtube-downloader`) Actor

Get direct source-hosted links for public RedTube videos. Choose a video quality or format, and export titles, thumbnails, tags, duration, and available variants.

- **URL**: https://apify.com/maximedupre/redtube-downloader.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Videos, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$9.00 / 1,000 videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## RedTube Video Downloader

### 🎬 Get direct RedTube video links and details

RedTube Video Downloader is for developers, media teams, and researchers who need links and details for public RedTube videos. Add video pages, album pages, embed links, regional links, or video IDs. Get a source-hosted media link, the chosen variant, all available variants, and useful video details without storing the video file.

- Use **[RedTube Video Downloader](https://apify.com/maximedupre/redtube-downloader/examples/redtube-video-downloader)** to get links and details from public video pages or IDs.
- Run **[RedTube Link Downloader](https://apify.com/maximedupre/redtube-downloader/examples/redtube-link-downloader)** to turn known RedTube links into direct media links.
- Choose **[RedTube 4K Downloader](https://apify.com/maximedupre/redtube-downloader/examples/redtube-4k-downloader)** to ask for a 2160p variant when RedTube offers one.
- Choose **[RedTube HD Downloader](https://apify.com/maximedupre/redtube-downloader/examples/redtube-hd-downloader)** to ask for an HD variant when one is available.
- Use **[RedTube MP4 Downloader](https://apify.com/maximedupre/redtube-downloader/examples/redtube-mp4-downloader)** to prefer an available MP4 variant.

#### 📦 What data does it return?

Each successful video creates one dataset row with:

- A direct, source-hosted media link
- The requested and chosen video variant
- Available formats, quality labels, and dimensions
- The video ID and canonical page URL
- The title, description, duration, tags, and thumbnail when available

The Actor saves the first eligible occurrence of a video. If the same video appears again through another submitted source, it is skipped.

#### ▶️ How to run the Actor

1. Open the Actor in Apify Console.
2. Add one or more RedTube links or video IDs.
3. Pick the quality or format you prefer.
4. Set a video limit, or clear it to process all available videos until the source is exhausted.
5. Click **Start** and open the dataset when the run ends.

Only use public content that you are allowed to access and download. The Actor does not bypass login, payment, deletion, or access blocks.

#### ⚙️ Input

| Field | Type | What it does |
|---|---|---|
| `sources` | string array | Adds one or more RedTube video links, album links, embed links, regional links, or bare video IDs. One failed source does not stop the rest. |
| `preferredVariant` | string | Asks for the best available video, a resolution from 240p to 2160p, MP4, or HLS. The output shows the variant that was chosen. |
| `maxItems` | integer | Stops after this many videos. Leave it empty to return all available results until the source is exhausted. |

A small successful input:

```json
{
  "sources": [
    "191397851"
  ],
  "preferredVariant": "best",
  "maxItems": 1
}
```

#### 📤 Output

| Field | Type | What it does |
|---|---|---|
| `videoId` | string | RedTube ID for the video. |
| `canonicalUrl` | string | Main RedTube page for the video. |
| `title` | string or null | Video title when RedTube provides it. |
| `description` | string or null | Video description when RedTube provides it. |
| `durationSeconds` | number or null | Video length in seconds when known. |
| `width` | integer or null | Width of the chosen video in pixels when known. |
| `height` | integer or null | Height of the chosen video in pixels when known. |
| `tags` | string array | Public tags attached to the video. |
| `thumbnailUrl` | string or null | Thumbnail image URL when available. |
| `requestedVariant` | string | Quality or format requested in the input. |
| `appliedVariant` | string | Available quality and format chosen for the media link. |
| `format` | string | File or stream format of the chosen video. |
| `downloadUrl` | string | Source-hosted link for opening or downloading the chosen video. |
| `availableVariants` | object array | Video variants RedTube offers. |
| `availableVariants.format` | string or null | File or stream format when known. |
| `availableVariants.quality` | string or null | Quality label when known. |
| `availableVariants.width` | integer or null | Variant width in pixels when known. |
| `availableVariants.height` | integer or null | Variant height in pixels when known. |

Example from a successful run:

```json
{
  "videoId": "191397851",
  "canonicalUrl": "https://www.redtube.com/191397851",
  "title": "Son's Best Friend Cums Inside Busty Mom - Kat Marie - MomComesFirst - Alex Adams",
  "description": "Watch video Son's Best Friend Cums Inside Busty Mom - Kat Marie - MomComesFirst - Alex Adams on Redtube, home of free Blowjob porn videos and HD sex movies online. Video length: (9:30) - Uploaded by Alex Adams - Verified User - Starring Pornstars: Alex Adams, Kat Marie",
  "durationSeconds": 570,
  "width": null,
  "height": null,
  "tags": [
    "Big Tits",
    "Blowjob",
    "MILF",
    "Creampie",
    "Redhead",
    "HD",
    "Verified Amateurs",
    "Big Dick"
  ],
  "thumbnailUrl": "https://ei-ph.rdtcdn.com/videos/202411/11/460383961/original/(m=eaSaaTbWx)(mh=ZyAdFgoiEe_aGJpA)2.jpg",
  "requestedVariant": "best",
  "appliedVariant": "1080p mp4",
  "format": "mp4",
  "downloadUrl": "https://ev-ph.rdtcdn.com/videos/202411/11/460383961/250806_1836_1080P_4000K_460383961.mp4?validfrom=1785443355&validto=1785450555&rate=50000k&burst=300k&hash=aYMawGqJwuzWuq3VmNZTleYKNz0%3D",
  "availableVariants": [
    {
      "format": "hls",
      "quality": "720p",
      "width": 720,
      "height": 404
    },
    {
      "format": "hls",
      "quality": "480p",
      "width": 720,
      "height": 404
    },
    {
      "format": "hls",
      "quality": "240p",
      "width": 720,
      "height": 404
    },
    {
      "format": "hls",
      "quality": "1080p",
      "width": 720,
      "height": 404
    },
    {
      "format": "mp4",
      "quality": "1080p",
      "width": null,
      "height": null
    },
    {
      "format": "mp4",
      "quality": "720p",
      "width": null,
      "height": null
    },
    {
      "format": "mp4",
      "quality": "480p",
      "width": null,
      "height": null
    },
    {
      "format": "mp4",
      "quality": "240p",
      "width": null,
      "height": null
    }
  ]
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each public video that is successfully saved with a direct media link. Failed sources and sources with no saved video are not charged by the video event. Platform compute charges may still apply; check the live pricing shown in Apify Console before a run.

#### 🔌 Integrations

Send dataset rows to Google Sheets, Slack, webhooks, or other Apify integrations. You can also run the Actor through the Apify API, schedule repeat runs, or connect it to your own workflow.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Does it save the video file?

No. It returns a fresh source-hosted media link. It does not copy the video into Apify storage or create a ZIP file.

##### Will a direct link keep working forever?

Do not treat the link as permanent. Run the Actor again when you need a fresh link.

##### What happens if my requested quality is not available?

The Actor picks an available variant and reports the actual choice in `appliedVariant`. Check `availableVariants` to see what RedTube exposed.

##### Can I use album, embed, or regional links?

Yes. Album pages can add their public videos. Embed links and regional RedTube links are supported when they identify an accessible video.

##### Does one bad link stop a batch?

No. Each submitted source is handled on its own, so the Actor continues with the other sources.

##### Can it search RedTube by keyword or category?

No. Add known video pages, album pages, embed links, regional links, or video IDs.

### 📝 Changelog

#### 0.0: Initial release

- Download direct links and video details from public RedTube pages, albums, embeds, regional links, or video IDs.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~redtube-downloader/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [XNXX Video Downloader](https://apify.com/maximedupre/xnxx-video-downloader) — Get direct links and metadata from public XNXX videos.
- [PornTrex Downloader](https://apify.com/maximedupre/porntrex-downloader) — Get direct MP4 links and variants from public PornTrex watch pages.
- [XVideos Downloader](https://apify.com/maximedupre/xvideos-downloader) — Export source-hosted MP4 or HLS links from public XVideos pages.
- [TXXX Downloader](https://apify.com/maximedupre/txxx-downloader) — Get public TXXX video links and details from URLs or IDs.
- [Upornia Downloader](https://apify.com/maximedupre/upornia-downloader) — Export direct MP4 links and details from known public Upornia videos.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `sources` (type: `array`):

Add one or more RedTube video links, album links, embed links, regional links, or bare video IDs. Each item is handled on its own, so one failed item does not stop the rest.

## `preferredVariant` (type: `string`):

Choose the best available video, a preferred resolution, or a preferred format. The result shows which available variant was chosen.

## `maxItems` (type: `integer`):

Stop after this many videos. This is useful when album pages contain many videos. Leave it empty to process every submitted video and every public video found on submitted album pages.

## Actor input object example

```json
{
  "sources": [
    "https://www.redtube.com/123456",
    "789012"
  ],
  "preferredVariant": "best",
  "maxItems": 1
}
```

# Actor output Schema

## `results` (type: `string`):

Open the dataset with one row for each video and its direct source-hosted media link.

# 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 = {
    "sources": [
        "191397851"
    ],
    "maxItems": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/redtube-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 = {
    "sources": ["191397851"],
    "maxItems": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/redtube-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 '{
  "sources": [
    "191397851"
  ],
  "maxItems": 1
}' |
apify call maximedupre/redtube-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Uae95mxz25MoXjNd2/builds/uvuVIoa2J15YY2BT4/openapi.json
