Qwant Maps Scraper
Pricing
from $1.99 / 1,000 search results
Qwant Maps Scraper
Scrapes native place and location results from Qwant's current web-search surface, including names, addresses, categories, coordinates, contact details, ratings, and source provenance.
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
15 days ago
Last modified
Categories
Security
Limited permissionsShare
Qwant Maps Availability Diagnostic
Qwant discontinued its standalone Maps service. The legacy /maps/ route and
map.qwant.com resolve to Qwant's ordinary web search, which is not a Maps
surface, and the current Qwant client exposes no dedicated public place-results
route.
This Actor no longer asserts that as a constant. Each run makes one bounded observation pass over the Qwant-owned Maps routes, records what they actually served (final host and path, HTTP status, redirect chain, page title, and map/place marker counts), and classifies the availability from that evidence. It never retries, never answers a challenge, never substitutes web search for map data, and never falls back to a third-party host. It emits no place-shaped dataset rows.
Routes probed
| Label | URL |
|---|---|
| legacy-maps-path | https://www.qwant.com/maps/ |
| maps-host | https://map.qwant.com/ |
Both are requested without a query string. Qwant's robots.txt disallows
/?*q=* for User-agent: *, so a query-bearing probe would be disallowed; the
question this Actor answers is whether a Maps surface exists at all, which does
not need one. The same robots.txt is read once per run and each probed path is
reported against it (robots.checks[].matchedRule / disallowed) as disclosure,
not as a pre-emptive refusal.
Status values
| status | reasonCode | Meaning |
|---|---|---|
DISCONTINUED | standalone-maps-discontinued | At least one probed route served a document and none rendered a map container, place card or map canvas. |
SURFACE_AVAILABLE | maps-surface-detected | A probed route rendered a map/place marker, so the discontinued assumption no longer holds. The extractor still emits no rows until it is rebuilt. |
BLOCKED | routes-refused | Every probed route was observed and every one answered with an error status. |
UNVERIFIED | probe-unavailable | No route could be observed (browser launch failure or transport error), so availability could not be confirmed either way. When the probe browser itself failed to start, OUTPUT.browserLaunchError carries the cause. |
Exit code is 0 for DISCONTINUED and SURFACE_AVAILABLE (the availability
question was answered) and 1 for BLOCKED and UNVERIFIED (it was not).
Input
All input fields are optional. They are copied into the diagnostic for run context only; no search query is sent to Qwant.
| Field | Description | Default |
|---|---|---|
| query | Optional query context, up to 256 characters. No search is performed. | restaurant paris |
| locale | Optional locale context, up to 16 characters. No localized search is performed. | en_us |
| maxItems | Legacy compatibility field, from 1 to 500. It does not control output; no dataset rows are produced. | 10 |
Example:
{"query": "cafe paris","locale": "fr_fr","maxItems": 1}
The accepted input fields and constraints are defined in .actor/input_schema.json.
Output
Each run stores exactly one JSON object at OUTPUT. It reports the observed status, the reason code, the zero record count, and the per-route evidence that produced the verdict. No dataset rows are pushed.
{"status": "DISCONTINUED","service": "Qwant Maps","reasonCode": "standalone-maps-discontinued","recordCount": 0,"datasetRecordsProduced": false,"checkedAt": "2026-10-26T09:12:44.118Z","query": "cafe paris","locale": "fr_fr","requestedMaxItems": 1,"routeStatus": "legacy-alias","probeAttempted": true,"routesProbed": 2,"mapsSurfaceDetected": false,"webSearchAliasDetected": true,"observedPageTitles": "Qwant - The search engine that doesn't track you. | …","routes": [{"label": "legacy-maps-path","host": "www.qwant.com","path": "/maps/","finalHost": "www.qwant.com","finalPath": "/","httpStatus": 200,"pageTitle": "Qwant - The search engine that doesn't track you.","redirectChain": [],"mapContainers": 0,"placeCards": 0,"mapCanvas": 0,"webResultCards": 0,"bodyTextLength": 12480,"bodyExcerpt": "…","error": null}],"robots": {"url": "https://www.qwant.com/robots.txt","httpStatus": 200,"checks": [{ "path": "/maps/", "matchedRule": null, "disallowed": false }]},"details": "…","message": "Qwant Maps is discontinued. Observed 2 Qwant-owned Maps route(s), none rendered a maps surface. No dataset records were created.","nextStep": "Resume place extraction only if Qwant republishes a public, dedicated Maps surface."}
Page excerpts are bounded to 240 characters and only host and path are stored, so no query string is persisted.
The exact OUTPUT diagnostic schema is defined in .actor/output_schema.json and .actor/key_value_store_schema.json. This Actor intentionally has no dataset schema because it writes no dataset rows.
Local development
npm installnpm run check # node --check on every source filenpm test # node --test test/actor.test.js