# Dailymotion Scraper — Videos, Channels & Playlists (`fabrikit/dailymotion-scraper`) Actor

Scrape Dailymotion video metadata without login or API key: keyword search, channel uploads, playlists and trending, with views, duration, likes, ISO dates, tags and channel stats. Filter by category, language, country, length or date. Metadata only. From US$3.35 per 1,000 results.

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

## Pricing

from $3.35 / 1,000 videos

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

Learn more: https://docs.apify.com/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

Dailymotion Scraper extracts public video metadata from dailymotion.com: keyword search results, the uploads of any channel, the videos of a playlist, single video links, a whole category or what is trending right now. Every video becomes one flat JSON row with views (total and for the last hour, day, week and month), duration, likes, publication date in ISO 8601, category, language, country, tags, thumbnail, live status and the channel's follower count. Two more modes return public channel profiles and playlists.

The Actor reads Dailymotion's public, documented Data API. It needs no login, no API key and no browser. It collects **metadata only**: it never downloads videos and never asks for stream or file links.

**Pricing: US$3.35 per 1,000 results** (videos, channels or playlists). No start fee, no monthly rent.

### What you can scrape

| Mode | One row per | Sources |
|---|---|---|
| `videos` (default) | video | keyword search, channel usernames or URLs, playlist URLs, video URLs (including `dai.ly` short links and player links), a category, or the trending list when you give nothing else |
| `channels` | public channel profile | usernames or channel URLs, the channel behind a video URL, or a channel search |
| `playlists` | playlist | every public playlist of the channels you list, or playlist URLs |

Video filters use Dailymotion's own search engine, so they don't waste results: category (News, Sports, Music, Gaming and the 13 others), languages, country, minimum and maximum length in seconds, published after / before (a date or a relative age such as `30 days`), recorded videos only or live-now only, and verified channels only. You can sort by relevance, newest, oldest, most viewed (all time, today, this week, this month) or trending.

### Input examples

The prefilled run, 20 videos for a keyword:

```json
{ "mode": "videos", "searchQueries": ["street food"], "maxItems": 20 }
```

French news clips from verified channels, 1 to 10 minutes long, published in the last 30 days:

```json
{ "mode": "videos", "searchQueries": ["élection"], "category": "news", "languages": ["fr"], "country": "FR",
  "minDurationSecs": 60, "maxDurationSecs": 600, "uploadedAfter": "30 days", "onlyVerified": true, "videoKind": "vod" }
```

The latest 1,500 uploads of a channel. Newest first is the only order that goes past Dailymotion's limit of 1,000 results per list:

```json
{ "mode": "videos", "urls": ["https://www.dailymotion.com/CNEWS"], "sort": "recent", "maxResultsPerSource": 1500, "maxItems": 1500 }
```

Two channel profiles plus the most popular channels for a keyword (the `playlists` mode takes the same `urls`):

```json
{ "mode": "channels", "urls": ["CNEWS", "https://www.dailymotion.com/Europe1fr"], "searchQueries": ["cuisine"], "channelSort": "popular", "maxResultsPerSource": 20 }
```

### Example output

A video row (shortened):

```json
{
  "type": "video",
  "videoId": "xbq54yy",
  "title": "Hansel and Gretel in the mountains: parents abandon sons in Germany",
  "url": "https://www.dailymotion.com/video/xbq54yy",
  "durationSecs": 52,
  "durationText": "0:52",
  "views": 127655,
  "viewsLastHour": 4747,
  "viewsLastDay": 127655,
  "likes": 0,
  "createdAt": "2026-10-21T12:47:11.000Z",
  "language": "en",
  "country": "GB",
  "category": "News",
  "tags": ["Europe News", "Europe", "Nature", "mountaineering", "rescue"],
  "thumbnailUrl": "https://s2.dmcdn.net/v/gGmvg1gsBRTRchO8m/x1080",
  "orientation": "horizontal",
  "isLive": false,
  "channelUsername": "euronews-en",
  "channelName": "euronews (in English)",
  "channelFollowers": 17611,
  "channelVerified": true,
  "rank": 1,
  "source": "trending",
  "scrapedAt": "2026-10-22T05:27:03.542Z"
}
```

