DuckDuckGo Shopping Data
A Fourth Shopping Source, In the Same Endpoint
Most Shopping APIs are Google-only. The Serpent Shopping API spreads across four engines — Google, Yahoo, DuckDuckGo, and Brave — so you can compare what each surfaces for the same product query without juggling a different API per source.
Pass engine=ddg and the endpoint returns DuckDuckGo product listings as structured JSON with the same normalized fields as the other card-based engines. DuckDuckGo results use the Yahoo-style field shape (url, merchant, store, rating, reviews) so switching between card-based engines is a one-parameter change.
engine=google|yahoo|ddg|brave. Yahoo is the default — a bare call to /api/shopping?q=<query> returns Yahoo Shopping results.# Search DuckDuckGo Shopping for iphone 15 case curl "https://apiserpent.com/api/shopping?q=iphone+15+case&engine=ddg&num=10&country=us" \ -H "X-API-Key: YOUR_API_KEY"
import requests resp = requests.get( "https://apiserpent.com/api/shopping", params={"q": "iphone 15 case", "engine": "ddg", "num": 10}, headers={"X-API-Key": "YOUR_API_KEY"}, timeout=60, ) for p in resp.json()["results"]["shopping"]: print(p["title"], p.get("price"), p.get("merchant"))
const res = await fetch( "https://apiserpent.com/api/shopping?q=iphone+15+case&engine=ddg&num=10", { headers: { "X-API-Key": "YOUR_API_KEY" } }, ); const { results } = await res.json(); for (const p of results.shopping) { console.log(p.title, p.price, p.merchant); }
{
"success": true,
"query": "iphone 15 case",
"type": "shopping",
"engine": "ddg",
"country": "us",
"results": {
"shopping": [
{
"position": 1,
"title": "Spigen Mag Armor MagFit for iPhone 15",
"price": "$49.99",
"currency": "USD",
"merchant": "spigen.com",
"store": "spigen.com",
"url": "https://spigen.com/products/...",
"thumbnail": "https://.../product.jpg",
"rating": 4.5,
"reviews": 342,
"sponsored": true,
"snippet": "Shockproof military-grade case with built-in MagSafe..."
}
],
"totalResults": 10
},
"meta": {
"totalShopping": 10,
"elapsed": "4100ms",
"timestamp": "2026-08-06T10:30:00.000Z"
}
}
Price, rating, and review count are returned when the underlying shopping source provides them.
Why a fourth shopping engine matters
Google, Yahoo, DuckDuckGo, and Brave are independent sources. The same query can surface different merchants, different prices, and different product availability in each. Querying all four gives you a broader, more representative view of the market — and lets you cross-check price movements instead of trusting a single source.
Because all four engines flow through the same endpoint with the same normalized fields, switching between them is a one-parameter change (engine=google, engine=yahoo, engine=ddg, or engine=brave).
Data Fields
Structured DuckDuckGo Shopping Product Data
Every product result includes the fields you need for price monitoring, product matching, and ecommerce research.
Product Fields
- shopping[].position
- shopping[].title
- shopping[].price
- shopping[].merchant
- shopping[].store
- shopping[].url
- shopping[].thumbnail
- shopping[].rating
- shopping[].reviews
Request Parameters
- q (product query)
- engine (google | yahoo | ddg | brave)
- num (results count, up to 20)
- country (localization)
- language (2-letter code)
- format (full | simple)
Use Cases
- Cross-engine price monitoring
- Merchant coverage comparison
- Product & SKU matching
- Ecommerce market research
- Price-drop alerting
Pricing
- Default: $0.60/1K
- Growth: $0.06/1K
- Scale: $0.03/1K
- Included in 10 shared free calls
- Credits never expire
FAQ
DuckDuckGo Shopping API Questions
num to request up to 20 products per call.
google, yahoo (default), ddg, and brave. DuckDuckGo results use the same normalized card fields as Yahoo and Brave (url, merchant, store, price, rating, reviews), while engine=google returns Google-style fields (link, source, product_rating). Switching engines is a one-parameter change.
Start using the DuckDuckGo Shopping API
Pull DuckDuckGo product listings as structured JSON for as little as $0.03 per 1,000 calls.
View Pricing Try the Playground


