# ManyVids Video Downloader (`maximedupre/manyvids-video-downloader`) Actor

ManyVids video downloader for known video URLs. Export direct source-hosted media links, metadata, thumbnails, prices, creator facts, and dataset rows.

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

## Pricing

$0.90 / 1,000 resolved 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 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

### 📥 ManyVids downloader for video links

ManyVids Video Downloader resolves known [ManyVids](https://www.manyvids.com/) video page URLs into direct source-hosted media links and a clean Apify dataset. Paste one or more ManyVids video URLs and export video IDs, titles, creator details, prices, tags, thumbnails, screenshots, engagement counts, suggested filenames, download type, media links, and freshness timestamps.

Use it when you already have ManyVids video URLs and need repeatable exports for review, cataloging, media operations, personal archiving workflows, or an API pipeline. Public/free videos and public previews work without a Cookie header. Add a fresh Cookie header only for paid videos that your own ManyVids account can access.

- [manyvids downloader](https://apify.com/maximedupre/manyvids-video-downloader/examples/manyvids-downloader) - resolve direct media links and metadata from ManyVids video URLs.
- [manyvids video downloader github](https://apify.com/maximedupre/manyvids-video-downloader/examples/manyvids-video-downloader-github) - run a structured Apify actor instead of wiring source requests by hand.
- [video downloader professional](https://apify.com/maximedupre/manyvids-video-downloader/examples/video-downloader-professional-manyvids) - export media links, thumbnails, tags, and creator facts in one dataset.
- [jdownloader extension](https://apify.com/maximedupre/manyvids-video-downloader/examples/jdownloader-extension-manyvids) - use the returned direct media URLs in your own downloader or storage flow.
- [manyvids video metadata](https://apify.com/maximedupre/manyvids-video-downloader/examples/manyvids-video-metadata) - collect video titles, creator profiles, prices, tags, thumbnails, screenshots, engagement counts, and direct media links from known URLs.

#### 📦 Data you can export

Each output row represents one ManyVids video that produced at least one direct source-hosted media link. Rows can include:

- `videoId` and `sourceUrl` for dedupe, audits, and reruns.
- `title`, `description`, `creatorId`, `creatorName`, and `creatorUrl`.
- `downloadType` with `free`, `preview`, or `paid`.
- `downloadFilename` as a source-backed filename suggestion.
- `durationSeconds`, `resolution`, `orientation`, `size`, `price`, and `currency` when ManyVids exposes them.
- `publishedAt`, `views`, `likes`, `comments`, and `tags`.
- `thumbnailUrl` and `screenshotUrl`.
- `fetchedAt`, which shows when direct media URLs were collected.
- `media`, an array of direct source-hosted media links with quality, width, height, content type, and expiry time when the source URL exposes one.

Rows are success-only. Invalid URLs, removed videos, private videos, blocked pages, source errors, or videos with no direct media link are reported in logs and do not create placeholder rows.

#### 🚀 How to run

1. Add one or more ManyVids video page URLs in **ManyVids video URLs**.
2. Leave **Cookie header** empty for public/free videos and public previews.
3. Paste a fresh Cookie header only when you want to resolve paid videos your logged-in ManyVids account can access.
4. Start the Actor and open the default dataset.
5. Use `media[].mediaUrl` soon after the run, or rerun the Actor later to refresh time-sensitive links.

The input accepts up to 100 video URLs per run. Submit fewer URLs for a small test run.

#### 🔎 Input

| Field | What to enter |
| ----- | ------------- |
| `startUrls` | Full ManyVids video page URLs. Use one row per video. |
| `cookie` | Optional Cookie header from your logged-in ManyVids browser session for paid videos your account can access. |

Example input:

```json
{
	"startUrls": [
		{
			"url": "https://www.manyvids.com/Video/7060747/soaking-wet-shower-tease"
		}
	]
}
````

#### 📤 Output example

```json
{
	"videoId": "7060747",
	"sourceUrl": "https://www.manyvids.com/Video/7060747/soaking-wet-shower-tease",
	"title": "Soaking Wet Shower Tease",
	"description": null,
	"creatorId": "1009468335",
	"creatorName": "tinyangel",
	"creatorUrl": "https://www.manyvids.com/Profile/1009468335/tinyangel/Store/Videos",
	"downloadType": "free",
	"downloadFilename": "tinyangel - Soaking Wet Shower Tease.mov",
	"durationSeconds": 152,
	"resolution": "4K",
	"orientation": "horizontal",
	"size": "936.75 MB",
	"price": 0,
	"currency": "USD",
	"publishedAt": "2025-11-18T13:56:09.000Z",
	"views": 183,
	"likes": 20,
	"comments": 0,
	"tags": ["Amateur", "Free", "SFW", "Shower"],
	"thumbnailUrl": "https://ods.manyvids.com/example-thumb.jpg",
	"screenshotUrl": "https://ods.manyvids.com/example-screenshot.jpg",
	"fetchedAt": "2026-06-27T17:45:00.000Z",
	"media": [
		{
			"mediaUrl": "https://cdn10.manyvids.com/example-video.mp4?Expires=1782583386",
			"quality": "4K",
			"width": 3840,
			"height": 2160,
			"contentType": "video/mp4",
			"expiresAt": "2026-06-27T18:03:06.000Z"
		}
	]
}
```

Some fields can be `null` when ManyVids does not expose them for a resolved video. The Actor does not invent missing metadata.

#### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each ManyVids video that is successfully resolved and saved to the dataset.

Invalid URLs, private or removed videos, source errors, and videos with no direct media link are not saved as paid rows and are not charged as resolved videos.

#### 🔌 Integrations

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

- Run the Actor from Apify Console for one-off ManyVids URL batches.
- Call it through the Apify API when your workflow already stores ManyVids video URLs.
- Schedule recurring runs to refresh direct media links that may expire.
- Export datasets as JSON, CSV, Excel, XML, RSS, or HTML.
- Connect completed runs to webhooks, Make, Zapier, cloud storage, or your own data pipeline.

#### ❓ FAQ

##### 🔐 Do I need a ManyVids account or Cookie header?

Not for public/free videos or public previews. Add a Cookie header only for paid videos your own ManyVids account can access.

##### 💾 Does this Actor save video files into Apify storage?

No. It returns direct source-hosted media links and metadata. It does not mirror, zip, transcode, or rehost ManyVids videos.

##### 🧾 Why did a video produce no row?

Rows are saved only when the Actor finds at least one direct media link. Invalid URLs, private videos, removed videos, source errors, or videos with no exposed media link are logged instead of saved as failed dataset rows.

##### ⏱️ Do media links expire?

Some source-hosted links can be time-sensitive. Use `fetchedAt` and `media[].expiresAt` to decide when to refresh a result.

##### 🧩 Can I use the output with JDownloader or another downloader?

Yes. Use `media[].mediaUrl` as the direct media URL in your own downloader or automation flow while the source link remains valid.

##### 💾 How do I download videos with this ManyVids downloader?

Add one or more ManyVids video page URLs, run the Actor, and use `media[].mediaUrl` from the dataset while the source link is still fresh. Public/free videos and public previews do not need a Cookie header. Paid videos require your own ManyVids account access, supplied through a fresh Cookie header.

##### 🔎 Does it search ManyVids or crawl creator pages?

No. This Actor is for known ManyVids video URLs. It does not search ManyVids, crawl creators, or discover videos.

##### 🛠️ Why not use the ManyVids API?

ManyVids does not provide a simple public downloader API for this workflow. This Actor gives you an Apify input form, API access, dataset exports, scheduling, and webhooks around known video URLs.

##### 🔁 What are ManyVids alternatives?

For similar URL-first media workflows, use another source-specific Actor such as XVideos Downloader, XNXX Video Downloader, PornTrex Downloader, RedGifs Bulk Downloader, or OnlyFans Downloader. Each source has different access rules and output fields.

### 📝 Changelog

- 0.1: Initial release.

### 🆘 Support

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

### 🔗 Other actors

- [XVideos Downloader ↗](https://apify.com/maximedupre/xvideos-downloader) - Extract direct MP4/HLS links and metadata from public XVideos URLs.
- [XNXX Video Downloader ↗](https://apify.com/maximedupre/xnxx-video-downloader) - Resolve public XNXX URLs or IDs into direct media links and metadata.
- [PornTrex Downloader ↗](https://apify.com/maximedupre/porntrex-downloader) - Export direct media variants from public PornTrex watch-page URLs.
- [RedGifs Bulk Downloader ↗](https://apify.com/maximedupre/redgifs-bulk-downloader) - Resolve public RedGifs videos from URLs, IDs, or search.
- [OnlyFans Downloader ↗](https://apify.com/maximedupre/onlyfans-downloader) - Export media links from OnlyFans content your account can access.

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

# Actor input Schema

## `startUrls` (type: `array`):

Add full ManyVids video page URLs. Use one row per video.

## `cookie` (type: `string`):

Optional. Paste a fresh Cookie header from your logged-in ManyVids browser session for paid videos your account can access.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.manyvids.com/Video/7060747/soaking-wet-shower-tease"
    },
    {
      "url": "https://www.manyvids.com/Video/7450600"
    },
    {
      "url": "https://www.manyvids.com/Video/6826802"
    },
    {
      "url": "https://www.manyvids.com/Video/6925165"
    },
    {
      "url": "https://www.manyvids.com/Video/7619506"
    }
  ]
}
```

# Actor output Schema

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

Open the dataset with ManyVids video metadata, creator facts, direct media links, and fetch times.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.manyvids.com/Video/7060747/soaking-wet-shower-tease"
        },
        {
            "url": "https://www.manyvids.com/Video/7450600"
        },
        {
            "url": "https://www.manyvids.com/Video/6826802"
        },
        {
            "url": "https://www.manyvids.com/Video/6925165"
        },
        {
            "url": "https://www.manyvids.com/Video/7619506"
        }
    ],
    "cookie": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/manyvids-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 = {
    "startUrls": [
        { "url": "https://www.manyvids.com/Video/7060747/soaking-wet-shower-tease" },
        { "url": "https://www.manyvids.com/Video/7450600" },
        { "url": "https://www.manyvids.com/Video/6826802" },
        { "url": "https://www.manyvids.com/Video/6925165" },
        { "url": "https://www.manyvids.com/Video/7619506" },
    ],
    "cookie": "",
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/manyvids-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 '{
  "startUrls": [
    {
      "url": "https://www.manyvids.com/Video/7060747/soaking-wet-shower-tease"
    },
    {
      "url": "https://www.manyvids.com/Video/7450600"
    },
    {
      "url": "https://www.manyvids.com/Video/6826802"
    },
    {
      "url": "https://www.manyvids.com/Video/6925165"
    },
    {
      "url": "https://www.manyvids.com/Video/7619506"
    }
  ],
  "cookie": ""
}' |
apify call maximedupre/manyvids-video-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ManyVids Video Downloader",
        "description": "ManyVids video downloader for known video URLs. Export direct source-hosted media links, metadata, thumbnails, prices, creator facts, and dataset rows.",
        "version": "0.1",
        "x-build-id": "awN4eqVz82mZ8RBZp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~manyvids-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-manyvids-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/maximedupre~manyvids-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-manyvids-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/maximedupre~manyvids-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-manyvids-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "ManyVids video URLs",
                        "minItems": 1,
                        "maxItems": 100,
                        "type": "array",
                        "description": "Add full ManyVids video page URLs. Use one row per video.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "cookie": {
                        "title": "Cookie header",
                        "type": "string",
                        "description": "Optional. Paste a fresh Cookie header from your logged-in ManyVids browser session for paid videos your account can access."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