Video rows also have `description` (plain text), `embedUrl` (the official player), `viewsLastWeek`, `viewsLastMonth`, `uploadedAt`, `updatedAt`, `width`, `height`, `aspectRatio`, `isOnAir`, `liveAudience`, `isExplicit`, `isMadeForKids`, `allowEmbed`, `alteredWithAi` and `channelPartner`. Channel rows give `username`, `name`, `followers`, `videos`, `playlists`, `views`, `isVerified`, `isPartner`, `language`, avatar and cover images, the website and social links shown on the channel, and `createdAt`. Playlist rows give `name`, `description`, `videosCount`, dates, thumbnail and channel.

The key-value store gets `SUMMARY` (rows, requests, filters, stop reason) and `SOURCES` (one line per keyword, channel, playlist or URL, for example "channel not found" or "the playlist has no public videos").

### Use cases

- **Media monitoring:** track what publishers upload, how fast each clip gathers views, and what trends in your country.
- **Content and SEO research:** see which titles, tags, lengths and formats get views for a keyword.
- **Publisher discovery:** find verified channels in a niche with followers, total views and their website.
- **Catalog audits:** export the videos of your own channel or playlist with views and dates.
- **Datasets for AI and BI:** typed rows ready for a spreadsheet, a dashboard or an LLM agent.

### Pricing

Pay per result, nothing else:

- `video-result`: US$0.00335 per video (1,000 videos = US$3.35; 10,000 videos = US$33.50)
- `channel-result`: US$0.00335 per channel profile
- `playlist-result`: US$0.00335 per playlist

Platform compute is billed separately and stays tiny here, because the Actor is a plain API client with no browser: 1,150 channel videos took 24 seconds in our tests. You never pay for more rows than `maxItems`, and a run ends early if it reaches your spending cap.

### Compared with alternatives

| | This Actor | Dailymotion API yourself | Browser-based scrapers |
|---|---|---|---|
| Setup | none | read the docs, write paging and error handling | none |
| Filters (category, language, country, length, dates, live) | yes | yes | usually fewer |
| Past 1,000 results per channel or search | yes, newest first | you code it | rarely |
| Cost per 1,000 rows | US$3.35 | free, you host the code | usually higher |

Other Dailymotion Actors on the Store can also export comments. This Actor doesn't, because commenters are private people. Do you track live streamers too? Our [Twitch Scraper](https://apify.com/fabrikit/twitch-scraper) covers channels, live streams, VODs and clips on Twitch. This Actor shares its network core.

### Integrations

Run it from the Apify Console, the API, the JavaScript or Python client or the CLI, on a schedule or with webhooks. Export to JSON, CSV, Excel or Google Sheets, or connect it to Make, Zapier, n8n or Airbyte. Through the Apify MCP server, AI agents can ask for things like "the 50 most viewed Sports videos this week in Spanish".

### FAQ

**Is it legal?** The Actor reads only public metadata that Dailymotion publishes through its documented API, without logging in. It doesn't download or re-host videos. For channels it keeps public channel information only, and it removes e-mail addresses and phone numbers from descriptions. Follow Dailymotion's terms and the privacy laws that apply to you.

**Do I need a proxy?** Usually not, because requests go out directly. If the API ever blocks the run, the Actor moves to Apify datacenter proxies and then residential proxies. If Dailymotion asks it to slow down, it waits and retries. You can turn the proxy switch off with `autoProxyFallback: false`.

**Limits?** Up to 100,000 rows per run. Dailymotion lists stop at 1,000 results per query. With newest-first order the Actor goes further by walking back in time. With other orders, each source stops at 1,000. Playlists keep their own order, and their filters are applied after reading. Searching playlists needs a Dailymotion login, so it isn't offered.

**Why are some fields empty?** Dailymotion leaves them out for some videos, for example `isMadeForKids` on old uploads or `durationSecs` on live streams.

### En español

Dailymotion Scraper extrae metadatos públicos de Dailymotion sin login ni API key:

- videos por palabra clave, canal, playlist, categoría o tendencias, con vistas, duración, likes, fechas ISO, idioma, país y etiquetas;
- perfiles públicos de canales;
- playlists.

No descarga videos. Precio: US$3,35 por 1.000 resultados.

### Changelog

- **0.1 (October 2026):** first release with videos, channels and playlists modes, Dailymotion's search filters (category, language, country, length, dates, live, verified), newest-first paging past 1,000 results, and automatic proxy fallback.

