DuckDuckGo Images API — Search Images as JSON
Documentation menu
FetchLayer FetchLayer API

Search DuckDuckGo Images

Images for a query from DuckDuckGo Images, in order: title, full-size image URL, thumbnail, width and height, the page the image appears on and its domain. Filter by size, color, type, layout and usage license, as well as region, safe search and time range. hasMore says whether more images exist; there is no total count.

POST /images News, videos & images
https://api.fetchlayer.dev/duckduckgo/images
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

query string required

The search query (1–500 characters).

region string optional

Region code: us-en, uk-en, de-de, fr-fr, es-es, it-it, jp-jp, in-en, au-en, ca-en, br-pt and 52 more (64 codes, DuckDuckGo’s own list), or wt-wt for no region. Results and rankings differ by region. (default: us-en)

safeSearch string optional

DuckDuckGo’s own filter level: strict, moderate or off. DuckDuckGo still returns a site for a query that names it outright. (default: moderate)

timeRange string optional

any, day, week, month or year: only results published within it. (default: any)

limit number optional

Images to return (1–300), or -1 for the maximum. (default: 50)

size string optional

small, medium, large or wallpaper.

color string optional

color (any colour image), monochrome, or red, orange, yellow, green, blue, purple, pink, brown, black, gray, teal or white.

type string optional

photo, clipart, gif, transparent or line.

layout string optional

square, tall or wide.

license string optional

any, public, share, share_commercially, modify or modify_commercially. (default: any)

format string optional

json or markdown. (default: json)

timeoutMs number optional

Time limit for each page read, in milliseconds (1000–120000).

Response Fields

images

Search DuckDuckGo Images

resultType string

search, rank-check, instant-answer, suggestions, news, videos or images.

requestedUrl string

The DuckDuckGo page this result corresponds to.

notes string[]

Caveats about this particular result — a list that may be incomplete, a depth DuckDuckGo could not reach, a later page that could not be read. Empty when there are none. Read it on every call.

transport string

The source this data came from. Always "duckduckgo".

scrapedAt string

ISO 8601 timestamp of when the data was collected.

query string

The query that was run.

region string

The region the results are for.

safeSearch string

The safe search level applied.

timeRange string

The time range applied.

size string | null

The size filter applied, or null. color, type, layout and license are echoed the same way.

images object[]

The images, in DuckDuckGo’s order.

images[].position number

1-based position in the list.

images[].title string

The title of the page the image is on.

images[].imageUrl string

The full-size image, on its original host.

images[].thumbnailUrl string

A thumbnail of the image.

images[].width number

Full-size width in pixels.

images[].height number

Full-size height in pixels.

images[].sourcePageUrl string

The page the image appears on.

images[].domain string

Hostname of the source page.

imageCount number

Images in this response.

pagesScraped number

Image list pages read, about 75–100 images each. Each counts as one request against your plan.

hasMore boolean

Whether DuckDuckGo had more images than were returned.

Request

curl -X POST "https://api.fetchlayer.dev/duckduckgo/images" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"query":"eiffel tower","limit":50}'

Response

{
  "resultType": "images",
  "requestedUrl": "https://duckduckgo.com/?q=eiffel+tower&kl=us-en&kp=-1&ia=images&iax=images",
  "scrapedAt": "2026-09-15T21:04:30.840Z",
  "transport": "duckduckgo",
  "notes": [],
  "query": "eiffel tower",
  "region": "us-en",
  "safeSearch": "moderate",
  "timeRange": "any",
  "size": null,
  "color": null,
  "type": null,
  "layout": null,
  "license": null,
  "images": [
    {
      "position": 1,
      "title": "Eiffel Tower | History, Height, & Facts | Britannica",
      "imageUrl": "https://cdn.britannica.com/54/75854-050-E27E66C0/Eiffel-Tower-Paris.jpg",
      "thumbnailUrl": "https://tse3.mm.bing.net/th/id/OIP.Z97bkX40h0DN2g8WwHpqJwHaLO?r=0&pid=Api",
      "width": 1056,
      "height": 1600,
      "sourcePageUrl": "https://www.britannica.com/topic/Eiffel-Tower-Paris-France",
      "domain": "www.britannica.com"
    },
    {
      "position": 2,
      "title": "Eiffel Tower: Where is it Located",
      "imageUrl": "https://cdn.britannica.com/52/245552-050-3D7334F9/Eiffel-Tower-Paris.jpg",
      "thumbnailUrl": "https://tse4.mm.bing.net/th/id/OIP.54RmpGCUWV9JgeBRQFxVjAHaHo?r=0&pid=Api",
      "width": 1551,
      "height": 1600,
      "sourcePageUrl": "https://letstalksport.co.uk/news/2025/11/28/eiffel-tower-where-is-it-located.html",
      "domain": "letstalksport.co.uk"
    }
  ],
  "imageCount": 50,
  "pagesScraped": 1,
  "hasMore": true
}