DuckDuckGo SERP API — Web Results, News and Rank Checks | FetchLayer
Unofficial Third-party API
8 endpoints live

The web, as JSON.
Search, news and rankings.

Web, news & video results Instant answers & suggestions 1-credit rank checks 64 regions

Read DuckDuckGo results for any query as JSON: position, title, URL, snippet and date, with ads listed apart from the organic ranking, in 64 regions. News, videos, instant answers and search suggestions come on the same key, and a rank check finds where any domain or page ranks, up to 200 positions deep, for one credit.

Free tier included No credit card No scraper maintenance

Trusted by developers shipping real products.

247,350 served today

POST /duckduckgo/search
200 OK

Request

$ curl -X POST \
  https://api.fetchlayer.dev/duckduckgo/search \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"query":"open source crm","limit":10}'

Response

{
  "query": "open source crm",
  "region": "us-en",
  "results": [{
    "position": 1,
    "title": "Best Open Source CRM Software for 2026: Top 8 Picks Reviewed",
    "url": "https://crm.org/crmland/open-source-crm",
    "domain": "crm.org",
    "date": "2026-01-19T00:00:00"
  }, {
    "position": 2,
    "title": "9 Best Open Source CRMs Of 2026 - Forbes Advisor",
    "domain": "www.forbes.com"
  }],
  "nextCursor": "eyJ2IjoxLCJmIjoi…",
  "pagesScraped": 1
}

Used by developers at

Individual developers or teams — not official partnerships

Built for feedback workflows

Fetch the public signal. Use it wherever your team works.

Rank checks at a flat price

Scan 10, 100 or 200 organic positions for a domain or URL and pay 1 credit either way. The response reports serpPagesFetched so you can see the work done, and never bills for it.

Matching you can trust

A domain target matches the site and its subdomains on whole hostname labels, so look-alike domains never count. A URL with a path matches pages under that path. Every match comes back with its URL, title and page.

Positions that mean positions

Organic results are numbered across pages, a URL DuckDuckGo repeats is counted once, and ads sit in their own list. Position 8 is the eighth organic result, whatever ran above it.

64 regions

Rankings depend on where the searcher is. Requests default to us-en; pass uk-en, de-de, jp-jp or any of DuckDuckGo’s own region codes, with safe search and a day, week, month or year time range.

Answers, suggestions, news, videos

Instant answers with their source and fact rows, the completions the search box suggests, DuckDuckGo News with publisher and publication time, and videos with duration, uploader and view count.

Seven MCP tools

Every route is a tool on the FetchLayer MCP server, so an agent can search the web, read an instant answer or check a ranking mid-conversation, billed exactly like REST.

Image results with the page behind them

Up to 300 images a request, each with its full-size and thumbnail URL, dimensions, and the source page and domain it sits on — filtered by size, colour, type, layout or licence when you need a particular kind.

FetchLayer Research Chat

Check a keyword list against your site—then export it to CSV.

Prefer not to write code? Paste your keywords and your domain into FetchLayer Research Chat, ask where you rank and who ranks above you, and get a clean table for your SEO report.

  • Ask questions in plain English
  • Analyze themes, sentiment, and pain points
  • Download the structured results as CSV or JSON
Check rankings in Chat

No code or setup required · Uses your FetchLayer credits

DuckDuckGo research

Check where fetchlayer.dev ranks on DuckDuckGo for these 12 keywords, 200 positions deep, list the top 3 domains for each, then export it as CSV.

Y

I ran 12 rank checks, one credit each. fetchlayer.dev ranks for 7 of the 12 keywords, 2 of them in the top 20; the other 5 were not found within 200 positions. The table with positions, ranking URLs and the top 3 domains per keyword is ready to download.

duckduckgo-rank-check.csv

12 keywords · 6 columns · ready to download

CSV

From raw feedback to action

One request is the start of the workflow.

Store the structured response, run it on a schedule, pass it to an LLM, or feed it into the system your team already uses. FetchLayer handles retrieval so you can focus on the outcome.

  1. 01

    List your keywords

    Start from the terms you target, and widen the list with /suggestions for the completions searchers actually type.

  2. 02

    Check rankings on a schedule

    Run /rank-check for each keyword and domain, 200 positions deep, at 1 credit a check, and store the position, URL and date.

  3. 03

    Act on the moves

    Chart gains and drops, pull /search for the keywords you lost to see which page replaced you, or hand the table to an agent to write the weekly SEO report.

MCP & agents

Live

Your AI already knows how to use this.

Use the DuckDuckGo endpoint directly from your MCP-compatible agent. Ask it to retrieve public feedback, identify patterns, and turn the result into a useful brief without writing integration glue.

1
Pick your editor
2
Agent discovers 8 tools
3
Query any platform instantly
connect your agent ~30s

Pick your editor and we hand you the config with your key already in it — no JSON to hand-edit, no wrapper code.