# Actor input Schema

## `mode` (type: `string`):

videos = one row per video (from keyword searches, channels, playlists, video URLs, a category, or the trending list when nothing else is given). channels = one row per public channel profile (from usernames / URLs, or a channel search). playlists = one row per public playlist of the channels you list, or per playlist URL.

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

One keyword or phrase per line. Videos mode: Dailymotion video search (with the filters below). Channels mode: channel search. Playlists can't be searched without a Dailymotion login, so this field isn't used in playlists mode.

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

One per line: a channel username (CNEWS or @CNEWS), a channel URL (https://www.dailymotion.com/CNEWS), a playlist URL (https://www.dailymotion.com/playlist/x88zuy) or a video URL (https://www.dailymotion.com/video/x7ue07r, https://dai.ly/x7ue07r). Videos mode: the videos of each channel or playlist, and the video URLs. Channels mode: the profile of each channel (and of the channel behind each video URL). Playlists mode: the playlists of each channel, and the playlist URLs.

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

Only videos of this Dailymotion category. With no keywords and no URLs, the Actor lists the trending videos of the category.

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

Auto = most relevant for keyword searches, newest first for channels, trending for categories and the trending list (most watched now for live only). Newest first can go past Dailymotion's 1,000-results-per-list limit. The other orders stop at 1,000 results per source. Playlists always keep their own order.

## `videoKind` (type: `string`):

All videos, only recorded videos (no live streams), or only live streams that are on air now.

## `languages` (type: `array`):

Only videos in these languages, as two-letter codes (en, fr, es, de, pt, ar, hi...). Empty = all languages.

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

Only videos Dailymotion assigns to this country, as a two-letter code (FR, US, DE, IN...). Empty = all countries.

## `minDurationSecs` (type: `integer`):

Skip videos shorter than this. 0 = no minimum.

## `maxDurationSecs` (type: `integer`):

Skip videos longer than this (for example 60 for short clips only). 0 = no maximum.

## `uploadedAfter` (type: `string`):

Only videos published on or after this date: 2026-01-31, or a relative age such as 7 days, 2 weeks or 6 months.

## `uploadedBefore` (type: `string`):

Only videos published before this date: 2026-01-31, or a relative age such as 1 year.

## `onlyVerified` (type: `boolean`):

Videos mode: only videos from verified partner channels (broadcasters, publishers, brands). Channels mode: only verified channels.

## `channelSort` (type: `string`):

Order of the channel search results.

## `minFollowers` (type: `integer`):

Channels mode: skip channels with fewer followers. Videos mode: skip videos whose channel has fewer followers. 0 = no minimum.

## `maxResultsPerSource` (type: `integer`):

The most results taken from each keyword, channel, playlist, category or the trending list. 0 = no limit (only Maximum rows applies).

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

Stop after this many rows in total. The limit is exact: the run never saves or charges more.

## `maxConcurrency` (type: `integer`):

How many keywords, channels or playlists are read at the same time.

## `proxyConfiguration` (type: `object`):

Usually not needed: the public Dailymotion API answers direct requests. Set a proxy only if your runs get blocked.

## `autoProxyFallback` (type: `boolean`):

If the API blocks two requests in a row, continue through Apify datacenter proxies, then residential proxies.

## Actor input object example

```json
{
  "mode": "videos",
  "searchQueries": [
    "street food"
  ],
  "category": "all",
  "sort": "auto",
  "videoKind": "all",
  "minDurationSecs": 0,
  "maxDurationSecs": 0,
  "onlyVerified": false,
  "channelSort": "relevance",
  "minFollowers": 0,
  "maxResultsPerSource": 50,
  "maxItems": 20,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "autoProxyFallback": true
}
```

# Actor output Schema

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

All rows saved during the run

## `summary` (type: `string`):

Rows saved and charged, filters, requests, network used and stop reason

## `sources` (type: `string`):

For each keyword, channel, playlist or video URL: status, pages read, results seen, filtered and saved, and any error

# 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": [
        "street food"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fabrikit/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": ["street food"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("fabrikit/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": [
    "street food"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call fabrikit/dailymotion-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fabrikit/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/WxsiW5svkJd3WZ8vd/builds/a0h8qd4o4Mjwaqc4c/openapi.json
