---
title: "Search DuckDuckGo web results"
method: GET
path: "/duckduckgo/search"
tags: ["DuckDuckGo Search"]
---

# Search DuckDuckGo web results

`GET /duckduckgo/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/duckduckgo/search`
- Auth: API key in header `x-api-key`

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.

## Query parameters

- `q` string, required
- `page` integer
- `region` string
- `time_range` 'd' | 'w' | 'm' | 'y'
- `safe_search` 'strict' | 'moderate' | 'off'

## Headers

- `x-api-key` string, required

## Response `200`

OK

- DuckduckgoSearchResponseDoc
  - `code` integer
  - `data` DuckduckgoSearchResponse
    - `pagination` DuckduckgoSearchPagination
      - `next_page` integer
      - `page` integer
    - `query` string
    - `results` DuckduckgoSearchResult[]
      - `description` string
      - `hostname` string
      - `position` integer
      - `title` string
      - `url` string
  - `msg` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
