# Dailymotion Video Downloader & Scraper (`maximedupre/dailymotion-scraper`) Actor

Get public Dailymotion videos, channels, playlists and comments from keywords or links. Rows include views, likes, tags, upload dates, subtitles and transcripts. You can also save videos as MP4 files. No Dailymotion login is needed.

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

## Pricing

from $2.65 / 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

### 🎬 Turn Dailymotion searches and links into clean video data

This Dailymotion scraper is for marketers, media researchers, and data teams who need public [Dailymotion](https://www.dailymotion.com) data in a table. Give it keywords or links. You get videos, channels, and playlists with views, likes, tags, lengths, upload dates, and channel details. You can also get video comments, subtitles, transcripts, and MP4 video files. You do not need to copy anything by hand, and you do not need a Dailymotion account.

- Save Dailymotion videos as MP4 files in the quality you pick when you **[download Dailymotion videos](https://apify.com/maximedupre/dailymotion-scraper/examples/download-dailymotion-videos)**.
- Collect videos, channels, or playlists for any keyword with the **[Dailymotion scraper](https://apify.com/maximedupre/dailymotion-scraper/examples/dailymotion-scraper)**.
- Find the top videos on a topic with **[Dailymotion most viewed videos](https://apify.com/maximedupre/dailymotion-scraper/examples/dailymotion-most-viewed-videos)**.
- Get a channel profile and all its videos with the **[Dailymotion channel scraper](https://apify.com/maximedupre/dailymotion-scraper/examples/dailymotion-channel-scraper)**.
- Find creators in a niche with a **[Dailymotion channel search](https://apify.com/maximedupre/dailymotion-scraper/examples/dailymotion-channel-search)** and compare their follower counts.
- Save a playlist's details and every video in it with the **[Dailymotion playlist scraper](https://apify.com/maximedupre/dailymotion-scraper/examples/dailymotion-playlist-scraper)**.
- Read what viewers say about a video with the **[Dailymotion comments scraper](https://apify.com/maximedupre/dailymotion-scraper/examples/dailymotion-comments-scraper)**.

#### 📊 What Dailymotion data you get

Each row in the dataset is one video, channel, or playlist. The `type` field tells you which one. The `input` field tells you which keyword or link found it.

- **Videos:** ID, link, title, description, length in seconds, upload date, thumbnail, live status, views, likes, comment count, tags, category, age limit, stream links, subtitles, transcript, and the owning channel.
- **Channels:** ID, link, name, handle, description, avatar, follower count, and video count.
- **Playlists:** ID, link, title, description, video count, cover image, creation date, and the owning channel.
- **Comments:** ID, text, author name and ID, and comment date. Comments are saved inside their video row.
- **Video files:** a download link to an MP4 file of each video, when you pick a download quality.

Some fields only appear when Dailymotion shows them. For example, a video with no tags has no `tags` field.

#### 🚀 How to scrape Dailymotion

1. Add one or more search keywords, one or more Dailymotion links, or both.
2. Pick the result type for your keywords: videos, channels, or playlists.
3. Set how many results you want for each keyword or link.
4. Add video filters, turn on comments, or pick a download quality if you need them.
5. Start the run and download your data as JSON, CSV, Excel, or another format.

Each keyword and each link is handled on its own. You can mix keywords and links in one run.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `searchTerms` | array of strings | Words to search on Dailymotion. Each keyword is a separate search. The form starts with `travel` filled in. |
| `startUrls` | array of objects | Full Dailymotion links, each as `{ "url": "..." }`. A video link gives that video. A channel link gives the channel profile and its videos. A playlist link gives the playlist details and its videos. Other links are skipped with a log message. |
| `resultType` | string | What each keyword search finds: `videos`, `channels`, or `playlists`. This field is required, and the form starts with `videos`. Links always return what they point to. |
| `maxItems` | integer | The most results to save for each keyword or link. Leave it empty or set `0` to get all available results. The form starts with `20`. For a channel or playlist link, the profile row counts toward this number. |
| `sortBy` | string | The order of video search results: `relevance`, `recent` (newest), or `visited` (most viewed). Leave it empty for relevance. Only used when you search for videos. |
| `uploadDate` | string | Keeps only video search results from `today`, this `week`, this `month`, or this `year`. Leave it empty for any time. Only used when you search for videos. |
| `minDuration` | integer | Keeps only videos at least this many seconds long. Works for keyword searches and for video, channel, and playlist links. |
| `maxDuration` | integer | Keeps only videos at most this many seconds long. Works for keyword searches and for video, channel, and playlist links. |
| `includeComments` | boolean | Also saves public comments on every video the run collects, in the video's `comments` list. The default is `false`. |
| `maxCommentsPerVideo` | integer | The most comments to save for each video when comments are on. The default is `20`, so leaving it empty gets up to 20 comments. Set `0` to get all available comments. |
| `downloadQuality` | string | Saves each collected video as an MP4 file: `highest`, `medium`, or `lowest` quality the video has. Leave it empty to skip file downloads. Live streams are not downloaded. |

You must give at least one keyword or one link. If you give neither, the run stops with a message and saves nothing.

**Example input**

```json
{
  "searchTerms": [
    "travel"
  ],
  "maxItems": 20,
  "resultType": "videos",
  "includeComments": false,
  "maxCommentsPerVideo": 20
}
```

#### 🧾 Output

**Output fields**

**Video row**

| Field | Type | What it does |
| --- | --- | --- |
| `type` | string | Always `video`. |
| `input` | string | The keyword or Dailymotion link that found this video. |
| `videoId` | string | Dailymotion ID of the video. |
| `url` | string | Link to the video on Dailymotion. |
| `title` | string | Title of the video. |
| `description` | string | Description of the video. |
| `duration` | integer | Length of the video in seconds. |
| `uploadedAt` | string | Upload date and time in ISO 8601 format. |
| `thumbnailUrl` | string | Link to the thumbnail image. |
| `isLive` | boolean | `true` when the video is a live stream. |
| `viewCount` | integer | Number of views Dailymotion shows. |
| `likeCount` | integer | Number of likes Dailymotion shows. |
| `commentCount` | integer | Number of comments Dailymotion shows. |
| `tags` | array of strings | Tags of the video. |
| `category` | string | Content category, such as `news` or `music`. |
| `channel.channelId` | string | Dailymotion ID of the channel that owns the video. |
| `channel.name` | string | Display name of the channel. |
| `channel.url` | string | Link to the channel on Dailymotion. |
| `ageLimit` | integer | Minimum viewer age Dailymotion sets for the video. `0` means no age limit. |
| `streams` | array of objects | Stream links, one for each available quality. |
| `streams.quality` | string | Quality name, such as `720` or `1080`. |
| `streams.width` | integer | Width of the video in this stream, in pixels. |
| `streams.height` | integer | Height of the video in this stream, in pixels. |
| `streams.url` | string | Link to the video stream at this quality. |
| `subtitles` | array of objects | Subtitle tracks the video has. |
| `subtitles.language` | string | Language code of the subtitle track, such as `en`. |
| `subtitles.url` | string | Link to the subtitle file. |
| `transcript` | string | Plain text of the video speech, taken from its subtitles. |
| `videoFileUrl` | string | Link to download the saved MP4 file. Only present when you pick a download quality. |
| `comments` | array of objects | Public comments on the video. Only present when you turn on comments. |
| `comments.commentId` | string | Dailymotion ID of the comment. |
| `comments.text` | string | Text of the comment. |
| `comments.authorName` | string | Name of the person who wrote the comment. |
| `comments.authorId` | string | Dailymotion ID of the person who wrote the comment. |
| `comments.commentedAt` | string | Comment date and time in ISO 8601 format. |

**Example video row**

```json
{
  "type": "video",
  "input": "https://www.dailymotion.com/video/x7kt0qm",
  "videoId": "x7kt0qm",
  "url": "https://www.dailymotion.com/video/x7kt0qm",
  "title": "Los 10 discos más vendidos de la historia",
  "description": "Los 10 discos más vendidos de la historia",
  "duration": 74,
  "uploadedAt": "2019-09-10T11:00:31.000Z",
  "thumbnailUrl": "https://s2.dmcdn.net/v/RJxZ-1gWblnR2k2aB/x720",
  "isLive": false,
  "viewCount": 1350053,
  "likeCount": 5,
  "commentCount": 2,
  "tags": [
    "musica",
    "music",
    "discos mas vendidos",
    "discos",
    "videoo"
  ],
  "category": "music",
  "channel": {
    "channelId": "x25br6k",
    "name": "Videoo.tv",
    "url": "https://www.dailymotion.com/VideooTV"
  },
  "ageLimit": 0,
  "streams": [
    {
      "quality": "720",
      "width": 1280,
      "height": 720,
      "url": "https://vod3.cf.dmcdn.net/sec2(aXk6Aq6aFwdEyhl1ZprdfXe6mj5Chzn3ObJmNtlBpYC9FliXXgIBsC3ZSys3rTks7uTSUDPyBK7zTy6C0LXnJsHlAXak6Wt6PCmbhR5QIZ6jMr_V4fPVlrtvsaByb584BkAyui0owabzke13X5iEbUTSIfjEgNPk12PDomdMhQI)/video/435/902/458209534_mp4_h264_aac_hd.m3u8"
    },
    {
      "quality": "380",
      "width": 512,
      "height": 288,
      "url": "https://vod3.cf.dmcdn.net/sec2(UU9TSNyc1IkJJxgShPhTMQZ5_TVdaxUSo4oVYfjaWbr3HgqaGpvKxismxdC5aGF1tmZG-sR0hto-M-QexEBzlbjpJyQFJu2nycf9v0_4Lp25TdeEgNTcpOLtm0eseIBpj0TGEfZ1_vocQ85VLveKcah8GGR4fDsM0T42ZjjD6_g)/video/435/902/458209534_mp4_h264_aac.m3u8"
    },
    {
      "quality": "480",
      "width": 848,
      "height": 480,
      "url": "https://vod3.cf.dmcdn.net/sec2(7XfMnP5cOU9Bg3fGhnQt4G4kJOLA_mvuEJcGIr7_7hFyPAfdfez1lBdfT8Ovjhbt6k_yV3xYbtQJyoUJPmDQ028yKklL0vtwQZqJOLtvIR9DWOxt64nKRBsOPQuJ5tSOrvG10DpCrtEbEfsVyH7WWX7CLmHiLxD69udnw9p29_c)/video/435/902/458209534_mp4_h264_aac_hq.m3u8"
    },
    {
      "quality": "1080",
      "width": 1920,
      "height": 1080,
      "url": "https://vod3.cf.dmcdn.net/sec2(2lSxx2sBlyoJnqvMedc7w_5CbW7WCE4fPWYGaVuWyHPF5OexzA4TgyJDVJZDZKSgRuB6I0eIoWZsvbAdwEmLcQCp-c2EbRt4tlUiy8ncxHWEopIsUHi1stXqS_I3KaIIN9a66Hm8lWchJJF67Yu-TrHwtoylQfLdpvGLcWiwJdo)/video/435/902/458209534_mp4_h264_aac_fhd.m3u8"
    }
  ],
  "comments": [
    {
      "commentId": "Q29tbWVudDo2OWMyODE5YTI0ZGViNjJhOWU0ZjU4MDg=",
      "text": "test",
      "authorName": "test",
      "authorId": "x4sfc5q",
      "commentedAt": "2026-03-24T12:20:42.000Z"
    }
  ]
}
```

**Channel row**

| Field | Type | What it does |
| --- | --- | --- |
| `type` | string | Always `channel`. |
| `input` | string | The keyword or Dailymotion link that found this channel. |
| `channelId` | string | Dailymotion ID of the channel. |
| `url` | string | Link to the channel on Dailymotion. |
| `name` | string | Display name of the channel. |
| `handle` | string | Handle of the channel, as used in its link. |
| `description` | string | Description of the channel. |
| `avatarUrl` | string | Link to the avatar image. |
| `followerCount` | integer | Number of followers Dailymotion shows. |
| `videoCount` | integer | Number of videos Dailymotion shows for the channel. |

**Example channel row**

```json
{
  "type": "channel",
  "input": "travel",
  "channelId": "x6d6evu",
  "url": "https://www.dailymotion.com/haveclotheswilltravel",
  "name": "Have Clothes, Will Travel",
  "handle": "haveclotheswilltravel",
  "description": "Practical travel guides, city itineraries, and honest reviews of hotels, clothing, and online brands so you know what’s actually worth your time and money.",
  "avatarUrl": "https://s1.dmcdn.net/u/MyPNQ1gqZAxmLT4BP/720x720",
  "followerCount": 3,
  "videoCount": 1
}
```

**Playlist row**

| Field | Type | What it does |
| --- | --- | --- |
| `type` | string | Always `playlist`. |
| `input` | string | The keyword or Dailymotion link that found this playlist. |
| `playlistId` | string | Dailymotion ID of the playlist. |
| `url` | string | Link to the playlist on Dailymotion. |
| `title` | string | Title of the playlist. |
| `description` | string | Description of the playlist. |
| `videoCount` | integer | Number of videos Dailymotion shows for the playlist. |
| `thumbnailUrl` | string | Link to the cover image. |
| `createdAt` | string | Creation date and time in ISO 8601 format. |
| `channel.channelId` | string | Dailymotion ID of the channel that owns the playlist. |
| `channel.name` | string | Display name of the channel. |
| `channel.url` | string | Link to the channel on Dailymotion. |

**Example playlist row**

```json
{
  "type": "playlist",
  "input": "travel",
  "playlistId": "x7hd3n",
  "url": "https://www.dailymotion.com/playlist/x7hd3n",
  "title": "Travel",
  "description": "Sites and monuments in UAE and from around the world",
  "videoCount": 44,
  "thumbnailUrl": "https://s1.dmcdn.net/v/T_DyN1eoHryTF_P4Z/x720",
  "createdAt": "2022-05-16T11:56:15.000Z",
  "channel": {
    "channelId": "x25w28j",
    "name": "UAE Moments",
    "url": "https://www.dailymotion.com/UAEMoments"
  }
}
```

#### 💳 Pricing

You pay for each video, channel, and playlist the run saves, and for each comment saved inside a video row. There is no start fee in this Actor's pricing.

| What is saved | Free plan | Bronze | Silver | Gold and up |
| --- | --- | --- | --- | --- |
| Video | $0.00265 | $0.00265 | $0.00265 | $0.00265 |
| Channel | $0.0043 | $0.00405 | $0.0038 | $0.0036 |
| Playlist | $0.0043 | $0.00405 | $0.0038 | $0.0036 |
| Comment | $0.00054 | $0.0005 | $0.00045 | $0.00045 |

For example, 1,000 videos cost $2.65. If a keyword or link finds nothing, nothing is saved and nothing is charged for it. Comments are only saved and charged when you turn them on. Saving MP4 video files has no separate charge in this Actor's pricing. A channel or playlist link saves one profile row plus its videos, so you pay for the profile row and for each video.

#### 🔌 Integrations

You can send your Dailymotion data to other tools with Apify integrations. Connect the Actor to Make, Zapier, Google Sheets, Slack, webhooks, or your own code through the Apify API. This video shows how to set one up:

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

#### ❓ FAQ

##### Does it download the video files?

Yes, when you pick a `downloadQuality`. Each video is saved as an MP4 file, and its row gets a `videoFileUrl` download link. Live streams are not downloaded. If a file can't be made for a video, the row is still saved without the link.

##### Can I get the transcript of a video?

Yes, when the video has subtitles. The row lists every subtitle track in `subtitles` and adds the speech as plain text in `transcript`.

##### Why did a channel link give me fewer videos than I asked for?

The profile row counts toward `maxItems`. With `maxItems` set to `20`, a channel link saves the profile and 19 videos. Duration filters can also skip some videos.

##### What happens if the same video shows up twice?

The run saves each video, channel, and playlist only once. If a second keyword or link finds the same one, it is skipped and not charged again.

##### Do the sort and upload date options work for channels and playlists?

No. `sortBy` and `uploadDate` only change video keyword searches. The duration filters work for videos from searches and from links.

##### What happens with a broken or private link?

The run writes a log message and moves on to the next input. Links that are not Dailymotion video, channel, or playlist links are skipped the same way. Private and login-only content is not collected.

##### Is this better than a Python script with yt-dlp or a GitHub scraper?

Those tools need setup and code on your side, and yt-dlp is built mainly for downloading files. This Actor runs in the cloud and gives you ready rows for videos, channels, playlists, and comments that you can export or connect to other apps.

##### Do I need a Dailymotion account or API key?

No. The Actor reads public Dailymotion data without a login.

### 📝 Changelog

**v1.0** (27-10-2026)

- Comments are no longer saved as separate `comment` rows. Each video row now has a `comments` list with `commentId`, `text`, `authorName`, `authorId`, and `commentedAt`. The comment `video` field is gone because each comment now sits inside its video. Read comments from `comments` on video rows instead.
- If you leave `maxCommentsPerVideo` empty, the run now gets up to 20 comments per video. Set it to 0 to get all available comments, as before.
- New `downloadQuality` input saves each video as an MP4 file. When the file is saved, the video row gets a `videoFileUrl` download link. Live streams are not downloaded.
- Video rows now include `ageLimit`, `streams`, `subtitles`, and `transcript` when Dailymotion has them.
- Channel links can now get more than 1,000 videos.

**v0.0** (26-10-2026)

- Initial release.

### 🆘 Support

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

### 🔗 Related Actors

- [Dailymotion Video Downloader](https://apify.com/maximedupre/dailymotion-downloader): get video links for the Dailymotion videos you found.
- [YouTube Channel Scraper](https://apify.com/maximedupre/youtube-channel-scraper): get the same kind of channel profiles and channel videos from YouTube.
- [VK Videos Search Scraper](https://apify.com/maximedupre/vk-videos-search-scraper): search public VK videos by keyword and get engagement counts.
- [Bilibili Video Scraper](https://apify.com/maximedupre/bilibili-video-scraper): find Bilibili videos by keyword or creator, with tags and comments.
- [YouTube Shorts Comments Scraper](https://apify.com/maximedupre/youtube-shorts-comments-scraper): collect public comments from YouTube Shorts for audience research.

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

# Actor input Schema

## `searchTerms` (type: `array`):

Words to search on Dailymotion. Each keyword is a separate search. The result type below sets what each search finds.

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

Full links to Dailymotion videos, channels or playlists, such as https://www.dailymotion.com/video/x8abcd1. A video link gives that video. A channel link gives the channel profile and its videos. A playlist link gives the playlist details and its videos.

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

The most results to save for each keyword or link. For a channel or playlist link, the profile row counts too. Leave empty or set 0 to get all available results.

## `resultType` (type: `string`):

What each keyword search finds. Links always return what they point to, whatever you pick here.

## `sortBy` (type: `string`):

The order of video search results. Leave empty for relevance.

## `uploadDate` (type: `string`):

Keep only video search results uploaded in this time window. Leave empty for any time.

## `minDuration` (type: `integer`):

Keep only videos at least this long. Applies to videos from keyword searches and from video, channel and playlist links.

## `maxDuration` (type: `integer`):

Keep only videos at most this long. Applies to videos from keyword searches and from video, channel and playlist links.

## `includeComments` (type: `boolean`):

Also get the public comments on each video the run collects. Comments have their own charge.

## `maxCommentsPerVideo` (type: `integer`):

The most comments to get for each video when video comments are on. Set 0 to get all available comments. If you leave it empty, the run gets up to 20 comments per video, where available.

## `downloadQuality` (type: `string`):

Save each collected video as an MP4 file at this quality. Pick the highest, a middle or the lowest quality the video has. Leave empty to skip file downloads.

## Actor input object example

```json
{
  "searchTerms": [
    "travel"
  ],
  "maxItems": 20,
  "resultType": "videos",
  "includeComments": false,
  "maxCommentsPerVideo": 20
}
```

# Actor output Schema

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

Open the default dataset to see one row for each saved Dailymotion video, channel or playlist.

# 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 = {
    "searchTerms": [
        "travel"
    ],
    "maxItems": 20,
    "resultType": "videos"
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/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 = {
    "searchTerms": ["travel"],
    "maxItems": 20,
    "resultType": "videos",
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/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 '{
  "searchTerms": [
    "travel"
  ],
  "maxItems": 20,
  "resultType": "videos"
}' |
apify call maximedupre/dailymotion-scraper --silent --output-dataset

```

## MCP server setup

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