Skip to content

New AI assistant answers: ChatGPT, Gemini, Copilot and AI Mode by API

SerpKite
Get API key

POST /v1/images · engine=duckduckgo

DuckDuckGo Image Search API

DuckDuckGo's image results with full-size URLs, thumbnails, dimensions and the page each image comes from. One credit usually returns 50 to 90 images.

Updated

Get a free API key Try in playground
1 credit per page of results 2,500 free credits, no card Failed calls are free

Overview

What the DuckDuckGo Image Search API does

DuckDuckGo's web results come largely from Bing's index; its news, images and videos come from its own feeds. Use it for DuckDuckGo's results without scraping it yourself, or as a fallback with broad image and video coverage.

/v1/images with engine: "duckduckgo" returns DuckDuckGo's image results: image_url, thumbnail_url, image_width, image_height, and the link, domain and source of the host page.

What you get

results[] array
Images: position, title, image_url (full size), thumbnail_url, image_width, image_height, and the host page's link, domain and source.
meta object
request_id, credits_used, cached, latency_ms, parse_quality, engine (the provider that answered) and route (each provider attempt with outcome and ms).

Request

curl https://api.serpkite.com/v1/images \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"espresso machine","engine":"duckduckgo"}'

Response (live response, trimmed)

200 OK · DuckDuckGo images · live response, trimmed
{
  "request": {
    "country": "us",
    "endpoint": "images",
    "engine": "duckduckgo",
    "language": "en",
    "num": 10,
    "page": 1,
    "q": "espresso machine"
  },
  "results": [
    {
      "domain": "tiendamia.com",
      "image_height": 1415,
      "image_url": "https://m.media-amazon.com/images/I/81ABm7+MerL._AC_SL1500_.jpg",
      "image_width": 1500,
      "link": "https://tiendamia.com/ar/producto?amz=B0DJSLMTWY",
      "position": 1,
      "source": "tiendamia.com",
      "thumbnail_url": "https://tse2.mm.bing.net/th/id/OIP.nuxCLYiFGF3PicOuOkmiugHaG_?r=0&pid=Api",
      "title": "Espresso Machine with Built-in Grinder,Professional 15 Bar Espresso ..."
    },
    {
      "domain": "madtasting.com",
      "image_height": 575,
      "image_url": "https://madtasting.com/wp-content/uploads/2024/08/top_espresso_machines_2024-16.jpg",
      "image_width": 1006,
      "link": "https://madtasting.com/vetted/best-commercial-super-automatic-espresso-machine/",
      "position": 2,
      "source": "madtasting.com",
      "thumbnail_url": "https://tse1.mm.bing.net/th/id/OIP.ZGckgsDI_cvaMuwsSFNVTgHaEO?r=0&pid=Api",
      "title": "15 Best Commercial Super Automatic Espresso Machines of 2025 - Brew ..."
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK4M6Q2V7",
    "credits_used": 1,
    "cached": false,
    "engine": "duckduckgo",
    "route": [
      {
        "provider": "duckduckgo",
        "outcome": "ok",
        "ms": 2455
      }
    ],
    "latency_ms": 2475,
    "parse_quality": "ok"
  }
}

Every response also carries X-Credits-Used, X-Credits-Remaining, X-Cache and X-Tokens-Estimate headers. Run this query in the playground

One key, many engines

DuckDuckGo through SerpKite

  • Same key, same envelope and the same SDK call as Google: only engine changes.
  • meta.engine names the provider that answered and meta.route lists every attempt. A result is never relabelled.
  • engine: "auto" keeps Google first and falls back to DuckDuckGo and the other engines only when Google fails. How fallback works
  • Failed, blocked and empty attempts are free; you pay only for the provider that answered.

Everything DuckDuckGo serves on SerpKite

See all engines on the multi-engine search page or in the providers reference.

engine=auto answered by DuckDuckGo (illustrative)

meta.route
{
  "request": {
    "endpoint": "images",
    "engine": "auto",
    "q": "espresso machine"
  },
  "meta": {
    "engine": "duckduckgo",
    "route": [
      {
        "provider": "google",
        "outcome": "blocked",
        "ms": 2140
      },
      {
        "provider": "duckduckgo",
        "outcome": "ok",
        "ms": 640
      }
    ]
  }
}

Measured Oct 25, 2026

How DuckDuckGo behaves on this endpoint

Three queries ("espresso machine", "northern lights norway", "mid century modern chair") sent to /v1/images with engine=duckduckgo through the production API.

Images per page
57 to 92, depending on the query
Median response time
2.8 s
Fields on every image
title, image_url, thumbnail_url, image_width, image_height, link, domain and source
Image size
Median width 1,200 px; 83% at least 1,000 px wide
Host sites
117 different domains across 228 images

Filters and limits

  • Images come from DuckDuckGo's JSON image feed, which needs a per-query token. SerpKite gets the token for you; it's reused for later pages of the same query.
  • time works for day, week, month and year. time: "hour" and custom date ranges are a 400 invalid_request and aren't charged.
  • country and language pick one of DuckDuckGo's regions; a country without one searches worldwide.
  • On the same three queries, DuckDuckGo returned fewer images per page than Brave (228 against 300) but larger ones, from twice as many sites (117 against 56). Use it when you want big, varied images; use Brave when you want the most images per credit.
  • One page costs 1 credit however many images it holds.

Reference

Parameters

The parameters /v1/images accepts, in the JSON body or the query string.

DuckDuckGo Image Search API parameters
Name Type Default Description
q required string – The search query. Required. Up to 2,048 characters.
engine string | string[] google "duckduckgo" for this page. "auto" tries Google first and falls back to other engines; a list such as ["google", "duckduckgo"] limits the route to those engines.
country string us Country to search from, as a two-letter ISO code (us, gb, de, in…). Defaults to the country a location ends in.
language string en Interface language, as a language code with an optional region (en, de, pt-BR, zh-TW…).
page integer 1 Results page, 1–10. Each page is billed separately.
format string json Response format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. Values: json, compact, markdown.
fields string – Comma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens.
max_age integer – Accept a cached result up to this many seconds old. Cache hits cost 50% of the credits.

Full reference, error codes and headers are in the /v1/images reference. Queue up to 100 requests at half price with POST /v1/batches.

Use cases

What people build with the DuckDuckGo Image Search API

01

Media search

DuckDuckGo images and videos return large result sets per page, with dimensions, durations and channels.

02

Fallback for agents

engine=auto answers from DuckDuckGo when Google and the engines before it are unavailable.

03

Privacy-minded products

Show DuckDuckGo's results in a product that promises users a non-Google source.

Pricing

DuckDuckGo Image Search API pricing

Cost per call

1 credit

per page of results

  • From $0.60 per 1,000 calls at volume.
  • Credits never expire. No subscription.
  • Failed, empty and blocked calls are refunded.
  • 2,500 free credits = 2,500 calls, then 1,000 credits a month.

For reference: Serper lists Google searches at $1.00 per 1k on its entry tier and $0.30 at its best tier, and its credits expire after 6 months. SerpKite credits cost $1.00 to $0.60 per 1k.

See all pricing
DuckDuckGo Image Search API cost per pack
Pack Price Per 1k credits Per 1k calls Calls per pack
Starter $10 $1.00 $1.00 10,000
Growth $50 $0.80 $0.80 62,500
Pro $300 $0.60 $0.60 500,000

FAQ

DuckDuckGo Image Search API: common questions

Start building

Start with the DuckDuckGo Image Search API

2,500 free credits, then 1,000 every month. No credit card.