Get your free API key

Free tier · no credit card · any MCP host

New chat fetchlayer connected

Where does fetchlayer.dev rank on DuckDuckGo for reddit api, and which of our pages is it?

Used fetchlayer.duckduckgo_rank_check

Checked 200 positions for one credit. fetchlayer.dev ranks 132nd for "reddit api" in the US region, with two pages on result page 10: the blog post on the Reddit API shutdown and the Reddit Scraper page two places below it.

Ask a follow-up…

Works with every MCP-compatible tool

Cursor
Claude
VS Code
Windsurf
Cline
Hermes
OpenClaw
Kiro
No wrapper code
All 8 endpoints exposed as tools
Official & maintained
Free to install

Use cases

What teams build with DuckDuckGo search data.

Same API, endless applications. Here is what teams ship with public DuckDuckGo results and rankings.

01

SEO rank tracking

Check where your domain or a single page ranks for each keyword, 200 positions deep, for 1 credit a check. Run it on a schedule and chart the moves.

seorankingscron
02

Competitor SERP audits

Pull the top results for your money keywords with titles, snippets and dates, and see who outranks you and with what page.

seocompetitorsserp
03

AI agent web search

Give Claude, Cursor, or your MCP agent live web results, instant answers and news without a search API contract.

llmagentsmcp
04

Keyword research

Expand a seed term with the completions DuckDuckGo suggests, then check which ones your site already ranks for.

keywordssuggestionscontent
05

News and brand monitoring

Search DuckDuckGo News for a brand or topic by day or week, with publisher, excerpt and publication time.

newsbrandalerts
06

Ad visibility checks

See which advertisers show ads for a query. Ads come back in their own list and never shift the organic positions.

adsppcresearch

Compare approaches

Spend time on the insight, not the collection layer.

What you needFetchLayerOfficial APIBuild it yourself
Web results as JSONNo web results APIYou parse the HTML
Rank check 200 positions deep1 creditn/a14 page loads, your retries
Ads kept out of positionsn/aYou detect them
Results for a chosen regionn/aYou set it per request
Ready for AI and MCP workflowsYour integrationYour integration

FetchLayer provides access to publicly available data. It is not affiliated with, endorsed by, or sponsored by the platform.

Pricing

Start free. Scale when ready.

Pay per request with no commitment, or lock in a flat monthly rate with built-in savings.

Free plan — 30 requests

Verify responses, inspect the API, no credit card required.

Try free

Pay as you go

$1.99

per 1,000 requests

$0.00199 per request · credits never expire

How credits work — no multipliers

One credit = one API call, on every endpoint and platform. No matter how many results come back, you pay for the call, not the output size. Most scraping APIs charge multipliers of 5x, 25x, even 75x per call depending on the target — here it's always 1.

  • No multipliers — 1 request = 1 credit
  • No monthly commitment
  • Credits never expire
  • Same API & MCP access as subscribers
  • ∞ req/min, ∞ API keys
Get API key

Expiry

Credits stay until you use them. No monthly reset, no pressure to hit a quota.

0

Commitments

No subscription, no contract, no minimums. Start, pause, or scale whenever.

100%

Access

Every endpoint and MCP included. Not a limited tier — same data as any subscriber.

API reference

Every parameter, documented.

All requests are POST with a JSON body and Bearer auth header.

POST /duckduckgo/search

Organic web results in order with position, title, URL, displayed URL, domain, snippet and date, ads in their own list, and the zero-click summary when there is one. Continue past the first request with a cursor.

query* string The search query
limit number Results to return, up to 200. Defaults to 10, the first page.
region / safeSearch / timeRange string Region code, strict | moderate | off, and any | day | week | month | year.
cursor string Resume from a previous response's nextCursor.
POST /duckduckgo/rank-check

Where a domain or URL ranks in DuckDuckGo’s organic results for a query: found, best position, and every match with its URL, title and page. Scans up to 200 positions and costs 1 credit regardless of depth.

query* string The keyword, as a searcher would type it
target* string A domain (example.com, subdomains included) or a URL with a path (example.com/blog)
depth number Positions to scan, up to 200. Defaults to 100.
allMatches boolean Scan the full depth and report every match, not just the first page with one.
region string us-en (default), uk-en, de-de and 61 more, or wt-wt for no region.
POST /duckduckgo/suggestions

The completions DuckDuckGo’s search box suggests for a partial query, in order. One request per call, for keyword research and query expansion.

query* string The partial query to complete
region string Region code. Defaults to us-en.
POST /duckduckgo/instant-answer

DuckDuckGo’s instant answer: topic summary and its source, definition or direct answer, infobox fact rows, official website and related topics. found is false when there is none.

query* string The topic or question
POST /duckduckgo/news

DuckDuckGo News articles with title, URL, publisher, excerpt, publication time and image. Filter by region, safe search and time range.

