Google Maps scraper: API e MCP
Una Google Maps scraper API esegue una ricerca di attività limitata dalla tua app o da un agente. Una chiave di spazio di lavoro con ambito, un budget esplicito dell’attività e una chiave di idempotenza stabile coprono ogni nuovo tentativo. I risultati sono JSON e un campo assente resta vuoto.
Prima di avviare · La ricerca dal vivo richiede una fonte di dati configurata. I dati di esempio sono identificati. I piani a pagamento non sono ancora disponibili.

Crea un job con vincoli
Collega una chiave con permessi limitati a REST o a un client HTTP MCP. Stima attività, definisci budget e recupera risultati strutturati.
curl -X POST https://mapsscraper.dev/api/v1/jobs \
-H "Authorization: Bearer $MAPSSCRAPER_API_KEY" \
-H "Idempotency-Key: dentists-austin-tx-001" \
-H "X-Max-Units: 1" \
-H "Content-Type: application/json" \
-d '{"kind":"search","query":"Dentists in Austin, TX","limit":20,"region":"us"}'
HTTP/1.1 202 Accepted
{"id":"6f1c2b3a-0000-4000-8000-000000000000","status":"queued","reserved":1}Riprova la stessa operazione con la stessa chiave di idempotenza. Una richiesta modificata con quella chiave restituisce 409. Le attività passano per in coda, in esecuzione, completata, parziale, non riuscita, annullata o incerta. Una richiesta incerta alla fonte di dati richiede una riconciliazione invece di una ripetizione a pagamento automatica.
Che cos’è una Google Maps scraper API?
Una Google Maps scraper API accetta una categoria e un’area, restituisce schede pubbliche in JSON e mostra il budget massimo dell’attività prima della richiesta. Ogni attività usa una chiave con ambito e una chiave di idempotenza. Le recensioni sono una richiesta separata.
Leggi i risultati
Con la Google Maps scraper API, i job completati e parziali conservano i risultati per il periodo di conservazione della tua area di lavoro. Leggili pagina per pagina con offset e limit; la lettura dei risultati salvati non avvia mai una nuova ricerca.
Risposta di esempio, abbreviata. I valori sono illustrativi, non dati aziendali reali.
{
"items": [
{
"business_id": "sample-business-id",
"name": "Sample Dental Studio",
"full_address": "100 Example Ave, Austin, TX 78701",
"phone_number": "+1 512-555-0100",
"website": "https://dental.example",
"type": "Dentist",
"rating": 4.8,
"review_count": 214,
"latitude": 30.2672,
"longitude": -97.7431,
"_source": {
"provider": "live_maps",
"fetched_at": "2026-11-01T12:00:00Z",
"website_status": "provided_unverified"
}
}
],
"count": 1,
"offset": 0,
"next_offset": null,
"provider": "live_maps",
"coverage": "bounded_sample",
"fetched_at": "2026-11-01T12:00:00Z"
}API dello scraper di recensioni di Google Maps
Ogni attività richiede le recensioni di un solo ID attività, fino a 100 per pagina, ordinate per pertinenza, più recenti, valutazione più alta o più bassa. Ogni recensione include testo, valutazione, data, autore ed eventuale risposta del proprietario, se disponibile. Una pagina successiva richiede un'attività e un budget propri.
Estrattore di recensioniPOST /api/v1/jobs
Idempotency-Key: reviews-sample-business-001
X-Max-Units: 1
{"kind":"reviews","business_id":"sample-business-id","limit":50,"review_options":{"sort_by":"newest"}}Esempio in Python
Stima una ricerca con la Google Maps scraper API, crea il job, attendi uno stato finale e leggi i risultati con la libreria requests.
import os
import time
import uuid
import requests
API = "https://mapsscraper.dev/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['MAPSSCRAPER_API_KEY']}"}
task = {"kind": "search", "query": "Dentists in Austin, TX", "limit": 20, "region": "us"}
# An estimate reserves nothing.
units = requests.post(f"{API}/estimate", json=task, headers=HEADERS, timeout=30).json()["units"]
# Keep the key: a retry of the same task must send it again.
key = str(uuid.uuid4())
job = requests.post(
f"{API}/jobs",
json=task,
headers={**HEADERS, "Idempotency-Key": key, "X-Max-Units": str(units)},
timeout=30,
)
job.raise_for_status()
job_id = job.json()["id"]
while True:
status = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30).json()["status"]
if status not in ("queued", "running"):
break
time.sleep(5)
if status in ("completed", "partial"):
page = requests.get(
f"{API}/jobs/{job_id}/results",
params={"offset": 0, "limit": 100},
headers=HEADERS,
timeout=30,
).json()
for business in page["items"]: # follow page["next_offset"] for more
print(business.get("name"), business.get("phone_number"), business.get("website"))Domande sulla Google Maps scraper API
DocumentazioneÈ la Google Places API?
No. MapsScraper.dev è un servizio indipendente e non è affiliato a Google. I risultati provengono da una fonte di dati aziendali di terze parti e usano il nostro formato JSON.
Come vengono addebitate le richieste?
La maggior parte delle attività usa un’unità. L’arricchimento dei contatti su una ricerca o un’istantanea di posizionamento riserva un’unità in più per record richiesto e addebita solo i record consegnati. I dettagli dell’attività usano un’unità, o due con i contatti; l’arricchimento ne usa due. Imposta X-Max-Units almeno pari alla stima.
Email e telefoni sono garantiti?
No. La copertura dipende dalla fonte e dall’azienda. L’arricchimento facoltativo può fornire contatti pubblici; verifica dati mancanti o vecchi prima dell’uso.
Risorse
La prossima lista inizia da un luogo.
Esplora il flusso con esempi identificati e collega la tua area per ricerche reali.
Esplora un esempio