The web, as JSON.
Search, news and rankings.
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.
Trusted by developers shipping real products.
247,350 served today
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
} 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.
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
No code or setup required · Uses your FetchLayer credits
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.
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
Solutions
Build the workflow around the feedback.
See who pays for the keyword
Pull the Search ads a competitor runs on Google, next to where they rank organically on DuckDuckGo.
Explore →Find what searchers ask
Search public Reddit threads for the questions and wording your ranking pages should answer.
Explore →Track launches in your space
Follow new products and their makers before they start competing for your keywords.
Explore →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.
- 01
List your keywords
Start from the terms you target, and widen the list with /suggestions for the completions searchers actually type.
- 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.
- 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
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.
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 keyFree tier · no credit card · any MCP host
Where does fetchlayer.dev rank on DuckDuckGo for reddit api, and which of our pages is it?
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.
Works with every MCP-compatible tool
Use cases
What teams build with DuckDuckGo search data.
Same API, endless applications. Here is what teams ship with public DuckDuckGo results and rankings.
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.
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.
AI agent web search
Give Claude, Cursor, or your MCP agent live web results, instant answers and news without a search API contract.
Keyword research
Expand a seed term with the completions DuckDuckGo suggests, then check which ones your site already ranks for.
News and brand monitoring
Search DuckDuckGo News for a brand or topic by day or week, with publisher, excerpt and publication time.
Ad visibility checks
See which advertisers show ads for a query. Ads come back in their own list and never shift the organic positions.
Compare approaches
Spend time on the insight, not the collection layer.
| What you need | FetchLayer | Official API | Build it yourself |
|---|---|---|---|
| Web results as JSON | ✓ | No web results API | You parse the HTML |
| Rank check 200 positions deep | 1 credit | n/a | 14 page loads, your retries |
| Ads kept out of positions | ✓ | n/a | You detect them |
| Results for a chosen region | ✓ | n/a | You set it per request |
| Ready for AI and MCP workflows | ✓ | Your integration | Your 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.
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
∞
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.
Used by developers at
Individual developers or teams — not official partnerships