query* string The search query
limit number Articles to return, up to 150. Defaults to 30.
timeRange string 'any' | 'day' | 'week' | 'month' | 'year'
POST /duckduckgo/videos

DuckDuckGo Videos with title, URL, description, duration, publisher, uploader, date, view count, thumbnail and embed URL.

query* string The search query
limit number Videos to return, up to 120. Defaults to 30.
POST /duckduckgo/images

DuckDuckGo Images with full-size and thumbnail URLs, width and height, source page and domain, filtered by size, color, type, layout and license.

query* string The search query
limit number Images to return, up to 300. Defaults to 50.
type string 'photo' | 'clipart' | 'gif' | 'transparent' | 'line'
POST /duckduckgo/resolve-url

Turn a DuckDuckGo search, news or video URL into its query and filters, a topic page into its topic, or a result or ad link into its destination. Never contacts DuckDuckGo, and never consumes a credit.

url* string A DuckDuckGo URL

Fields marked * are required. Full API reference →

FAQ

Common questions.

Do I need a DuckDuckGo account or API agreement?

No. DuckDuckGo publishes no web results API to sign up for, and you do not need an account, a partner agreement or a DuckDuckGo login. You send your FetchLayer key and a query, and you get back the results any visitor to duckduckgo.com sees, as JSON. FetchLayer is not affiliated with, endorsed by, or sponsored by DuckDuckGo.

How much does a rank check cost?

One credit, regardless of depth. A /rank-check that scans 200 positions reads 10 or more result pages and still bills as one request. The response reports how many pages it read in serpPagesFetched, and that number is never billed. A deep check can take 30 seconds or more, so give your HTTP client a generous timeout.

How does a rank check match my site?

Pass a domain such as example.com and it matches that site and, by default, its subdomains, on whole hostname labels, so notexample.com never counts. Pass a URL with a path such as example.com/blog and it matches pages under that path only. The response returns the best position and every matching result with its URL, title and result page. By default the scan stops after the first page with a match; set allMatches to scan the full depth.

Why does my ranking differ from what I see in my browser?

Because DuckDuckGo ranks by region. Every request defaults to us-en, a US searcher, and the same query in uk-en or de-de returns a different order. Pass region with any of DuckDuckGo's 64 region codes to check the market you care about, or wt-wt for no region. Rankings also move from day to day, so track them over time rather than reading one check as fixed.

How deep do DuckDuckGo results go?

About 190 to 200 organic results for a broad query, then DuckDuckGo stops listing more and the response sets endOfResults to true. A search returns up to 200 results, and a rank check scans up to 200 positions. If a rank check says found: false, the whole depth was examined, or every result DuckDuckGo listed when there were fewer.

How are ads handled?

Ads come back in their own ads array, with title, landing page, domain and snippet, and they never take an organic position. A position of 8 means the eighth organic result, however many ads sat above it.

Is this a DuckDuckGo SERP API?

Yes. It returns DuckDuckGo’s search engine results pages as structured JSON: ranked organic results with position, title, URL, snippet and date, ads kept apart from the ranking, the zero-click summary, plus news, video and image results, search suggestions and instant answers. DuckDuckGo offers no official web search API with ranked results, so this is how you get them programmatically. Search bills per result page read, and a rank check costs 1 credit at any depth.

What is not available?

No total result count: DuckDuckGo does not publish an "about N results" figure anywhere, so page with nextCursor until endOfResults. Panels beyond the zero-click summary, such as maps, weather or shopping, are not returned.

What else can I query besides web results?

Instant answers (a topic summary with its source, definitions, fact rows and related topics), the suggestions DuckDuckGo's search box offers for a partial query, DuckDuckGo News with publisher and publication time, and DuckDuckGo Videos with duration, uploader and view count. /resolve-url turns any DuckDuckGo search, news or video URL into its query and filters without contacting DuckDuckGo.

How does billing work?

One API request equals one credit, the same as every other FetchLayer platform. Search bills one request per result page read: the first page holds 10 results and each later page up to 15, so limit: 50 reads four or five pages and bills that many, and pagesScraped in the response says which. News and videos bill per list page. Instant answers and suggestions are one request each, a rank check is one request at any depth, and /resolve-url is free. DuckDuckGo is in Beta while coverage expands, billed at half credit.

Can my AI agent use it?

Yes. All seven routes are MCP tools on the same FetchLayer MCP server, named duckduckgo_search, duckduckgo_rank_check, duckduckgo_instant_answer, duckduckgo_suggestions, duckduckgo_news, duckduckgo_videos and duckduckgo_resolve_url. Tool calls use the same key and are billed exactly like REST, so a rank check from an agent is still one credit.

Start pulling DuckDuckGo SERP data today.

Get a free API key, make your first request, and put public feedback to work in your own product or research workflow.