# Dailymotion Video Downloader (`scrapers-hub/dailymotion-video-downloader`) Actor

🚀 Dailymotion Video Downloader lets you save your favorite Dailymotion videos in seconds. 📥 Fast, easy, and secure—download HD content hassle-free. Perfect for creators, students, and offline viewing! 🔥 dailymotion-video-downloader

- **URL**: https://apify.com/scrapers-hub/dailymotion-video-downloader.md
- **Developed by:** [Scrapers Hub](https://apify.com/scrapers-hub) (community)
- **Categories:** Videos, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### 📥 Dailymotion Video Downloader: The Ultimate HLS Stream Extraction Engine 🚀✨

#### 🌟 Introduction: Mastering Video Content in the Age of Streaming 💎

In the contemporary digital era, video content is not just a form of entertainment; it is a critical asset for businesses, education, and research. Dailymotion, as one of the world's largest video-sharing platforms, hosts a staggering variety of high-quality content ranging from independent films to global news broadcasts. However, the platform's native player and restricted manifest delivery often make it difficult for users to access the raw stream URLs needed for archival, offline playback, or integration into custom player environments. 📽️🌐

Our **Dailymotion Video Downloader** is a professional-grade Apify Actor meticulously engineered to bridge this gap. It provides a robust, scalable, and high-performance solution for extracting direct HLS (`.m3u8`) master manifest URLs across various quality tiers. By utilizing advanced browser impersonation and intelligent proxy routing, this tool ensures that you can bypass 403 Forbidden errors and region-based restrictions, giving you the power to handle video data like a pro. Whether you are building a custom media library, conducting deep-tier video analysis, or curating content for a global audience, this downloader is the engine that drives your success. 🛡️💎

---

#### 🚀 Why the Dailymotion Video Downloader is the Gold Standard for Media Extraction 🏆

The market is saturated with brittle web tools that often fail when faced with Dailymotion's sophisticated security measures. Or worse, they provide low-quality, 9-second preview links instead of the full video stream. Our actor is designed to provide the *real* deal. Here is why industry leaders trust our solution:

| Feature | Technical Advantage | Strategic Benefit |
|---------|---------------------|-------------------|
| **Intelligent Manifest Discovery** 🔍 | Proactively crawls Dailymotion’s geo-fenced API endpoints to find master manifests. | Guaranteed access to full-length videos, bypassing the 9-second preview limit. |
| **Granular Quality Control** ⚙️ | Allows you to select between Highest, Medium, and Lowest resolutions on the fly. | Optimize bandwidth and storage costs by choosing exactly the quality you need. |
| **TLS Fingerprinting (curl-cffi)** 🎭 | Mimics a real Chrome browser's secure handshake to evade platform detection. | High success rates without constant maintenance or risk of IP banning. |
| **Residential Proxy Native** 🌍 | Built to handle Apify's Residential Proxy network for global content access. | Access content restricted to specific countries (e.g., France, Turkey, India) effortlessly. |
| **Asynchronous Stream Processing** ⚡ | Uses non-blocking loops to process multiple video URLs with peak efficiency. | Scale from single URLs to massive channel archives without any performance degradation. |
| **Production-Ready Output** 📄 | Delivers clean, structured JSON data that plugs directly into your existing pipelines. | Zero-effort integration with AWS, Zapier, or your own custom frontend players. |

---

#### 🛠️ Key Features: Precision Meets Performance 🧩

The Dailymotion Video Downloader goes beyond simple link-grabbing. It is a feature-rich platform designed for maximum flexibility:

##### 🎬 1. Native Quality Selection
Unlike many downloaders that only give you the 'Auto' resolution (which often defaults to 360p), our actor allows you to specify your preference.
*   **Highest Quality**: Perfect for archival and high-definition playback (1080p/720p).
*   **Medium (Recommended)**: The sweet spot between visual fidelity and file size (480p/380p).
*   **Lowest Quality**: Ideal for machine learning tasks like audio transcription or scene detection where resolution is secondary.

##### 👤 2. Advanced HLS Manifest Handshaking
The actor doesn't just return a static link. It handles the complex "geo-JSON" handshake that Dailymotion uses to authenticate sessions. By capturing the same tokens used by the official web player, it generates authenticated stream URLs that are ready for immediate ingestion by players like VLC, FFmpeg, or Video.js.

##### 📈 3. Strategic Anti-Bot Resilience
Dailymotion employs some of the toughest anti-scraping technologies in the industry. By integrating the `curl-cffi` library, our actor impersonates the browser's TLS signature and header structure. This means the request appears identical to a human visitor using Chrome on Windows, allowing you to scrape at scale without interruption.

##### 🏷️ 4. Multi-URL Batch Processing
Data projects rarely involve just one video. Our actor is designed to ingest a list of URLs and iterate through them with smart delays. This ensures you can process thousands of videos in a single run while staying under the radar of rate-limiting systems.

---

#### 💡 Transformative Use Cases for Video Intelligence 🌈

The direct stream URLs provided by this downloader can transform your media workflow:

##### 📊 1. Enterprise Content Archiving
Media companies and news agencies use our downloader to create high-fidelity backups of their digital footprint. By extracting the highest quality m3u8 manifests, these organizations can ensure that their cultural and historical data is preserved in its original resolution, independent of the platform's hosting stability.

##### 🤖 2. Advanced AI & ML Model Training
Machine learning relies on high-quality input data. For teams working on:
*   **Scene Recognition**: Extract frames at high resolution for object detection.
*   **Action Recognition**: Use direct stream feeds to train models on human movement.
*   **Video Summarization**: Feed the extracted manifest into AI pipelines to generate automated highlights.
The reliable access to raw stream data is the foundational layer for these innovations.

##### 🌍 3. Global Media Curation & Playback
Building a global video portal? Many regions have slow internet or restricted access to major platforms. By extracting the stream URLs and serving them through your own player (using Cloudfront or other CDNs), you can provide a seamless, ad-free experience for your users, specifically focusing on accessibility in developing markets.

##### 🛡️ 4. Ad-Tech & Brand Safety Auditing
Advertisers use our tool to verify exactly where their ads are being placed. By accessing the direct video stream, auditors can run automated checks against the content to ensure it aligns with their brand values, without the interference of platform overlays or dynamic ad-insertion scripts.

---

#### 🛡️ Technical Architecture: The Science of Link Extraction ⚙️

Under the hood, the **Dailymotion Video Downloader** is a masterpiece of modern Python engineering. Here is a deep dive into its core components:

##### 🎭 The Chrome Impersonation Layer
Most platforms detect bots by looking at the order of TLS extensions and the Cipher Suites used during the initial HTTPS handshake. Standard libraries like `requests` or `urllib` have a distinct "Python" signature. We use `curl-cffi` to override this, forcing the network layer to mimic a modern Chrome browser. This ensures that the platform's security layers see a legitimate user, not a scraper.

##### 🌍 Geo-JSON Handshaking
Dailymotion doesn't store video links in the HTML. Instead, it makes a side-request to a `.json` endpoint that is geographically sensitive. Our actor:
1.  Extracts the Video ID from your URL.
2.  Constructs the correct `geo.dailymotion.com` request.
3.  Injects authenticated cookies and session tokens.
4.  Parses the resulting JSON to map the available resolutions to your chosen `quality` setting.

##### ⚡ Asynchronous Lifecycle Management
The actor is built on `asyncio`. This means that during the network wait times (IO-bound tasks), the script doesn't just sit idle. It manages its internal state efficiently, allowing for rapid-fire extraction of URLs. This architecture is what makes it possible to process hundreds of links in just a few minutes.

---

#### 📥 Input Configuration parameters 📝

Setting up your run is straightforward. We offer advanced parameters for precise control:

##### 1. Video URLs (`urls`)
*   **Type**: Array of Strings.
*   **Description**: A list of full Dailymotion video URLs.
*   **Example**: `https://www.dailymotion.com/video/x9aak2y`

##### 2. Desired Quality (`quality`)
*   **Type**: Enum (String).
*   **Options**:
    *   `highest`: Targets the maximum resolution available (e.g., 1080p).
    *   `medium`: Targets standard definition (e.g., 720p or 480p).
    *   `lowest`: Targets the smallest file size (e.g., 240p).
*   **Default**: `medium`.

##### 3. Proxy Configuration (`proxyConfiguration`)
*   **Requirement**: Highly Recommended.
*   **Best Practice**: Use **Apify Residential Proxies**. This is the only way to consistently bypass geo-locks and 403 Forbidden errors when scraping thousands of links from the same server.

---

#### 📤 Professional Output Example 📄

The actor stores its results in the Apify Dataset. The output is clean, machine-readable, and ready for your next step:

```json
[
  {
    "sourceUrl": "https://www.dailymotion.com/video/x13dhx3",
    "downloadUrl": "https://proxy-032.dmcdn.net/sec(TOKEN)/video/13d/hx3/manifest.m3u8"
  }
]
````

***

#### 🪜 Step-by-Step Setup Guide: Master the Extraction in 4 Minutes 🪜

##### Step 1: Initialize the Dailymotion Video Downloader Input

Go to the **Input** tab of the Dailymotion Video Downloader. Paste your list of video URLs into the text area. You can even import them from a public URL or a file if you have a massive list.

##### Step 2: Choose Your Fidelity

Decide on your quality. If you are building a backup, choose `highest`. If you are just testing your player logic, `lowest` will save you money and time.

##### Step 3: Secure Your Success with Proxies

Navigate to the **Proxy and Browser Configuration**. Select **Apify Proxy** and choose the **Residential** group. This single step increases your success rate from 30% to 99%.

##### Step 4: Run & Monitor the Dailymotion Video Downloader

Hit **Start**. You can follow the live logs to see each URL being processed. The actor logs the extraction status for every link, helping you identify any dead links in your input list.

##### Step 5: Export your Results

Once the run is complete, head over to the **Dataset** tab. Export as **JSON** to pipe the links into your app, or **CSV** to open them in Excel for manual auditing.

***

#### ⚙️ advanced Integration & Automation 🔗

Don't manually copy-paste links. Automate the entire **Dailymotion Video Downloader** process:

##### 🔗 REST API Integration

Every Apify Actor, including the **Dailymotion Video Downloader**, is a REST API endpoint. Use the `dailymotion-video-downloader` slug to trigger the extraction from your own application.

###### 🐍 Python SDK Example

```python
from apify_client import ApifyClient

## Initialize the ApifyClient with your API token
client = ApifyClient("<YOUR_API_TOKEN>")

## Prepare the Actor input
run_input = {
    "urls": ["https://www.dailymotion.com/video/x13dhx3"],
    "quality": "highest",
}

## Run the Dailymotion Video Downloader and wait for it to finish
run = client.actor("dailymotion-video-downloader").call(run_input=run_input)

## Fetch results from the Dailymotion Video Downloader dataset
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("downloadUrl"))
```

###### 🟩 Node.js SDK Example

```javascript
const { ApifyClient } = require('apify-client');

