Use Dailymotion Video Discovery by Topic & Channel with Python
Search Dailymotion by keyword, browse trending or topic videos, or pull a channel's uploads, with language, country, and duration filters, views, likes, tags, and owner details per video.
1. Choose the data you need
Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.
2. Prepare a source-based input
This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.
{
"liveOnly": false,
"maxItems": 3,
"mode": "search",
"playlists": [],
"searchQueries": [
"technology news"
],
"sortBy": "relevance",
"usernames": [],
"verifiedOnly": false,
"videoIds": []
}
Download input.example.json and save your reviewed copy as input.json.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to fetch from Dailymotion. |
searchQueries | array | optional | One or more keywords to search (mode=search, mode=searchUsers). Each query is paginated up to Max items. Existing tasks with the old `searchQuery` field keep working. |
topic | string | optional | Dailymotion category to browse (mode=byTopic). |
videoIds | array | optional | Specific videos to look up (mode=byVideoIds). Accepts bare IDs (`x4d4447`), dailymotion.com/video/... links, or dai.ly links. Unavailable IDs are skipped. |
sortBy | string | optional | Result order. Values apply where the Dailymotion API supports them: `relevance` needs mode=search/searchUsers; `popular` is mode=searchUsers only; `old`/`id-asc` are not available in trending mode. Unsupported values fall back to the mode's default order and the run note says so. Runs with maxItems above 1,000 always use a recent/old time-ordered sweep. |
language | string | optional | Only include videos in this language. Leave as All languages for every language. |
country | string | optional | Only include videos published from this country (mode=search, trending). Leave as All countries for every country. |
verifiedOnly | boolean | optional | Only include videos from verified Dailymotion channels (mode=search, trending). |
liveOnly | boolean | optional | Only include live streams instead of on-demand videos. |
tag | string | optional | Only include videos carrying this tag (mode=search, byTopic, byUser, byPlaylist). Example: `jazz`. |
createdAfter | string | optional | Only include videos published on or after this date, as `YYYY-MM-DD` (mode=search, trending, byTopic, byUser). Long ranges are fetched automatically in overlapping windows. Dailymotion applies date filters in ~5-minute buckets, so a day boundary can include up to five minutes of neighbouring content. |
createdBefore | string | optional | Only include videos published on or before this date, as `YYYY-MM-DD` (mode=search, trending, byTopic, byUser). Long ranges are fetched automatically in overlapping windows. Dailymotion applies date filters in ~5-minute buckets, so a day boundary can include up to five minutes of neighbouring content. |
minDuration | integer | optional | Only include videos at least this many seconds long. |
maxDuration | integer | optional | Only include videos at most this many seconds long. |
maxItems | integer | optional | Maximum number of records to return. Up to 1,000 comes from a single query; higher values automatically sweep Dailymotion's date windows (search/topic/channel modes, newest-first or oldest-first order). Playlist and channel-search modes stay capped at 1,000 per query. |
usernames | array | optional | One or more Dailymotion channels to fetch uploads from (mode=byUser). Accepts usernames (`euronews-en`), profile URLs (`https://www.dailymotion.com/user/euronews-en`), or profile IDs. Existing tasks with the old `username` field keep working. |
playlists | array | optional | One or more playlists to fetch (mode=byPlaylist). Accepts playlist URLs (`https://www.dailymotion.com/playlist/x6pu6c`) or bare playlist IDs. Existing tasks with the old `playlist` field keep working. |
3. Start an Actor run
Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.
Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.
import json
import os
import urllib.request
# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
actor_input = json.load(stream)
token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
"https://api.apify.com/v2/acts/XGXbbohKOjk6aa6HB/runs?timeout=120&maxTotalChargeUsd=0.50",
data=json.dumps(actor_input).encode("utf-8"),
headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.
4. Inspect the actual results
Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.
Dailymotion videos with views, likes, velocity, duration, thumbnails, tags, geo-blocking and channel/owner details, plus channel records when searching channels.
Questions before you run
Which inputs are required?
The published required fields are mode
What does this guide verify?
The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.
What if the run request times out?
Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.
Generated from source build KvXY5wmZ1cYMdDI41 and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.