# Dailymotion Scraper (`goat255/dailymotion-scraper`) Actor

Scrape Dailymotion videos by keyword search, channel, or video URL without a login. Pull search results, a channel's recent uploads, or full metadata for a single video. Walks pagination up to your chosen limit.

- **URL**: https://apify.com/goat255/dailymotion-scraper.md
- **Developed by:** [Goutam Soni](https://apify.com/goat255) (community)
- **Categories:** Social media, Videos, Lead generation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Dailymotion Scraper

Scrape public Dailymotion videos by keyword search, channel, or video URL with no login and no API key required. Extract titles, view counts, likes, comments, duration, channel details, thumbnails, tags, and publish dates as clean structured rows ready for export.

### What it does

- **Keyword search** across public Dailymotion videos, sortable by relevance, most recent, most viewed, trending, oldest, or random.
- **Channel videos** from any channel by username, channel id, or channel link, returning that channel's uploads.
- **Single video metadata** from a video URL or id, including views, likes, comments, duration, tags, and channel info.
- **Automatic pagination** that walks page after page up to the result limit you set, deduplicating videos so you never get the same one twice.
- **Clean normalized output** with a stable schema, so every row has the same fields whether it came from search, a channel, or a single video.
- **No account, no password, no API key** required to run any mode.

### Use cases

- **Lead generation and creator discovery** - find active channels and creators in a niche by searching keywords and ranking them by views.
- **Market and content research** - measure what topics, formats, and durations perform on a keyword across thousands of videos.
- **Competitor and channel monitoring** - track a channel's uploads, view counts, and engagement over time.
- **Trend tracking** - pull trending or most-recent videos for a topic to spot rising content early.
- **Dataset building** - assemble structured video datasets (views, likes, comments, tags, publish dates) for analytics or machine learning.

### Input

| Field | Type | Description |
|---|---|---|
| `searchQueries` | array | Keyword searches to run across public videos. Each query is paginated up to the result limit. |
| `channels` | array | Channels to pull videos from. Accepts a username, a channel id, or a channel link. |
| `videoUrls` | array | Specific video links or ids to fetch full metadata for. |
| `maxResultsPerSource` | integer | Cap on videos returned per search query or channel. Default 100. Search is capped at 1000 by the source. |
| `searchSort` | string | Sort order for search: `relevance`, `recent`, `visited` (most viewed), `trending`, `random`, or `old`. |
| `concurrency` | integer | How many sources to process in parallel. Default 5. |
| `proxyConfig` | object | Optional proxy. Not required, since the public endpoints work without one. |

Provide at least one of `searchQueries`, `channels`, or `videoUrls`.

#### Example input

```json
{
  "searchQueries": ["electronic music"],
  "channels": ["example-channel"],
  "videoUrls": ["https://www.dailymotion.com/video/x5auisp"],
  "maxResultsPerSource": 200,
  "searchSort": "relevance"
}
```

### Output

Each video is one dataset row with a stable schema. Example:

```json
{
  "type": "video",
  "id": "x5auisp",
  "url": "https://www.dailymotion.com/video/x5auisp",
  "channelName": "Acme Co",
  "channelUsername": "example-channel",
  "channelId": "x1wtdgr",
  "channelUrl": "https://www.dailymotion.com/example-channel",
  "viewCount": 109022,
  "likeCount": 240,
  "commentCount": 12,
  "durationSeconds": 65,
  "durationText": "1:05",
  "title": "An example video title",
  "description": "An example description.",
  "tags": ["example", "demo"],
  "thumbnailUrl": "https://example.com/thumbnail.jpg",
  "publishedAt": "2026-06-01T12:00:00.000Z",
  "language": "en",
  "isExplicit": false,
  "isPrivate": false
}
```

Key fields:

- **Identity**: `id`, `url`, and `channelName` / `channelUsername` / `channelId` / `channelUrl` identify the video and its channel.
- **Metrics**: `viewCount`, `likeCount`, `commentCount`, and `durationSeconds` / `durationText` capture reach, engagement, and length at scrape time.
- **Content**: `title`, `description`, and `tags` describe the video. `description` and `tags` can be empty when the uploader left them blank.
- **Metadata**: `publishedAt` (ISO 8601), `language`, `isExplicit`, and `isPrivate`.

### FAQ

**Is it free? How is it priced?**
The actor runs on the standard Apify pricing model. You pay only for the platform usage and the results you receive. There is no separate subscription to any third party.

**Do I need a login, account, or API key?**
No. The scraper reads only public video data and needs no Dailymotion account, password, or API key.

**How many results can I get?**
You control it with `maxResultsPerSource`. Each search query or channel is paginated up to that cap, with results deduplicated by video id. Keyword search is capped at 1000 results per query at the source.

**How fast is it?**
Multiple sources run in parallel (set with `concurrency`). A single search of a few hundred videos typically finishes in well under a minute. Larger jobs with many queries or channels scale with the number of sources and the per-source limit.

**Can I get a single video's full details?**
Yes. Put the video link or id into `videoUrls` and you get one row with its full metadata.

**Why are `description` or `tags` sometimes empty?**
Those values come straight from the uploader. When a creator does not add a description or tags, those fields are returned empty rather than guessed.

### Privacy

To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.

# Actor input Schema

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

Keyword searches to run across public Dailymotion videos. Example: news, electronic music, cooking tutorial.

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

Channels to pull recent videos from. Accepts a channel username, id, or a channel link. Example: example-channel, https://www.dailymotion.com/example-channel.

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

Specific video links or ids to fetch full metadata for. Example: https://www.dailymotion.com/video/x5auisp.

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

Cap on videos returned per search query or channel. Pagination is walked across multiple pages until this is reached or the source is exhausted. Search results are capped at 1000 by the source.

## `searchSort` (type: `string`):

Sort order for search results.

## `concurrency` (type: `integer`):

How many sources to process in parallel.

## `proxyConfig` (type: `object`):

Optional proxy. The public read endpoints do not require a proxy, but you may route through one if you wish.

## Actor input object example

```json
{
  "searchQueries": [
    "news"
  ],
  "channels": [],
  "videoUrls": [],
  "maxResultsPerSource": 100,
  "searchSort": "relevance",
  "concurrency": 5,
  "proxyConfig": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `videos` (type: `string`):

No description

# 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": [
        "news"
    ],
    "channels": [],
    "videoUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("goat255/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": ["news"],
    "channels": [],
    "videoUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("goat255/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": [
    "news"
  ],
  "channels": [],
  "videoUrls": []
}' |
apify call goat255/dailymotion-scraper --silent --output-dataset

```

## MCP server setup

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