Scrape Google Maps places by search term and location
Scrape Google Maps places by search term and location: name, category, address, coordinates, rating, reviews count, phone, website, opening hours, attributes, place ID, plus optional emails and social profiles from each website. Fast, no API key. One search per call (result caps in the input schema); failed lookups are not charged.
Answeringour last check, 2026-10-24
1 of 1checks answered this week
6866 msmedian answer time
$0.01listed price per call
$0.01price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://agent-data.centorprat.workers.dev/tools/google-maps-scraper
| Category | Search and research |
|---|---|
| Provider host | agent-data.centorprat.workers.dev |
| Networks | eip155:137, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 3 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-24 | valid payment request | 402 | $0.01 | 6866 ms |
Example input (from the provider)
{
"body": {
"locations": [
"Austin, TX"
],
"maxPlacesPerSearch": 20,
"searchTerms": [
"dentist"
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"categoryFilter": {
"description": "Keep places whose Google category contains any of these, e.g. [\"dentist\"].",
"items": {
"type": "string"
},
"maxItems": 3,
"type": "array"
},
"country": {
"description": "Google country code, e.g. us, gb, de.",
"type": "string"
},
"coverWholeArea": {
"description": "Split each location into a grid and search every cell, to get ALL matching places in a city or region instead of Google's top ~120-200. Slower; set maxPlacesPerSearch high.",
"type": "boolean"
},
"gridCellKm": {
"description": "Smaller cells find more places in dense areas (more requests). 2-4 km for cities, 10+ km for rural regions.",
"type": "number"
},
"includeContacts": {
"description": "Visit each place's website for emails, extra phones and social profiles (charged per place where contacts are found).",
"type": "boolean"
},
"language": {
"description": "Language code for names and texts, e.g. en, de, es.",
"type": "string"
},
"locations": {
"description": "Cities, neighbourhoods or regions, e.g. [\"Austin, TX\", \"Brooklyn, NY\"]. Each term is searched in each location.",
"items": {
"type": "string"
},
"maxItems": 1,
"type": "array"
},
"maxContactPages": {
"description": "Homepage + contact / about pages checked per website.",
"maximum": 2,
"type": "integer"
},
"maxPlacesPerSearch": {
"description": "Per search term x location. A single search lists up to ~120-200 places; turn on 'Cover the whole area' for every place in a city (up to 10,000).",
"maximum": 20,
"type": "integer"
},
"minRating": {
"description": "Keep places rated at least this.",
"type": "number"
},
"minReviews": {
"description": "Keep places with at least this many reviews.",
"type": "integer"
},
"searchTerms": {
"description": "What to search on Google Maps, e.g. [\"dentist\", \"pizza\", \"plumber\"]. Can include the place: [\"coffee in Lisbon\"].",
"items": {
"type": "string"
},
"maxItems": 1,
"type": "array"
},
"skipClosed": {
"description": "Drop places marked permanently closed.",
"type": "boolean"
},
"website": {
"description": "Places without a website are leads for web designers and agencies.",
"enum": [
"any",
"with",
"without"
],
"type": "string"
}
},
"required": []
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}