Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.
Place Photos
Get photos and videos for a place by place_id. Returns photo URLs (standard and high-resolution), capture coordinates, and timestamps.
Endpoint
GET /v1/places/photos
Price: $0.01 per page Free tier: 20 requests/month
Each page returns up to 10 photos.
Parameters
| Parameter | Required | Description |
|---|---|---|
place_id |
Yes | Google place_id, as returned by the Places Search endpoint |
pages |
No | Number of pages to fetch, 1-10 (default: 1). Each page returns up to 10 items and is billed as one request |
country |
No | 2-letter ISO 3166-1 alpha-2 region code (default: us) |
language |
No | 2-letter ISO 639-1 language code (default: en) |
Response Fields
| Field | Type | Description |
|---|---|---|
photos |
array | Array of photos and videos. Filter on the type field if you only want one |
photos[].photo_id |
string | Stable photo identifier |
photos[].type |
string | photo or video |
photos[].photo_url |
string | Standard-resolution image URL |
photos[].photo_url_large |
string | null | High-resolution image URL (typically 3000–4000px wide). null for items where no large variant exists (some videos and older photos) |
photos[].video_thumbnail_url |
string | null | Video thumbnail URL (set only when type is video) |
photos[].latitude |
number | null | Capture latitude |
photos[].longitude |
number | null | Capture longitude |
photos[].photo_datetime_utc |
string | ISO 8601 capture datetime (UTC) |
photos[].photo_timestamp |
integer | Unix timestamp (seconds) |
count |
integer | Total photos returned |
pages |
integer | Echo of requested pages |
Example Request
cURL
curl "https://apidirect.io/v1/places/photos?place_id=ChIJifIePKtZwokRVZ-UdRGkZzs&pages=2" \
-H "X-API-Key: YOUR_API_KEY"
Python
import requests
response = requests.get(
"https://apidirect.io/v1/places/photos",
headers={"X-API-Key": "YOUR_API_KEY"},
params={
"place_id": "ChIJifIePKtZwokRVZ-UdRGkZzs",
"pages": 2,
}
)
data = response.json()
print(f"Got {data['count']} photos across {data['pages']} pages")
Example Response
{
"photos": [
{
"photo_id": "CIABIhAViB6GuQB0Czq6u1UIyD60",
"type": "photo",
"photo_url": "https://lh3.googleusercontent.com/gps-cs-s/APNQkAH...",
"photo_url_large": "https://lh3.googleusercontent.com/gps-cs-s/APNQkAH...=w4280-h3407-k-no",
"video_thumbnail_url": null,
"latitude": 40.7546469,
"longitude": -73.9868158,
"photo_datetime_utc": "2026-05-30T00:00:00.000Z",
"photo_timestamp": 1780099200
},
{
"photo_id": "CIHM0ogKEICAgICGgNfJ4wE",
"type": "video",
"photo_url": "https://lh3.googleusercontent.com/gps-cs-s/...",
"photo_url_large": null,
"video_thumbnail_url": "https://lh3.googleusercontent.com/gps-cs-s/...=w640-h360-k-no",
"latitude": 40.7546795,
"longitude": -73.9870291,
"photo_datetime_utc": "2021-11-16T00:00:00.000Z",
"photo_timestamp": 1637020800
}
],
"count": 20,
"pages": 2
}
Notes
photo_url_largeis the full-resolution version of the photo. Some videos and older photos don’t have a large variant — the field isnullin that case.- The
typefield is"photo"or"video". Filter client-side if you only want one. - Photos are typically returned newest-first based on upload date.