Qwant Maps Scraper avatar

Qwant Maps Scraper

Pricing

from $1.99 / 1,000 search results

Go to Apify Store
Qwant Maps Scraper

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

Search API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Security

Limited permissions

Share

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

LabelURL
legacy-maps-pathhttps://www.qwant.com/maps/
maps-hosthttps://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

statusreasonCodeMeaning
DISCONTINUEDstandalone-maps-discontinuedAt least one probed route served a document and none rendered a map container, place card or map canvas.
SURFACE_AVAILABLEmaps-surface-detectedA probed route rendered a map/place marker, so the discontinued assumption no longer holds. The extractor still emits no rows until it is rebuilt.
BLOCKEDroutes-refusedEvery probed route was observed and every one answered with an error status.
UNVERIFIEDprobe-unavailableNo 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.

FieldDescriptionDefault
queryOptional query context, up to 256 characters. No search is performed.restaurant paris
localeOptional locale context, up to 16 characters. No localized search is performed.en_us
maxItemsLegacy 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 install
npm run check # node --check on every source file
npm test # node --test test/actor.test.js