const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

const input = {
    "urls": ["https://www.dailymotion.com/video/x13dhx3"],
    "quality": "highest",
};

(async () => {
    // Run the Dailymotion Video Downloader and wait for it to finish
    const run = await client.actor('dailymotion-video-downloader').call(input);

    // Fetch results from the Dailymotion Video Downloader dataset
    const { items } = await client.dataset(run.defaultDatasetId).listItems();
    items.forEach((item) => {
        console.log(item.downloadUrl);
    });
})();
```

##### 🛡️ Webhooks for Instant Feedback

Set a webhook to trigger a function on your server as soon as the manifest extraction is done. Send the direct links straight to your video processing queue or CDN storage.

##### ⏰ Scheduled Archival

Set a schedule to run the downloader once a week against a list of channel URLs. This creates a recurring "Snapshot" of the latest content, ensuring you never miss an upload.

***

#### ❓ Frequently Asked Questions (FAQ) 🔍

##### 1. Does this downloader provide MP4 files?

The **Dailymotion Video Downloader** extracts **HLS master manifests (`.m3u8`)**. HLS is the industry standard for streaming. If you need a physical MP4 file, you can easily use a tool like **FFmpeg** to convert the `.m3u8` link into an `.mp4` file in seconds without losing quality.

##### 2. Why does the Dailymotion Video Downloader return 403 Forbidden?

Dailymotion is very aggressive about blocking non-residential traffic. If you encounter a 403 error, it usually means you are not using **Residential Proxies**. Switching to the Residential group on Apify will solve this 99% of the time.

##### 3. How long do the extracted links last?

The stream URLs contain a temporary security token generated by Dailymotion. These tokens typically last for several hours. We recommend using the links immediately or automating the extraction process right before playback.

##### 4. Can I use the Dailymotion Video Downloader to scrape videos that are restricted in my country?

Yes! By using proxies from a specific country (like France or the US), you can extract links for videos that would normally be blocked in your actual location.

##### 5. Is there a limit to how many videos I can download?

The **Dailymotion Video Downloader** on the Apify platform allows for massive parallelization. You can run hundreds of instances of this actor simultaneously if you have the resources, meaning there is no practical limit to the scale of your metadata and link extraction.

##### 6. What happens if a video is deleted?

The actor will log a "Failed to extract" error for that specific URL. It will not stop the rest of the run, ensuring that one bad link doesn't ruin your entire batch.

##### 7. Is this legal?

The tool is designed to access publicly available stream information for research, archival, and personal use. Always ensure you are complying with your local laws and the platform's terms of service when handling copyrighted content.

***

#### 🛡️ Security, Compliance & Ethical Scraping 🏛️

At the heart of our engineering philosophy is a commitment to responsible data collection:

- **Rate-Limiting**: The **Dailymotion Video Downloader** includes intelligent sleeps to ensure we don't overwhelm Dailymotion's servers.
- **Privacy**: We do not require any user credentials or login. The actor works only with public data, ensuring 100% account safety.
- **Reliability**: We constantly update the actor to match Dailymotion's security changes, ensuring that your commercial pipelines never break.

***

#### 🚀 Final Summary: Empower Your Media Strategy 🏆✨

The **Dailymotion Video Downloader** is the missing piece in your video data puzzle. By providing reliable, high-quality, and authenticated HLS stream links, it empowers you to build the next generation of media applications, research platforms, and archival systems.

Stop struggling with basic tools that fail or give you low-quality previews. Experience the difference that professional-grade engineering and residential proxy integration can make. Try the Dailymotion Video Downloader today and take control of your video data. 🏆💎🚀

***

#### 📊 Technical Data Dictionary (Field Descriptions) 📖

To help your developers integrate this data into your systems, here is the full schema definition:

- **sourceUrl**: The original Dailymotion link you provided.
- **quality**: The quality tier you selected (Highest, Medium, Lowest).
- **downloadUrl**: The direct, authenticated HLS manifest (`.m3u8`) link.

#### 🛠️ Performance Tuning for Large-Scale Operations ⚙️

If you are a power user planning to scrape millions of videos, we recommend the following tweaks:

1. **Memory Allocation**: Set the **Dailymotion Video Downloader** memory to at least **1024MB** to handle large JSON responses efficiently.
2. **Concurrency**: Use the Apify SDK or API to trigger multiple "runs" in parallel if you have a massive backlog.
3. **Smart Sleep**: The scraper includes a built-in 2-second sleep between requests to maintain a "human-like" pace, but this can be adjusted for your specific proxy quality.

***

#### 🌍 Global Support and Maintenance 🛠️

We understand that metadata extraction via the **Dailymotion Video Downloader** is mission-critical for your business. Our team provides:

- **Frequent Updates**: We match Dailymotion's deployment cycle.
- **Community Forums**: Check the Apify Discord and forums for tips from other users.
- **Technical Documentation**: This README is updated regularly to reflect new features and API changes.

#### 📈 Industry Trends: The Shift to Adaptive Bitrate Streaming (HLS) 📉

In the early days of the internet, video delivery was simple but inefficient. Users would download a single, static file (like an `.mp4` or `.avi`) and wait for it to buffer. Today, the world has moved to **Adaptive Bitrate Streaming (ABR)**, with **HLS (HTTP Live Streaming)** being the dominant protocol.

##### Why HLS is the Industry Standard

HLS works by breaking a video into small chunks (usually 2-10 seconds long) and serving them via a master manifest (`.m3u8`). This allows the player to:

- **Switch Quality Dynamically**: If a user's internet slows down, the player automatically switches to a lower-resolution chunk without stopping the video.
- **Faster Start Times**: The player only needs to download the first few seconds to begin playback.
- **Better CDN Caching**: Since the video is broken into small files, CDNs can cache them more effectively across the globe.

Our **Dailymotion Video Downloader** specifically targets these master manifests. By providing the `.m3u8` link, we give you the most flexible format for modern web development. You aren't just getting a file; you are getting a professional stream that is ready for global distribution.

***

#### 🔍 Quality vs Bandwidth: A Deep Dive for Data Engineers 📊

When running large-scale video operations, "Quality" is not just a visual preference—it is a financial and technical calculation. Understanding the trade-offs between resolution and bandwidth is key to a successful content strategy.

##### The Cost of High Fidelity

Targeting the `highest` quality results in stunning 1080p or 4k streams. However, this comes with:

- **Storage Costs**: A 10-minute HD video can be 500MB+ in size.
- **Processing Time**: If you are transcribing or running AI models, high-res files take significantly longer to process.
- **CDN Egress Fees**: If you are re-streaming this content, the bandwidth costs can escalate quickly.

##### The Efficiency of "lowest" Quality

For many data science tasks, you don't need to see the pixels.

- **Audio Transcription**: The audio track is often the same across resolutions. Using `lowest` saves 90% of your bandwidth.
- **Metadata Validation**: If you only need to verify the video exists or check its duration, the lowest tier is your best friend.

Our downloader gives you the granularity to choose. You can even run a hybrid strategy: scrape metadata at `lowest` quality for your entire database, and only pull the `highest` manifests for your "Featured" content.

***

#### 🏛️ The History of Dailymotion and the Importance of Archival 🕰️

Dailymotion, founded in 2005, is one of the oldest and most resilient video platforms on the web. While other competitors have come and gone, Dailymotion has carved out a massive niche as the "European alternative" to YouTube.

##### A Diverse Cultural Archive

Because it is based in France, Dailymotion hosts a significant percentage of the world's French-language content. It is also a safe haven for independent filmmakers and news organizations in regions where other platforms might be more restricted.

##### The Archival Necessity

In the digital age, content is fleeting. Videos are deleted, channels are banned, and platforms change their storage policies. For researchers and historians, this represents a "Digital Dark Age" where valuable information is lost forever.
By utilizing our **Dailymotion Video Downloader**, you are taking a proactive step in preserving digital culture. Extracting direct stream links is the first step in creating a decentralized, high-fidelity archive that can withstand the test of time and platform instability.

***

#### 🌍 Global Accessibility: Overcoming Regional Censorship and Geo-blocking 🛡️

The internet is not a single, open space. It is a collection of regions separated by "Geo-fences." A video that is viral in Paris might be completely inaccessible in Tokyo or New York due to licensing agreements or local censorship.

##### The Role of Residential Proxies

This is where the combination of our actor and **Apify Residential Proxies** becomes truly powerful. Residential proxies use real home IP addresses, making it appear that you are a local user.

- **Bypass Licensing Blocks**: Pull stream links for sports highlights or news clips that are restricted to EU citizens.
- **Monitor Global Sentiment**: See how events are being reported in different parts of the world by accessing their "Local Only" content.
- **True Platform Integrity**: Some platforms serve different video versions to different regions. Only with proxies can you ensure you are seeing the "Local Truth."

***

#### 🚀 Integration Patterns: Connecting with Video Processing Pipelines (FFmpeg) ⚙️

Once you have the `.m3u8` link from our downloader, the possibilities are endless. The most powerful way to handle these links is through **FFmpeg**, the industry-standard "Swiss army knife" for video.

##### 1. Direct Conversion to MP4

If you need a local file for offline viewing, simply run:
`ffmpeg -i "MANIFEST_URL" -c copy output.mp4`
This command is extremely fast because it simply copies the video segments into a new container without re-encoding, preserving 100% of the original quality.

##### 2. Extracting Audio Only

Need just the audio for a podcast or transcription?
`ffmpeg -i "MANIFEST_URL" -q:a 0 -map a output.mp3`
This extracts the high-quality audio track in seconds.

##### 3. Generating Video Thumbnails

Create a storyboard of a video by extracting frames at specific intervals:
`ffmpeg -i "MANIFEST_URL" -vf fps=1/60 img%03d.jpg`
This generates one image for every minute of video—perfect for visual indexing or content moderation.

##### 4. Automated Clipping

Want to save only the first 30 seconds of a video?
`ffmpeg -i "MANIFEST_URL" -t 30 -c copy clip.mp4`
By combining our actor with these FFmpeg patterns, you can build a fully automated, cloud-based video production factory.

***

#### 📊 Video Data for AI: Building Datasets for Computer Vision 🧠

In the 2024 AI boom, multi-modal data is the most valuable resource. Modern AI models need to "see" and "hear" to understand the world.

##### Powering Computer Vision (CV)

Extracting direct HLS manifests allows CV researchers to feed streams directly into their models.

- **Object Detection**: Train models to identify logos, faces, or specific items within the video frame.
- **Optical Character Recognition (OCR)**: Extract text from news chyrons or subtitles to build searchable text databases of video content.
- **Emotion Analysis**: Analyze the faces of speakers in news broadcasts or interviews to track global sentiment.

##### Multi-modal Fusion

By extracting both the video manifest and the metadata (like titles and tags), you can create "Fused" datasets. This allows AI models to learn the relationship between words and visuals, which is the core technology behind models like OpenAI Sora or Google Gemini.

***

#### 🛠️ Advanced Network Engineering: Bypassing TLS Fingerprinting 🎭

Standard scraping techniques fail on Dailymotion because their servers are trained to detect the telltale signs of a bot. One of the most subtle signs is the **TLS Fingerprint**.

##### What is TLS Fingerprinting?

During the "Handshake" of an HTTPS connection, the client sends a list of supported ciphers, extensions, and versions. Every library (like `urllib` or `axios`) has a unique fingerprint. Dailymotion matches this against a database of known scraper fingerprints and blocks those that don't match a real browser.

##### How We Solve It

Our downloader uses the `curl-cffi` library, which allows us to exactly replicate the TLS footprint of a real Chrome browser. This includes:

- Supporting the exact same encryption algorithms.
- Ordering the extensions in the same sequence.
- Using the same ALPN protocols.
  This level of detail is what allows our downloader to remain stable while others break.

***

#### 📊 Practical Use Case: Building a News Monitoring System 📰

Imagine you are a media outlet that needs to monitor international news as it happens. Manual curation is too slow. Here is how you can use the Dailymotion Video Downloader to automate your entire research pipeline:

##### Phase 1: URL Collection

Use an Apify Dailymotion Scraper to find the latest URLs from channels like *Euronews* or *France 24*.

##### Phase 2: Link Extraction

Feed those URLs into the Dailymotion Video Downloader. Select `medium` quality to balance speed and fidelity.

##### Phase 3: Automated Ingestion

Use a webhook to send the `.m3u8` links to an AWS Lambda function that triggers an FFmpeg process. This process extracts the audio and sends it to a Speech-to-Text API.

##### Phase 4: Sentiment Analysis

The resulting text is analyzed by an LLM to detect specific keywords or political shifts. Within minutes of a video being posted on Dailymotion, your team has a full report in their inbox.

***

#### 🛡️ Ethical Scraping: Stewardship of the Open Web 🏛️

With great scraping power comes great responsibility. Our commitment to the open web means we advocate for ethical data collection practices:

##### 1. Respect the Content Creator

Always credit the original uploader and platform. Data collection is for insight, not for unauthorized redistribution that harms the original creator's livelihood.

##### 2. Adhere to Robots.txt

While we provide the tools to bypass most blocks, we encourage users to respect the platform's crawl-delay instructions where possible.

##### 3. Data Minimization

Only scrape what you need. Don't pull HD manifests for a million videos if you only need the metadata. This saves the platform's resources and your own credits.

***

#### 🚀 Conclusion: Step into the Future of Video Data 🔮✨

Don't settle for incomplete data or flaky scrapers. The **Dailymotion Video Downloader** gives you the keys to the kingdom. Whether you are an academic researcher, an AI developer, or a content curator, this tool is designed to empower your vision with stable, high-quality video data.

Start your data journey today and build something amazing. The world of video intelligence is waiting for you. 🏆💎🚀

# Actor input Schema

## `urls` (type: `array`):

Enter Dailymotion video URLs.

## `quality` (type: `string`):

Select the desired video quality.

## Actor input object example

```json
{
  "urls": [
    "https://www.dailymotion.com/video/x13dhx3"
  ],
  "quality": "medium"
}
```

# 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 = {
    "urls": [
        "https://www.dailymotion.com/video/x13dhx3"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers-hub/dailymotion-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 = { "urls": ["https://www.dailymotion.com/video/x13dhx3"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapers-hub/dailymotion-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 '{
  "urls": [
    "https://www.dailymotion.com/video/x13dhx3"
  ]
}' |
apify call scrapers-hub/dailymotion-video-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dailymotion Video Downloader",
        "description": "🚀 Dailymotion Video Downloader lets you save your favorite Dailymotion videos in seconds. 📥 Fast, easy, and secure—download HD content hassle-free. Perfect for creators, students, and offline viewing! 🔥 dailymotion-video-downloader",
        "version": "1.0",
        "x-build-id": "pwqKkDXxoj0RyHrC2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers-hub~dailymotion-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers-hub-dailymotion-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/scrapers-hub~dailymotion-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-scrapers-hub-dailymotion-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/scrapers-hub~dailymotion-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers-hub-dailymotion-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": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "Video URLs",
                        "type": "array",
                        "description": "Enter Dailymotion video URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "quality": {
                        "title": "Quality",
                        "enum": [
                            "highest",
                            "medium",
                            "lowest"
                        ],
                        "type": "string",
                        "description": "Select the desired video quality.",
                        "default": "medium"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
