# HasData DuckDuckGo [Health: Active]

**Category:** 🔎 Search & Data Extraction  
**Repository:** https://github.com/HasData/duckduckgo-mcp  
**GitHub Stars:** 7  
**npm Downloads (last month):** 1053  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/hasdata-duckduckgo

## Description
DuckDuckGo search as JSON. Ranked results, ads in their own array, 37 regions.

## Tools
Capabilities this server exposes over MCP:

- **hasdata_duckduckgo_serp_getSearchResults** — Organic results (title, url, snippet, displayed url, position, date, sitelinks, video metadata), ads, and the Search Assist AI answer. 10 credits a call

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "hasdata-duckduckgo": {
    "command": "npx",
    "args": ["-y","@hasdata/duckduckgo-mcp"],
    "env": {
      "HASDATA_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `HASDATA_API_KEY` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What the HasData DuckDuckGo MCP server does

The HasData DuckDuckGo MCP server gives MCP-compatible agents access to parsed DuckDuckGo search pages. The response separates organic listings from advertisements and includes ranking positions, which makes the output suitable for extracting domains, comparing result order, or identifying paid placements without guessing from a mixed page.

Organic result records can include titles, URLs, snippets, displayed URLs, positions, dates, sitelinks, and video metadata. The response also includes DuckDuckGo's Search Assist AI answer when available. Results are returned as structured JSON rather than requiring an agent to interpret browser-rendered HTML.

## How it works

The hosted endpoint is available at `https://mcp.hasdata.com/mcp?apis=duckduckgo` and uses streamable HTTP. Clients authenticate with the `x-api-key` header. A search starts with a `q` value, while later pages use the `nextPageToken` returned by the previous response. Supplying a cursor takes precedence over a query, so callers should follow the pagination contract when walking multiple pages.

Regional targeting is supported through DuckDuckGo region parameters. The README describes 37 region values for `kl`, including formats such as `us-en`, `de-de`, `jp-jp`, and `wt-wt` for no region, plus a two-letter country option through `cc`. Comparing markets requires a separate call for each region. Each successful call costs 10 credits, so pagination and multi-region comparisons consume credits per request.

## Setup and configuration

The remote setup requires an MCP client that supports streamable HTTP and custom headers, along with a HasData API key. The key is passed as `x-api-key: HASDATA_API_KEY`. Clients with OAuth support can add the endpoint as a connector and sign in instead of placing the key in a configuration file.

Claude Code, Cursor, Windsurf, Cline, VS Code, Codex CLI, and Gemini CLI have documented remote configuration examples. Claude Desktop can use the remote connector, or it can connect through a local stdio launcher. The npm package `@hasdata/duckduckgo-mcp` and the PyPI package `hasdata-duckduckgo-mcp` provide launcher options that read `HASDATA_API_KEY` from the environment.

## Tools and capabilities

The HasData DuckDuckGo MCP server exposes one tool:

- `hasdata_duckduckgo_serp_getSearchResults` — fetches and parses a DuckDuckGo results page, returning organic results, ads, and the Search Assist AI answer. It accepts either a query or a pagination cursor and costs 10 credits per call.

A typical agent task can request the top results and their positions, list only advertisements, compare the same query across regions, or continue through additional pages using the returned cursor. The tool response is carried in a text block containing JSON. Direct clients should parse `result.content[0].text` and then read the relevant `json` field; chat clients may unwrap this automatically.

## Limitations and notes

The HasData DuckDuckGo MCP server is remote and requires a HasData API key unless the client uses the documented OAuth connector flow. It does not require a local browser package or a locally maintained browser process when used through the hosted endpoint.

The free allowance is 1,000 credits per month, described as 100 searches. A request for each additional page is a new billable call, and a prompt that compares multiple regions also makes one call per region. Search results and answer content can change as the web changes, so sample payloads should be treated as response shapes rather than fixed data.

_Full upstream README: https://allmcps.com/mcp/hasdata-duckduckgo/readme_

