Google Map API endpoint
Searches Google Maps with a request body of `keyword`, `language` and `country` (an ISO-2 code such as `us`), all required. Each place has its name, place id, categories, address, coordinates, phone, website, rating and review count. `rating` is `null` when Google has no aggregate rating.
/google/map/searchReturns search results from Google Maps for the supplied request body. Rate limiting is enforced at one request per second.
Request body (top-level JSON fields — do not nest these under a mapSearchOption key):
keyword (string): required. Google Maps search query, e.g. hotel san francisco.language (string): required. Google UI language code, e.g. en.country (string): required. Country code as an ISO-2 value, e.g. us.Example request body:
{
"keyword": "hotel san francisco",
"language": "en",
"country": "us"
}
Response behavior:
rating is the aggregate Google rating (1.0–5.0), or null when the place has no aggregate rating on Google (too few reviews, or a place type Google does not rate) — never a literal 0. Read it together with review_count.| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| url | 3 | google.com |
| name | 3 | “OpenAI Inc.” and 2 other values |
| place_id | 3 | |
| category | 3 | median 1 entry |
| address | 3 | |
| latitude | 3 | |
| longitude | 3 | |
| rating | 3 | 3 to 4.4, median 3.3 |
| review_count | 3 | 8 to 98, median 16 |
| website | 2 | openai.de and 1 other host |
| phone | 1 | |
| description | 0 | |
| image | 3 | lh3.googleusercontent.com |
| locations | 3 | median 10 entries |
| amenities | 0 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| mapSearchOption (body) | object | Yes | Search options | ||
| x-api-key (header) | string | Yes | API key required |
curl -X POST "https://api.crawlora.net/api/v1/google/map/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country":"us","keyword":"hotel san francisco","language":"en"}'{
"country": "us",
"keyword": "hotel san francisco",
"language": "en"
}{
"code": 200,
"msg": "OK",
"data": [
{
"url": "https://www.google.com/maps/place/?q=place_id:ChIJs3cv0KuvEmsRHcXYwNJ6GU0",
"name": "Primi Italian",
"place_id": "ChIJs3cv0KuvEmsRHcXYwNJ6GU0",
"category": [
"italian_restaurant"
],
"address": "168 Clarence St, Sydney NSW 2000, Australia",
"latitude": -33.8701437,
"longitude": 151.2056158,
"rating": 4.1,
"review_count": 3213
}
]
}Request schema
#/definitions/google.MapSearchOption
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| country | string | No | us | |||
| keyword | string | No | hotel san francisco | |||
| language | string | No | en |
Response schema
#/definitions/google.mapSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | array | No | ||||
| data[].address | string | No | 250 Beach St, San Francisco, CA 94133 | Full street address of the place as shown on Google Maps. | ||
| data[].amenities | array | No | ['Free Wi-Fi', 'Air-conditioned', 'Wi-Fi', 'Parking'] | Amenities Google Maps lists for the place, for example `Free Wi-Fi`. | ||
| data[].category | array | No | ['hotel'] | Business categories Google Maps assigns to the place. | ||
| data[].description | string | No | A 3-minute walk from Pier 41 in the Fisherman's Wharf district... | Description of the place from its Google Maps listing. | ||
| data[].image | string | No | https://lh5.googleusercontent.com/p/AF1QipP_O55x7gOwR3AaM09CVmzEUude9wMHMPwc--yp | URL of the main photo of the place. | ||
| data[].latitude | number | No | 37.8077617 | Latitude of the place in decimal degrees. | ||
| data[].locations | array | No | ['San Francisco', 'Los Angeles'] | Location names Google Maps associates with the place, such as nearby areas. | ||
| data[].longitude | number | No | -122.4132228 | Longitude of the place in decimal degrees. | ||
| data[].name | string | No | Hotel Zephyr San Francisco | Name of the place as shown on Google Maps. | ||
| data[].phone | string | No | 14156176565 | Phone number of the place, as digits. | ||
| data[].place_id | string | No | ChIJ99URUeOAhYAR0J5ZUxTesDQ | Google Place ID. Use it with the place, reviews and photos endpoints. | ||
| data[].rating | number | No | 4.1 | Rating is the aggregate Google rating (1.0–5.0), or null when the place has no aggregate rating on Google (Google never assigns a 0.x average, so 0 always meant "unrated"). A pointer so unrated serializes as `rating: null`, not a misleading 0. | ||
| data[].review_count | integer | No | 3213 | Number of Google reviews for the place. | ||
| data[].url | string | No | https://www.google.com/maps/place/?q=place_id:ChIJ99URUeOAhYAR0J5ZUxTesDQ | Google Maps URL of the place. | ||
| data[].website | string | No | https://www.hotelzephyrsf.com/ | Website of the place. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid input | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X POST "https://api.crawlora.net/api/v1/google/map/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country":"us","keyword":"hotel san francisco","language":"en"}'