POST /v1/videos · engine=duckduckgo
DuckDuckGo Video Search API
DuckDuckGo's video results with channel, duration, exact publish date, full description and thumbnail for each video.
Updated
Overview
What the DuckDuckGo Video Search API does
DuckDuckGo's web results come largely from Bing's index; its news, images and videos come from its own feeds. Use it for DuckDuckGo's results without scraping it yourself, or as a fallback with broad image and video coverage.
/v1/videos with engine: "duckduckgo" returns DuckDuckGo's video results: title, link, domain, source, channel, duration, published_at, the video's description as snippet, and an image_url thumbnail. A page often holds 50 or more videos.
What you get
-
results[]array - Videos: position, title, link, domain, source (e.g. YouTube), channel, duration, date / published_at, snippet and image_url.
-
metaobject - request_id, credits_used, cached, latency_ms, parse_quality, engine (the provider that answered) and route (each provider attempt with outcome and ms).
Request
curl https://api.serpkite.com/v1/videos \
-H "Authorization: Bearer $SERPKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q":"espresso tutorial","engine":"duckduckgo"}'Response (live response, trimmed)
{
"request": {
"country": "us",
"endpoint": "videos",
"engine": "duckduckgo",
"language": "en",
"num": 10,
"page": 1,
"q": "espresso tutorial"
},
"results": [
{
"channel": "Dero_De_Barista",
"date": "2023-07-31T12:55:58.0000000",
"domain": "youtube.com",
"duration": "3:20",
"image_url": "https://tse2.mm.bing.net/th/id/OVP.1f82q3uUBIwBq_wtKh_6swHgFo?pid=Api",
"link": "https://www.youtube.com/watch?v=SSE-3sPJsOM",
"position": 1,
"published_at": "2023-07-31T12:55:58Z",
"snippet": "As barista Brewing great espresso can be really simple by following these basic guidelines. In this video i guide you though a full gide on how you can make a perfect espresso as a beginner barista bu…",
"source": "YouTube",
"title": "The Ultimate Guide to Brewing Perfect Espresso Shot as beginner barista"
},
{
"channel": "Joshua Weissman",
"date": "2019-10-24T16:00:08.0000000",
"domain": "youtube.com",
"duration": "7:36",
"image_url": "https://tse4.mm.bing.net/th/id/OVP.tCQwAuzqN1qPeOugBQsp3gHgFo?pid=Api",
"link": "https://www.youtube.com/watch?v=ZuQu12vMQZM",
"position": 2,
"published_at": "2019-10-24T16:00:08Z",
"snippet": "Get 50% OFF your first bag of coffee with Trade Coffee when you click here http://bit.ly/tradeweissman and use my code WEISSMAN50 + https://shop-links.co/1731311682878966983 Brewing great espresso jus…",
"source": "YouTube",
"title": "The Espresso Guide For Beginners"
}
],
"meta": {
"request_id": "req_01J8ZK4M6Q2V7",
"credits_used": 1,
"cached": false,
"engine": "duckduckgo",
"route": [
{
"provider": "duckduckgo",
"outcome": "ok",
"ms": 2288
}
],
"latency_ms": 2320,
"parse_quality": "ok"
}
}
Every response also carries X-Credits-Used, X-Credits-Remaining,
X-Cache and X-Tokens-Estimate headers.
Run this query in the playground
One key, many engines
DuckDuckGo through SerpKite
- Same key, same envelope and the same SDK call as Google: only
enginechanges. meta.enginenames the provider that answered andmeta.routelists every attempt. A result is never relabelled.engine: "auto"keeps Google first and falls back to DuckDuckGo and the other engines only when Google fails. How fallback works- Failed, blocked and empty attempts are free; you pay only for the provider that answered.
Everything DuckDuckGo serves on SerpKite
-
DuckDuckGo Search API
POST /v1/search · engine=duckduckgo -
DuckDuckGo News API
POST /v1/news · engine=duckduckgo -
DuckDuckGo Image Search API
POST /v1/images · engine=duckduckgo -
DuckDuckGo Video Search API
POST /v1/videos · engine=duckduckgo
See all engines on the multi-engine search page or in the providers reference.
engine=auto answered by DuckDuckGo (illustrative)
{
"request": {
"endpoint": "videos",
"engine": "auto",
"q": "espresso tutorial"
},
"meta": {
"engine": "duckduckgo",
"route": [
{
"provider": "google",
"outcome": "blocked",
"ms": 2140
},
{
"provider": "duckduckgo",
"outcome": "ok",
"ms": 640
}
]
}
}Measured Oct 25, 2026
How DuckDuckGo behaves on this endpoint
Three queries ("espresso tutorial", "rust async explained", "how to tie a bowline") sent to /v1/videos with engine=duckduckgo through the production API, and four more to count video hosts.
- Videos per page
- 46 to 58
- Median response time
- 2.7 s
- Fields on every video
title,link,source,channel,duration,date,published_atand theimage_urlthumbnail- Videos with a description
- 99%
- Where the videos are hosted
- 207 of 218 (95%) on YouTube, 6 on TikTok and 5 on MSN
Filters and limits
-
timeworks forday,weekandmonth.hourandyearare a400 invalid_requestand aren't charged: DuckDuckGo's video feed has neither filter. - Custom date ranges aren't supported on videos either.
- Videos come from DuckDuckGo's JSON video feed, which needs a per-query token. SerpKite gets the token for you.
-
countryandlanguagepick one of DuckDuckGo's regions; a country without one searches worldwide.
Reference
Parameters
The parameters /v1/videos accepts, in the JSON body or the query string.
| Name | Type | Default | Description |
|---|---|---|---|
q
required
|
string | – | The search query. Required. Up to 2,048 characters. |
engine
|
string | string[] | "duckduckgo" for this page. "auto" tries Google first and falls back to other engines; a list such as ["google", "duckduckgo"] limits the route to those engines. | |
country
|
string | us | Country to search from, as a two-letter ISO code (us, gb, de, in…). Defaults to the country a location ends in. |
language
|
string | en | Interface language, as a language code with an optional region (en, de, pt-BR, zh-TW…). |
page
|
integer | 1 | Results page, 1–10. Each page is billed separately. |
format
|
string | json | Response format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. Values: json, compact, markdown. |
fields
|
string | – | Comma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens. |
max_age
|
integer | – | Accept a cached result up to this many seconds old. Cache hits cost 50% of the credits. |
Full reference, error codes and headers are in the /v1/videos reference. Queue up to 100 requests at half price with POST /v1/batches.
Use cases
What people build with the DuckDuckGo Video Search API
Media search
DuckDuckGo images and videos return large result sets per page, with dimensions, durations and channels.
Fallback for agents
engine=auto answers from DuckDuckGo when Google and the engines before it are unavailable.
Privacy-minded products
Show DuckDuckGo's results in a product that promises users a non-Google source.
Pricing
DuckDuckGo Video Search API pricing
Cost per call
1 credit
per page of results
- From $0.60 per 1,000 calls at volume.
- Credits never expire. No subscription.
- Failed, empty and blocked calls are refunded.
- 2,500 free credits = 2,500 calls, then 1,000 credits a month.
For reference: Serper lists Google searches at $1.00 per 1k on its entry tier and $0.30 at its best tier, and its credits expire after 6 months. SerpKite credits cost $1.00 to $0.60 per 1k.
| Pack | Price | Per 1k credits | Per 1k calls | Calls per pack |
|---|---|---|---|---|
| Starter | $10 | $1.00 | $1.00 | 10,000 |
| Growth | $50 | $0.80 | $0.80 | 62,500 |
| Pro | $300 | $0.60 | $0.60 | 500,000 |
FAQ
DuckDuckGo Video Search API: common questions
Keep exploring
Related APIs and integrations
Use it from
Start building
Start with the DuckDuckGo Video Search API
2,500 free credits, then 1,000 every month. No credit card.