Google Map API endpoint
Returns the photos Google publishes for a specified place_id — the imagery shown on the place's Google Maps page, typically dozens of images for a well-covered business. Each entry carries the image URL as served plus its pixel dimensions when reported; swap the trailing size suffix on the URL (e.g. `=w203-h100-k-no`) to request other dimensions. Contributor avatars and review-attached photos are excluded. This is the place page's image set, not a paginated archive feed. Rate limit is enforced at 1 request per second.
/google/map/place/{place_id}/photosPath parameters:
place_id: required. Google Place ID.Query parameters:
limit: optional, non-negative integer. Caps how many photos are returned. Omit or pass 0 to get
everything captured. A negative value returns a 400.Notable response behavior:
url is Google's image URL exactly as served, including its trailing size suffix (for example
=w203-h100-k-no). Swap that suffix to request other dimensions.width and height are the pixel dimensions of that URL when Google reports them. 0 means the
dimension was not captured, not that the image is empty.data array, not an error.| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| place_id (path) | string | Yes | Google Place ID | ChIJs3cv0KuvEmsRHcXYwNJ6GU0 | |
| limit | integer | No | Maximum number of photos to return. Omit or 0 for all captured. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/google/map/place/ChIJs3cv0KuvEmsRHcXYwNJ6GU0/photos?limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "ok",
"data": [
{
"url": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWlbepbs69mWZVN7SNi4FYseIr1JvRCpGHgpFfN5wOf02mKO=w203-h100-k-no",
"width": 203,
"height": 100
},
{
"url": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWntpDTSCFVQdK1TmGSIhUaUWhoH45c1klBfg6se1L-m4xSO=w408-h306-k-no",
"width": 408,
"height": 306
}
]
}Request schema
No body schema
Response schema
#/definitions/google.mapPlacePhotosResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | array | No | ||||
| data[].height | integer | No | 100 | Pixel height of the image at its URL. 0 when Google does not report it. | ||
| data[].url | string | No | https://lh3.googleusercontent.com/gps-cs-s/AHRPTWlbepbs69mWZVN7SNi4FYseIr1JvRCpGHgpFfN5wOf02mKOVdfv2REVb896InfULrDb_yQmqdxmQcSnmwHp2VncbLzYxzWtsUFFbKH3buF34st-Nhlg1fEIH0_tkmvNKJmWKEHKv45RBu4=w203-h100-k-no | URL is Google's image URL exactly as served, including its size suffix (e.g. `=w203-h100-k-no`). Swap that suffix to request other dimensions. | ||
| data[].width | integer | No | 203 | Width and Height are the pixel dimensions of the URL as served, when Google reports them. 0 means not captured. | ||
| 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 GET "https://api.crawlora.net/api/v1/google/map/place/ChIJs3cv0KuvEmsRHcXYwNJ6GU0/photos?limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"