# Dailymotion Scraper 🎞️ (videos, channels, playlists, search) (`tagadanar/dailymotion-scraper`) Actor

Scrape Dailymotion: search videos by keyword, list every video of a channel or playlist, or look up video links. Views, likes, duration, dates, tags, geo-blocking and channel details. No API key, no login.

- **URL**: https://apify.com/tagadanar/dailymotion-scraper.md
- **Developed by:** [Tagada Data](https://apify.com/tagadanar) (community)
- **Categories:** Videos, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.05 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Dailymotion Scraper: videos, channels, playlists and search, with views and likes

Search Dailymotion by keyword, list **every public video of a channel** or playlist, or look up a batch of video links. Each video comes back as one flat row: title, description, views, likes, duration, upload date, tags, language, country, thumbnail, embed link, geo-blocking rules and the uploader's name, followers and verified badge. Add **channel rows** for follower counts, total videos, total views, avatar and social links.

No API key, no login, no cookies. Platform usage is included in the price.

Part of the same family as the [YouTube Search Scraper](https://apify.com/tagadanar/youtube-search-scraper), [YouTube Channel Scraper](https://apify.com/tagadanar/youtube-channel-scraper) and [YouTube Comments Scraper](https://apify.com/tagadanar/youtube-comments-scraper): the same kind of input (keywords, channels, links, caps, new-since-last-run), the same flat rows (`type: "video"` and `type: "channel"`) and the same plain-English run status, so a video team can watch both platforms with one setup.

### Who it is for

- **Brand and media monitoring.** Track what is published about a topic, a brand or a competitor on Dailymotion, newest first, and run it daily with **Only new videos since the last run**.
- **Publishers and media buyers.** Vet a channel before a deal: audience size, posting cadence, views per video, language and country.
- **Researchers and analysts.** Build a dataset of a channel's whole archive, or of everything Dailymotion has on a keyword in a period.
- **Content and rights teams.** Check which videos are geo-blocked where, and find re-uploads of your own catalogue.

### What you get

Rows are told apart by `type`. The **Videos** view of the dataset shows the videos, the **Channels** view the channel rows.

**Video rows** (`type: "video"`)

| Field | What it is |
| --- | --- |
| `videoId`, `url`, `title`, `description` | The video |
| `durationSeconds`, `durationText` | Length |
| `viewCount`, `likeCount` | Views and likes |
| `publishedAt`, `updatedAt` | Upload time and last update (ISO 8601, UTC) |
| `thumbnailUrl`, `embedUrl`, `allowEmbed` | Picture, player link and whether embedding is allowed |
| `tags`, `category`, `categoryName` | Uploader's tags and Dailymotion category (`news`, `sport`, `music`...) |
| `language`, `country` | Language of the video and country it was uploaded from |
| `channelId`, `channelUsername`, `channelName`, `channelUrl` | Who published it |
| `channelFollowers`, `channelVerified` | Followers and verified badge |
| `isPrivate`, `isGeoRestricted`, `geoRule`, `geoCountries` | `geoRule` is `worldwide`, `allow` (only the listed countries) or `deny` (everywhere except the listed countries) |
| `isLive`, `isForKids`, `width`, `height` | Live now, made for kids, frame size |
| `source` | The keyword, channel, playlist or link batch the row came from |
| `capturedAt` | When the row was collected |

**Channel rows** (`type: "channel"`, when **Add channel rows** is on)

| Field | What it is |
| --- | --- |
| `channelId`, `username`, `name`, `url`, `description` | The channel |
| `followers`, `following`, `videoCount`, `playlistCount`, `totalViews` | Audience and size |
| `isVerified`, `isPartner`, `createdAt`, `country`, `language` | Badges and account facts |
| `avatarUrl`, `coverUrl` | Pictures |
| `websiteUrl`, `facebookUrl`, `twitterUrl`, `instagramUrl`, `linkedinUrl` | Links the channel lists, when it lists them |

### Input

| Field | Default | What it does |
| --- | --- | --- |
| **Search keywords** | | One per line. |
| **Channels** | | Channel links, `@names`, usernames or IDs. All public videos, newest first. |
| **Playlists** | | Playlist links or IDs. |
| **Video links** | | Video links (`dailymotion.com/video/...`, `dai.ly/...`, embed links) or bare IDs. |
| **Max videos per source** | 100 | Per keyword, channel or playlist. |
| **Max videos in total** | none | Optional overall limit. |
| **Sort by** | relevance | Relevance, newest, oldest, most viewed (all time, today, week, month), trending. |
| **Published after / before** | | Dates like `2026-10-01`. |
| **Minimum / maximum duration** | | In minutes, decimals allowed. |
| **Language**, **Country of the uploader**, **Category** | | Narrow a search. |
| **Skip videos blocked in** | | A country code: videos Dailymotion blocks there are skipped and not charged. |
| **Add channel rows** | off | One extra row per channel. |
| **Only new videos since the last run** | off | Returns (and charges) only videos not delivered before for this exact input. Use it with **Sort by newest**. |

Example:

```json
{
  "searchQueries": ["electric cars"],
  "channels": ["https://www.dailymotion.com/lequipe"],
  "videoUrls": ["https://www.dailymotion.com/video/x2zv4fm"],
  "maxVideosPerSource": 200,
  "sort": "recent",
  "publishedAfter": "2026-09-01",
  "includeChannelRows": true
}
```

### Pricing

Pay per row delivered, platform usage included, plus a flat start fee per run.

| Plan | Per 1,000 videos | Per 1,000 channel rows | Run start |
| --- | --- | --- | --- |
| Free | $1.50 | $3.00 | $0.001 |
| Bronze | $1.35 | $2.70 | $0.001 |
| Silver | $1.20 | $2.40 | $0.001 |
| Gold | $1.05 | $2.10 | $0.001 |

Private, deleted, unpublished and (if you ask) geo-blocked videos are not charged, and neither are sources Dailymotion refuses. Set a maximum charge per run and the actor stops when it is reached.

### Limits and honest caveats

- **Dailymotion lists at most 1,000 results per query.** Channels, and keyword searches sorted by **newest** or **oldest**, go past that: the actor walks date windows, so a channel with 70,000 videos can be collected in full (set **Max videos per source** high enough and allow the run time). Searches sorted by relevance, views or trending stop at 1,000 and the run status says so; narrow them with dates, language or category.
- **Relevance order repeats a few videos** across pages on Dailymotion's side; they are delivered once, so a 1,000-result relevance search can return fewer than 1,000 rows.
- **Adult-flagged videos are not in Dailymotion's public listings** and are not returned by keyword, channel or playlist runs. A direct video link to one is still looked up.
- **Public data only.** Private videos and private playlists cannot be read without a login; they are named in the run status and not charged.
- **Likes are Dailymotion's like count**; comment counts are not exposed by the public API.
- **Geo-blocking is reported, not bypassed.** `geoRule`/`geoCountries` tell you where a video is blocked.

### FAQ

**Do I need a Dailymotion account or API key?** No.

**Can I get all videos of a channel?** Yes, newest first, up to **Max videos per source** (up to 100,000).

**Why did a source return nothing?** The run status says which: Dailymotion has no such channel, playlist or video; it is private; the keyword matches nothing; or your filters dropped everything.

**How do I get only new videos every day?** Put your keywords or channels on a schedule with **Only new videos since the last run** and **Sort by newest**. Quiet days cost only the run start.

### Related actors

- [YouTube Search Scraper](https://apify.com/tagadanar/youtube-search-scraper): the same keyword monitoring on YouTube.
- [YouTube Channel Scraper](https://apify.com/tagadanar/youtube-channel-scraper): every video of a YouTube channel, with new-upload monitoring.
- [YouTube Comments Scraper](https://apify.com/tagadanar/youtube-comments-scraper): comments and replies for YouTube videos.

# Changelog

This Actor's version history is a separate document: https://apify.com/tagadanar/dailymotion-scraper/changelog.md

# Actor input Schema

## `searchQueries` (type: `array`):

One keyword or phrase per line, e.g. <code>electric cars</code>. Returns the videos Dailymotion finds for each, in the order set by "Sort by". Dailymotion lists at most 1,000 results per keyword; sorted by newest or oldest this actor goes past that by date windows.

## `channels` (type: `array`):

Dailymotion channels (user accounts), one per line, in any form: <code>https://www.dailymotion.com/lequipe</code>, <code>lequipe</code>, <code>@lequipe</code> or a channel ID such as <code>xlltez</code>. Returns all their public videos, newest first, however many there are.

## `playlists` (type: `array`):

Playlist links or IDs, one per line, e.g. <code>https://www.dailymotion.com/playlist/x88apm</code>. Returns the playlist's videos in playlist order (Dailymotion shows at most 1,000).

## `videoUrls` (type: `array`):

Video links or IDs, one per line: <code>https://www.dailymotion.com/video/x2zv4fm</code>, <code>https://dai.ly/x2zv4fm</code>, an embed link or the bare ID. Deleted, private and unpublished videos are named in the run status and not charged.

## `maxVideosPerSource` (type: `integer`):

Per keyword, channel or playlist. Counted separately for each, newest first for channels. The run status tells you when a source has more than this.

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

Optional overall limit across all sources, as a safety net for large runs. Leave empty for no overall limit.

## `sort` (type: `string`):

Order of the results. <b>Newest first</b> and <b>Oldest first</b> can go past Dailymotion's 1,000-results ceiling; the other orders stop at 1,000 per keyword. Channels default to newest first when this is left on relevance.

## `publishedAfter` (type: `string`):

Only videos uploaded on or after this date, e.g. <code>2026-10-01</code> (UTC).

## `publishedBefore` (type: `string`):

Only videos uploaded on or before this date, e.g. <code>2026-10-31</code>.

## `minDurationMinutes` (type: `number`):

Skip videos shorter than this. Decimals work: 0.5 is 30 seconds.

## `maxDurationMinutes` (type: `number`):

Skip videos longer than this.

## `language` (type: `string`):

2-letter language code of the video, e.g. <code>en</code>, <code>fr</code>, <code>es</code>. Leave empty for all.

## `country` (type: `string`):

2-letter country code the video was uploaded from, e.g. <code>US</code>, <code>FR</code>. Leave empty for all.

## `category` (type: `string`):

Only videos in this Dailymotion category. Leave empty for all.

## `skipBlockedIn` (type: `string`):

2-letter country code, e.g. <code>US</code>. Videos Dailymotion geo-blocks in that country are skipped (named in the run status, not charged). Leave empty to keep them; every row carries <code>isGeoRestricted</code>, <code>geoRule</code> and <code>geoCountries</code> either way.

## `includeChannelRows` (type: `boolean`):

Adds one extra row per channel (type <code>channel</code>): followers, total videos, total views, description, avatar, country, verified badge and social links. For channels you list, and for the uploaders of the videos found.

## `onlyNewSinceLastRun` (type: `boolean`):

For scheduled runs. The actor remembers which videos it already gave you for this exact input and returns (and charges) only new ones. Use it with Sort by <b>Newest first</b> so each run stops at the first video it has already seen. The first run returns everything up to the caps.

## Actor input object example

```json
{
  "searchQueries": [
    "electric cars"
  ],
  "channels": [
    "lequipe"
  ],
  "maxVideosPerSource": 30,
  "sort": "relevance",
  "includeChannelRows": false,
  "onlyNewSinceLastRun": false
}
```

# Actor output Schema

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

One item per video (and per channel when asked) in the default dataset.

# 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 = {
    "searchQueries": [
        "electric cars"
    ],
    "channels": [
        "lequipe"
    ],
    "maxVideosPerSource": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/dailymotion-scraper").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 = {
    "searchQueries": ["electric cars"],
    "channels": ["lequipe"],
    "maxVideosPerSource": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("tagadanar/dailymotion-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "electric cars"
  ],
  "channels": [
    "lequipe"
  ],
  "maxVideosPerSource": 30
}' |
apify call tagadanar/dailymotion-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tagadanar/dailymotion-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/P3W2y5PMRqoMI0Lta/builds/RTZpa6ziI9hotzmlC/openapi.json
