DuckDuckGo Maps Scraper
Pricing
from $1.99 / 1,000 search results
DuckDuckGo Maps Scraper
Scrapes local business and place results from DuckDuckGo Maps. Extracts name, address, phone, website, rating, reviews, category, hours, and coordinates.
Pricing
from $1.99 / 1,000 search results
Rating
0.0
(0)
Developer
Search API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Features
Share
Scrapes the public DuckDuckGo Maps results page and returns normalized local business records. The actor reads the ranked place list rendered in the Maps sidebar (and DuckDuckGo's own embedded React payload behind it), then preserves the values shown there: names, addresses, phones, rating providers, ratings, review counts, categories, prices, hours, open status, review text, thumbnails, and search provenance.
Input
| Field | Required | Default | Description |
|---|---|---|---|
query | Yes | — | Place or business query, such as coffee shops. |
location | No | — | City, neighborhood, or address appended as near <location>. |
maxItems | No | 50 | Number of cards to return, from 1 to 500. |
category | No | — | Case-insensitive category filter. |
minRating | No | — | Keep cards at or above a rating from 0 to 5. |
openNow | No | false | Keep cards whose visible status starts with Open. |
region | No | us-en | DuckDuckGo market code. |
proxyConfiguration | No | — | Optional Apify proxy settings. |
maxRequestRetries | No | 2 | Retries for transient navigation and server failures, from 0 to 5. A detected CAPTCHA or access denial ends the run without retrying. |
requestTimeoutSecs | No | 45 | Maximum page navigation wait, from 10 to 120 seconds. |
headless | No | true | Run the browser without a visible window. |
The complete input contract, including types and bounds, is in .actor/input_schema.json.
Example:
{"query": "coffee shops","location": "New York","maxItems": 20,"region": "us-en"}
Output
Every record has a stable generated id and uid, output and source positions, the visible business fields, and provenance fields such as sourceUrl, dataSource, retrievalMethod, searchUrl, searchMetadata, and scrapedAt.
A record is only emitted for a real ranked place: the name must come with a visible address or coordinates. DuckDuckGo's single focused place panel (article[data-testid="maps-vertical-detail"]) is not a search result and is never read. When the Maps surface returns no ranked place, the run stores 0 rows instead of inventing a place from the query text.
link/detailUrl carry the place's provider listing URL (for example its Yelp page). A map-provider place link (maps.apple.com, maps.google.*, …) is never used as the result link; when it is the only URL the payload has, it is reported as providerUrl instead.
The dataset declares more than 70 possible fields. Fields unavailable on the current public card are omitted — DuckDuckGo does not publish e-mail addresses, opening-time navigation URLs, claimed/verified flags, chain data or payment options, so those stay empty. The overview view contains the common business fields; fullDetails exposes the complete normalized record.
The full dataset field schema, types, and requiredness are in .actor/dataset_schema.json.
How to use
Enter a place query and optional location in the Apify Input tab, set filters, and start the Actor. Review business records in the Output dataset. Queries with no local intent can return an empty dataset because DuckDuckGo may show only a focused place panel instead of ranked places.
Source behavior
DuckDuckGo can change its Maps markup, return fewer cards, or show no local results for a query. The actor returns only cards it can read from the live public page and does not invent coordinates, websites, or source identifiers when the page does not expose them.
A query with no local intent (for example artificial intelligence) is not an error: DuckDuckGo answers it with a single focused place panel and no ranked list, so the actor logs the empty surface and stores nothing. Give the query local intent, or pair it with location, to get places.