Free DuckDuckGo API (2026): What's Free, What's Near-Free
Search for “free DuckDuckGo API” and you get forum threads, GitHub libraries and vendor pages that all use the word “free” differently. Some of it stops being true the moment you ask for a real list of search results.
So here is the honest version. DuckDuckGo does give away one API. We also read the official pages of the options people use, and did the maths on what each costs past the free part.
Short answer: DuckDuckGo’s only official free API, Instant Answer, returns short summaries rather than ranked web results, and we found no official search-results API. For real results, use an unofficial Python library with no guarantees, a hosted free tier of 100 to 5,000 searches a month, or a cheap pay-as-you-go API.
What we read: on 23 October 2026 we read DuckDuckGo’s own pages, the PyPI and GitHub pages of the Python library, and each vendor’s pricing page. We did not benchmark any service, and we did not run the Python library or trial any competitor’s product. The cost figures are plain arithmetic on published prices. Serpent is the API this site sells, and it is listed here as one option among several.
The options at a glance
Two of these are free forever and come with strings. The rest are hosted APIs: a small free allowance first, then a price. Everything below was read on 23 October 2026.
| Option | Free part | Where it stops | Paid entry price |
|---|---|---|---|
| DuckDuckGo Instant Answer endpoint | Free, no key | Summaries and related topics only; no ranked web results; docs address redirects to the homepage | None |
| ddgs Python library | Free, MIT licence | Unofficial; README says “educational purposes only”; open rate-limit and 403 reports | None |
| Serpent | 10 free calls on signup (shared across services) plus one free demo run a day | Free allowance is small | $0.60 per 1,000 calls, no plan ($10 minimum deposit) |
| Bright Data | 5K records a month, no card | Above that, $1.50 per 1,000 requests | $1.50 per 1,000 pay as you go |
| HasData | 1,000 credits a month (100 DuckDuckGo searches) | A DuckDuckGo request costs 10 credits | $49 a month for 200K credits |
| SearchApi | 100 free requests | Page does not say whether that is one-off or monthly | $40 a month for 10,000 searches |
| SerpApi | 250 searches a month | 50 searches an hour on the free plan | $25 a month for 1,000 searches |
| Apify community actors | $5 of platform usage a month | Priced per result, not per search; each actor sets its own rate | From $0.53 or $0.06 per 1,000 results, depending on the actor |
Checked 2026-10-23. Sources are linked in each section below.
DuckDuckGo Instant Answer API: free, official, and not a search API
This is the “free DuckDuckGo API” most articles mean. It is a single endpoint at api.duckduckgo.com. You send a query, you get JSON back, and you do not need a key.
The catch is in the name. It returns an answer, such as a Wikipedia summary, a definition or a list of related topics. It does not return the ten blue links you see on a results page.
Its answer fields, such as Heading, AbstractText, AbstractSource and RelatedTopics, fill in when DuckDuckGo has an instant answer for the query. That suits entity and definition lookups. Commercial or everyday queries, such as “best running shoes”, are not what it is built for, so expect many of them to come back with empty values. If your job is rank tracking, content research or building a result list, this endpoint cannot do it.
One more thing to know before you build on it: the documentation address redirects. https://api.duckduckgo.com/api, where the docs used to live, redirects to the DuckDuckGo homepage, and we found no developer documentation to cite. Check the body of each response, not only the HTTP status code.
Here is the call in Python, using the requests package.
import requests
r = requests.get(
"https://api.duckduckgo.com/",
params={"q": "python programming language", "format": "json", "no_html": 1},
timeout=20,
)
data = r.json()
print(data["Heading"], "|", data["AbstractSource"])
print(data["AbstractText"][:100])
The fields to read are the heading, the source and the start of the summary. For a query with no instant answer, expect empty strings, so check before you use them.
Terms. DuckDuckGo’s Terms of Service say you must comply with its Acceptable Use Policy, that it may suspend access if you do not use the services as authorised, and that Instant Answer content comes from third parties with no promise of accuracy. The policy does not mention APIs by name. We are not lawyers: check the terms and your own counsel before building a product on any of this.
For the paid end of this market, see our DuckDuckGo API provider comparison.
DuckDuckGo API in Python: the ddgs library
If you want actual search results for free, the library most people find is ddgs. It used to be called duckduckgo-search; that package’s page now says it has been renamed. You install it with pip install -U ddgs.
The facts we could confirm from its PyPI page and the repository:
- It is not only DuckDuckGo. The project describes itself as “a metasearch library that aggregates results from diverse web search services.” Its README lists text backends including Bing, Brave, DuckDuckGo, Google, Mojeek, Startpage, Yandex and Yahoo, and the default
backendisauto. If you want DuckDuckGo specifically, name it. - It is maintained. Version 9.16.0 was uploaded on 26 August 2026, and it is MIT licensed.
- It is not affiliated with DuckDuckGo. The README says “This library is for educational purposes only.” The older package’s README went further: “It is not intended for commercial use or any purpose that violates DuckDuckGo’s Terms of Service.”
- It returns simple dictionaries with
title,hrefandbodykeys.
The README example is two lines:
from ddgs import DDGS
results = DDGS().text("python programming", max_results=5)
print(results)
What the issue tracker says
We read the project’s GitHub issues for rate limits and blocks. We are quoting what people reported, not testing the library ourselves.
- Issue 290 (March 2025): code that had worked suddenly returned “202 ratelimit” errors. The maintainer replied the next day that it was fixed in a new release.
- Issue 304 (May 2025): the same error again. Reporters said it continued after they tried the usual workarounds, and it cleared only after upgrading to a newer version.
- Issue 478 (July 2026, still open): a rate-limit exception class exists but is never raised, so your code cannot tell a rate limit from any other error.
- Issue 480 (July 2026, still open): a 403 on a news search from the DuckDuckGo backend while the Bing backend worked.
None of that makes the library bad. It is a volunteer project doing something DuckDuckGo has no API for, and it keeps up. But “keeps up” means your job breaks first and a fix arrives second.
What free really costs you
Free is a real price for a side project. For anything a customer depends on, it hides four costs.
- Your time. Each break in the issue tracker above meant a failed run until someone upgraded. That is maintenance you did not plan for.
- Errors you cannot read. When a rate limit and a block look like the same generic failure, you cannot back off sensibly. Issue 478 is exactly that.
- Terms risk. The library’s README says it is for educational purposes only (the older package said it was not intended for commercial use), and DuckDuckGo’s policy lets it end access to anyone it decides is out of line. We make no legal claim; we just point at the text.
- No one to ask. There is no support line and no service promise for a free endpoint.
Here is a worked example. Say you run 10,000 DuckDuckGo searches a month and your time is worth $40 an hour (use your own number). A hosted API at $0.60 per 1,000 costs $6 for that volume. If keeping the free route alive costs you 15 minutes a month, that is $10 of your time, already more than the paid bill. It is an illustration, not a measurement.
Test a DuckDuckGo SERP API without spending anything
Serpent’s engine=ddg returns ranked DuckDuckGo results as JSON from one GET request. Try it with 10 free calls on signup, or run one free demo search a day with no signup.
Explore: DuckDuckGo SERP API · Pricing · Playground · Docs
Free tiers on hosted DuckDuckGo search APIs
Hosted APIs give you structured JSON, a published price and a support channel. Each one also gives away a small amount to try it. Here are the free allowances we read, in DuckDuckGo searches you can actually run.
| Provider | Free allowance as printed | In DuckDuckGo searches |
|---|---|---|
| Bright Data | “5K records per month”, no credit card | Up to 5,000 a month, if one record is one request |
| SerpApi | 250 searches a month, 50 an hour | 250 a month |
| HasData | 1,000 credits a month | 100 a month (10 credits each) |
| SearchApi | “100 free requests”, no card | 100, one-off or monthly not stated |
| Serpent | 10 free calls on signup, shared across services; one free demo run a day on the site | 10 |
| Apify | $5 of platform usage a month, no card | Depends on the actor; see below |
Checked 2026-10-23 on each vendor’s own pricing page.
We will say it plainly: on free allowance, Serpent loses. Bright Data’s 5,000 a month is the biggest on this list by a wide margin, and if your whole workload is a few thousand DuckDuckGo searches a month, take that and stop reading. Ten calls is enough to see the JSON shape and decide whether you like the field names. It is not enough for a pilot.
The near-free options, one by one
“Near-free” here means pay-as-you-go prices of a few dollars or less per 1,000 searches, or a small monthly plan. Each option gets the same checklist: price, free tier, limits, best for, watch-outs.
Serpent
- Price: $0.60 per 1,000 calls at the Default tier, with no monthly plan. A one-time $100 deposit moves you to $0.30 per 1,000 (Growth), $500 to $0.10 (Scale) and $1,000 to $0.03 (Enterprise). The deposit is spendable balance, not a fee. The minimum first deposit is $10.
- Free tier: 10 free calls on signup, shared across services, plus one free demo run a day on the DuckDuckGo SERP API page.
- What you get:
engine=ddgon/api/searchand/api/search/quick. Organic rows with position, title, URL and snippet, publish dates on many rows, ads and the instant-answer box where DuckDuckGo shows them, 112 country codes, freshness and SafeSearch filters, and up to 100 results per call (best-effort at the high end). The same API also serves news, images and video for DuckDuckGo, and Google, Bing, Yahoo and Brave with one key. - Billing: pay as you go. Deposited credits do not expire; promotional bonus credits expire after 30 days (see pricing). Quick Search bills one call however many pages you ask for.
- Watch-outs: Quick Search is organic-only. On DuckDuckGo, Deep Search has no People Also Ask or related searches, and
aiOverviewis always null. The free allowance is small. - Best for: steady DuckDuckGo volume, rank tracking and anyone who wants a per-call price with no plan to under- or over-buy.
Bright Data
- Price: $1.50 per 1,000 requests pay as you go, charged only on success. The Scale plan is $499 a month with 380K requests included and $1.30 per 1,000 beyond that. Enterprise is custom.
- Free tier: 5K records a month, no card. The largest free allowance we found.
- Watch-outs: the $1.30 rate is for requests beyond the plan’s included volume, so it is not the price of the plan itself.
- Best for: small free workloads, and large teams that want an account manager and a service agreement.
HasData
- Price: plans of $49 (200K credits), $99 (1M credits) and $208 (3M credits) a month. Its pricing page prints $2.46, $0.99 and $0.69 per 1,000 DuckDuckGo requests for those. Its DuckDuckGo product page says a successful request costs 10 credits and failed requests cost nothing.
- Free tier: 1,000 credits a month, which is 100 DuckDuckGo searches.
- Watch-outs: $0.69 only applies if you use the whole $208 plan, which is 300,000 searches a month. At 100,000 searches the same plan works out to $2.08 per 1,000. The DuckDuckGo product page also quotes “$0.83 per 1k SERPs at volume”, which does not match the pricing page, so check which one applies to you.
- Best for: a steady, predictable monthly volume that lands near a plan size.
SearchApi
- Price: from $40 a month for 10,000 searches ($4 per 1,000), falling to $1.50 per 1,000 at 1 million searches for $1,500 a month and $1 per 1,000 at 5 million for $5,000.
- Free tier: 100 free requests, no card. The page does not say whether that is one-off or monthly.
- What it returns: its DuckDuckGo page lists organic results, ads, knowledge graph, top stories, inline images and videos, and related searches.
- Best for: teams that already use it for other engines and want DuckDuckGo on the same invoice.
SerpApi
- Price: $25 a month for 1,000 searches, $75 for 5,000, $150 for 15,000, $725 for 100,000 and $3,750 for 1 million. It prints plan prices, not a per-1,000 rate, and we read no separate DuckDuckGo surcharge on the pages we checked.
- Free tier: 250 searches a month, limited to 50 an hour.
- What it returns: its DuckDuckGo page documents organic results, ads, a knowledge graph, news, inline images, related searches and a Search Assist answer, with up to 50 results per request.
- Where it beats us: cached, errored and failed searches do not count toward your monthly total, and it lists a DuckDuckGo Maps engine that we do not offer. If your queries repeat a lot, the cache is a real saving.
- Best for: teams that want one well-known vendor and a fixed monthly bill.
Apify community actors
- Price: actors in the Apify Store are built by third parties and priced per result, not per search. One lists “from $0.53 / 1,000 search-results”; another, “from $0.06 / 1,000 search results” plus a small charge each time a run starts.
- Free tier: the Apify free plan includes $5 of usage a month with no card.
- Our arithmetic: a DuckDuckGo results page holds about 10 results, so those two rates work out to roughly $5.30 and $0.60 per 1,000 searches. They are best-case “from” rates; your plan decides what you pay.
- Watch-outs: quality and maintenance depend on the individual author.
- Best for: occasional one-off jobs where you do not want to write any code.
What it costs at 1K, 10K, 100K and 1M searches
Per-1,000 prices are how vendors like to be compared. Monthly bills are what you pay. This table prices one month of DuckDuckGo web searches on the cheapest published plan that covers the volume. Treat it as a worked example, not an offer.
| Searches a month | Serpent Default ($0.60) | Serpent Growth ($0.30) | Serpent Scale ($0.10) | Bright Data | HasData | SearchApi | SerpApi |
|---|---|---|---|---|---|---|---|
| 1,000 | $0.60 | $0.30 | $0.10 | $0 (free tier) | $49 | $40 | $25 |
| 10,000 | $6.00 | $3.00 | $1.00 | $15.00 | $49 | $40 | $150 |
| 100,000 | $60.00 | $30.00 | $10.00 | $150.00 | $99 | $250 | $725 |
| 1,000,000 | $600.00 | $300.00 | $100.00 | $1,305.00 | Not published (above top plan) | $1,500 | $3,750 |
Checked 2026-10-23. Serpent Growth needs a one-time $100 deposit and Scale $500; the deposit is spendable balance. Serpent columns use Quick Search, which bills one call per search.
How each column was built: Serpent is searches multiplied by the published rate. Bright Data is pay as you go at $1.50 per 1,000, except at 1 million, where the Scale plan wins: $499 plus 620,000 extra requests at $1.30 per 1,000 is $499 + $806 = $1,305 (the 1,000 row sits inside the free 5K, and the 10,000 row ignores it, so it may be lower). HasData is 10 credits a search, so 1,000 and 10,000 searches fit the $49 plan, 100,000 searches is exactly the $99 plan’s 1M credits, and 1 million is above the largest plan on the page. SearchApi and SerpApi are the cheapest plan that fits: SerpApi’s 10,000 row needs Production ($150, 15,000 searches) because 10,000 does not fit its 5,000-search plan.
Two things stand out. First, plan-based pricing hurts at small volumes: 1,000 searches costs $25 to $49 on three of these and 60 cents on Serpent’s Default rate. Second, at 100,000 a month, HasData’s $99 plan is the nearest rival to Serpent’s $60 at the Default tier, and the gap is bigger at the Growth and Scale tiers.
Here is the price claim, stated carefully. At the Default tier, Serpent’s $0.60 is among the lowest published rates we found. After a one-time $100 deposit, $0.30 per 1,000 is below the lowest published rate of every rival checked today: HasData’s $0.69, SearchApi’s $1.00, Bright Data’s $1.30 and SerpApi’s derived $1.96. The Apify best-case rate works out near $0.60 per 1,000 searches. Credit-bucket plans only reach their printed rate at full use, which we explain in our look at credit expiry.
How to choose
- You need definitions or entity summaries only. Use the Instant Answer endpoint. It is free and official. Check the body of each response.
- A hobby project or a notebook. The ddgs library is fine. Name the backend, expect occasional breakage and read the disclaimers.
- A few thousand searches a month, budget zero. Bright Data’s 5K free tier.
- A product or client report that depends on the data. A paid, documented API, with a price per call you can forecast. This is where Serpent is the pick on the numbers above.
- Heavily repeated queries and a fixed bill. SerpApi, because cached searches are free.
- Very large volume with a service agreement. Bright Data’s Enterprise, or a custom Serpent allocation.
- You track several engines. One schema across engines saves parser work. We cover the siblings in free Bing SERP API, free Yahoo search API, free Brave Search API and free Google SERP API guide.
Quick start: DuckDuckGo results in one request
Set engine=ddg and send your key in the X-API-Key header. This example asks for German results from the last 7 days.
curl "https://apiserpent.com/api/search?q=passwort+manager+test&engine=ddg&country=de&language=de&num=20&freshness=w" \
-H "X-API-Key: YOUR_API_KEY"
A rank check in Python uses Quick Search with format=simple, which flattens results to a list of position, title and URL.
import requests
API = "https://apiserpent.com/api/search/quick"
KEY = "YOUR_API_KEY"
def rank_of(domain, keyword, country="us"):
r = requests.get(
API,
params={"q": keyword, "engine": "ddg", "country": country,
"num": 20, "format": "simple"},
headers={"X-API-Key": KEY},
timeout=60,
)
r.raise_for_status()
for row in r.json().get("results", []):
if domain in row["url"]:
return row["position"]
return None
print(rank_of("example.com", "encrypted email providers"))
num is a ceiling, not a promise, so check how many rows came back. The full parameter list is in the API docs, and you can run the same call in the playground first.
Moving over from ddgs
querybecomesq,regionbecomescountry(for exampleusinstead ofus-en), andmax_resultsbecomesnum.- Result keys change from
title,href,bodytotitle,url,snippet, plus apositionon every row. - Check
successand the row count in the response body, as you should with any API, and cache repeated queries so you do not pay twice for the same answer.
For what a DuckDuckGo result page actually carries, see our DuckDuckGo search API guide, how answer boxes and links parse separately, and DuckDuckGo versus Google SERP data. If you are weighing the do-it-yourself route, scraping DuckDuckGo for free covers its limits.
Limits and what we could not verify
- No DuckDuckGo statement on Instant Answer terms or limits. The documentation address redirects, and DuckDuckGo publishes no rate limit for any of this. We cannot give you a safe request rate.
- “No official search-results API” means we found none. DuckDuckGo’s help pages describe partnerships, not an API. We cannot prove a private programme does not exist.
- The Python library was not run by us. Every claim about it comes from its PyPI page, README and issue tracker as read on 23 October 2026.
- Vendor free tiers have loose ends. SearchApi does not say whether its 100 requests are one-off. Bright Data calls its unit “records” on its free tier and “requests” on paid plans. HasData’s two pages disagree on the high-volume rate. Apify prices vary by actor and plan.
- No benchmarks. We make no claim about speed, success rate or result quality for any service, including ours.
- Prices move. Every number here was read on 2026-10-23, so re-check the vendor pages before you commit.
FAQ
Is there a free DuckDuckGo API?
Yes, but only a small one. DuckDuckGo's Instant Answer endpoint answers without a key. It is built for entity and definition lookups, not for commercial queries such as best running shoes, and it is not a ranked web-results API. For web results, the free routes are an unofficial Python library or the free tiers of hosted APIs, which run from 100 to 5,000 searches a month.
Does DuckDuckGo have an official search results API?
We found no official API for DuckDuckGo's ranked web results. Its help pages describe partnerships, not an API, and the old Instant Answer documentation address redirects to the DuckDuckGo homepage. Third parties sell DuckDuckGo results as a service, and we found no price list from DuckDuckGo itself.
What does the DuckDuckGo Instant Answer API return?
A JSON object with fields such as Heading, AbstractText, AbstractSource, AbstractURL, Infobox, RelatedTopics and Results. It is built for answers, such as a short summary and related topics, not for a ranked list of web pages. Expect many commercial queries to come back with empty fields.
Is the duckduckgo-search (ddgs) Python library free for commercial use?
The library is MIT licensed and free to install. Its README says it is for educational purposes only, and the earlier duckduckgo-search package said it was not intended for commercial use or any purpose that violates DuckDuckGo's Terms of Service. Read DuckDuckGo's terms and ask your own counsel before using it in a product.
Why does the DuckDuckGo Python library return rate-limit errors?
DuckDuckGo publishes no rate limit for these pages, so we cannot give you a number. The library's GitHub issues include reports of 202 Ratelimit errors in March and May 2025, each fixed by a new release, and open issues from July 2026 about unclear rate-limit errors and a 403 on the DuckDuckGo backend. Expect to maintain it.
What is the cheapest DuckDuckGo SERP API?
On rates published on 2026-10-23, Serpent charges $0.60 per 1,000 calls with no plan, $0.30 after a one-time $100 deposit and $0.10 after $500. The lowest published rival rates we found were HasData at $0.69 per 1,000, only on its $208 a month plan at full use, and a community Apify actor at about $0.60 per 1,000 searches in the best case. Free tiers are bigger elsewhere, up to 5,000 a month at Bright Data.
Sources
- DuckDuckGo Terms of Service and Acceptable Use Policy
- DuckDuckGo Help Pages: partnerships
- ddgs on PyPI and ddgs on GitHub
- duckduckgo-search on PyPI
- Bright Data: DuckDuckGo Search API
- HasData pricing and HasData DuckDuckGo SERP API
- SearchApi pricing and SearchApi DuckDuckGo API
- SerpApi pricing and SerpApi DuckDuckGo Search API
- Apify pricing, one DuckDuckGo actor and another
Try a DuckDuckGo SERP API at $0.60 per 1,000 calls
Serpent returns ranked DuckDuckGo results as structured JSON on pay-as-you-go pricing. No subscription, and deposited credits do not expire. Start with 10 free calls.
Start Free — 10 CallsExplore: DuckDuckGo SERP API · Pricing · DuckDuckGo API providers compared



