Endpoint Playground
Returns DuckDuckGo web search results for a query string: title, destination URL, description, and hostname, plus page-based pagination. DuckDuckGo wraps every result link in its own click-tracking redirect; this endpoint always returns the decoded destination URL, never the raw redirect link.
14 Oct 2026: 11 results; 5 fields had a value in every checked item.
Sample value profiles: position: 1 to 11, median 6; title: “Official site” and 10 other values; url: openai.com and 7 other hosts.
curl 'https://api.crawlora.net/api/v1/duckduckgo/search?q=openai&time_range=d&safe_search=strict' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| q | string | Yes | openai | Search query |
| page | integer | No | 1-based page number, defaults to 1 | |
| region | string | No | DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default) | |
| time_range | string | No | d | Restrict results to a recency window |
| safe_search | string | No | strict | Safe search level, defaults to DuckDuckGo's own moderate setting when omitted |
{
"code": 200,
"msg": "OK",
"data": {
"query": "openai",
"results": [
{
"position": 1,
"title": "OpenAI | Research & Deployment",
"url": "https://openai.com/",
"description": "OpenAI is an AI research and deployment company. Our mission is to ensure that artificial general intelligence benefits all of humanity.",
"hostname": "openai.com"
}
],
"pagination": {
"page": 1,
"next_page": 2
}
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.