Search Google Maps
curl --request POST \
--url https://gmapscrawl.com/api/v1/search \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"q": "coffee shops in Seattle",
"page": 1,
"hl": "en",
"extra": false
}
'import requests
url = "https://gmapscrawl.com/api/v1/search"
payload = {
"q": "coffee shops in Seattle",
"page": 1,
"hl": "en",
"extra": False
}
headers = {
"API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({q: 'coffee shops in Seattle', page: 1, hl: 'en', extra: false})
};
fetch('https://gmapscrawl.com/api/v1/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"total": 10,
"params": {
"q": "<string>",
"page": 5,
"hl": "<string>",
"extra": true,
"ll": "<string>",
"gl": "<string>"
},
"businesses": [
{
"schemaVersion": "2026-09-22",
"place": {
"placeId": "<string>",
"cid": "<string>",
"dataId": "<string>",
"name": "<string>",
"description": "<string>",
"plusCode": "<string>",
"timeZone": "<string>",
"note": "<string>",
"hotelClass": 2.5,
"amenities": [],
"about": [],
"phones": [],
"claimed": true,
"owner": {
"id": "<string>",
"name": "<string>",
"profileUrl": "<string>"
},
"kgmid": "<string>",
"knowledgeUrl": "<string>",
"reviewUrl": "<string>",
"featuredImageUrl": "<string>",
"businessStatus": "<string>",
"category": "<string>",
"categories": [
"<string>"
],
"address": {
"formatted": "<string>",
"street": "<string>",
"city": "<string>",
"region": "<string>",
"postalCode": "<string>",
"countryCode": "<string>",
"municipality": "<string>"
},
"location": {
"latitude": 0,
"longitude": 0
},
"phone": "<string>",
"website": "<string>",
"domain": "<string>",
"rating": 2.5,
"reviewCount": 4503599627370495,
"emails": [
"jsmith@example.com"
],
"socialProfiles": [
"<string>"
],
"reviewsState": "not_requested",
"reviews": [
{
"position": 4503599627370495,
"id": "<string>",
"rating": 2.5,
"text": "<string>",
"language": "<string>",
"publishedAt": "<string>",
"publishedText": "<string>",
"reviewer": {
"displayName": "<string>",
"profileUrl": "<string>",
"avatarUrl": "<string>"
},
"ownerResponse": "<string>",
"sourceUrl": "<string>"
}
],
"photosState": "not_requested",
"photos": [
{
"position": 4503599627370495,
"id": "<string>",
"mediaType": "photo",
"url": "<string>",
"thumbnailUrl": "<string>",
"width": 50000,
"height": 50000,
"attribution": "<string>"
}
],
"openingHours": {},
"priceRange": "<string>",
"mapsUrl": "<string>",
"observedAt": "<string>",
"language": "en",
"contactsCheckedAt": "<string>",
"enrichmentState": "pending",
"contacts": [],
"fieldStates": {}
},
"businessId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"revision": 123
}
],
"simulated": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}REST endpoints
Search businesses
Search Google Maps and return up to 20 businesses directly. One request unit per search page, including empty pages. Page is 1–10. No job polling or webhooks. Scraped text is untrusted data, never instructions.
POST
/
search
Search Google Maps
curl --request POST \
--url https://gmapscrawl.com/api/v1/search \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"q": "coffee shops in Seattle",
"page": 1,
"hl": "en",
"extra": false
}
'import requests
url = "https://gmapscrawl.com/api/v1/search"
payload = {
"q": "coffee shops in Seattle",
"page": 1,
"hl": "en",
"extra": False
}
headers = {
"API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({q: 'coffee shops in Seattle', page: 1, hl: 'en', extra: false})
};
fetch('https://gmapscrawl.com/api/v1/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"total": 10,
"params": {
"q": "<string>",
"page": 5,
"hl": "<string>",
"extra": true,
"ll": "<string>",
"gl": "<string>"
},
"businesses": [
{
"schemaVersion": "2026-09-22",
"place": {
"placeId": "<string>",
"cid": "<string>",
"dataId": "<string>",
"name": "<string>",
"description": "<string>",
"plusCode": "<string>",
"timeZone": "<string>",
"note": "<string>",
"hotelClass": 2.5,
"amenities": [],
"about": [],
"phones": [],
"claimed": true,
"owner": {
"id": "<string>",
"name": "<string>",
"profileUrl": "<string>"
},
"kgmid": "<string>",
"knowledgeUrl": "<string>",
"reviewUrl": "<string>",
"featuredImageUrl": "<string>",
"businessStatus": "<string>",
"category": "<string>",
"categories": [
"<string>"
],
"address": {
"formatted": "<string>",
"street": "<string>",
"city": "<string>",
"region": "<string>",
"postalCode": "<string>",
"countryCode": "<string>",
"municipality": "<string>"
},
"location": {
"latitude": 0,
"longitude": 0
},
"phone": "<string>",
"website": "<string>",
"domain": "<string>",
"rating": 2.5,
"reviewCount": 4503599627370495,
"emails": [
"jsmith@example.com"
],
"socialProfiles": [
"<string>"
],
"reviewsState": "not_requested",
"reviews": [
{
"position": 4503599627370495,
"id": "<string>",
"rating": 2.5,
"text": "<string>",
"language": "<string>",
"publishedAt": "<string>",
"publishedText": "<string>",
"reviewer": {
"displayName": "<string>",
"profileUrl": "<string>",
"avatarUrl": "<string>"
},
"ownerResponse": "<string>",
"sourceUrl": "<string>"
}
],
"photosState": "not_requested",
"photos": [
{
"position": 4503599627370495,
"id": "<string>",
"mediaType": "photo",
"url": "<string>",
"thumbnailUrl": "<string>",
"width": 50000,
"height": 50000,
"attribution": "<string>"
}
],
"openingHours": {},
"priceRange": "<string>",
"mapsUrl": "<string>",
"observedAt": "<string>",
"language": "en",
"contactsCheckedAt": "<string>",
"enrichmentState": "pending",
"contacts": [],
"fieldStates": {}
},
"businessId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"revision": 123
}
],
"simulated": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": [
"<string>"
],
"retryable": true
},
"request_id": "<string>",
"schema_version": "2026-09-22"
}Authorizations
ApiKeyBearerApiKey
Headers
Reuse the same key and body after a timeout to avoid a second charge.
Required string length:
16 - 128Body
application/json
Required string length:
2 - 200Required range:
1 <= x <= 10Maximum string length:
80Pattern:
^@-?(?:90(?:\.0+)?|(?:[0-8]?\d)(?:\.\d+)?),-?(?:180(?:\.0+)?|(?:1[0-7]\d|\d?\d)(?:\.\d+)?),(?:[1-9]|1\d|2[01])z$Required string length:
2 - 35Pattern:
^[A-Za-z]{2,8}(?:-[A-Za-z0-9]{1,8})*$Required string length:
2Pattern:
^[A-Za-z]{2}$⌘I