Google Maps Photos Leads Scraper
Pricing
from $2.00 / 1,000 results
Google Maps Photos Leads Scraper
Collect public Google Maps business photos and metadata for brand monitoring, local audits, visual datasets, and competitor research.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Dmytro Paduchak
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Google Maps Photos Scraper
Collect publicly visible photo URLs from Google Maps places and export them as structured Apify Dataset records.
This Actor is a separate companion to the Google Maps Business Actor. It reuses the same public Google Maps place discovery and page navigation approach, but saves one output item per public photo. You can start it from Google Maps place URLs, search queries, or dataset items produced by the business Actor.
No Google Maps API key is required.
Input
Provide at least one source:
{"searchQuery": "coffee shops in London","placeUrls": ["https://www.google.com/maps/place/Example+Coffee/..."],"datasetItems": [{"businessName": "Example Coffee","googleMapsUrl": "https://www.google.com/maps/place/Example+Coffee/...","sourceQuery": "coffee shops in London"}],"sourceDatasetId": "optional-business-actor-dataset-id","maxResults": 5,"maxPhotosPerPlace": 10,"language": "en","country": "uk","apifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"proxySessionRetries": 1,"adaptiveThrottle": true}
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | - | Single Google Maps search query. |
searchQueries | string[] | [] | Multiple search queries. |
placeUrls / googleMapsUrls | string[] | [] | Direct Google Maps place URLs. |
startUrls | string[] or { url }[] | [] | Apify-style URL input. |
datasetItems | object[] | [] | Items from the Google Maps Business Actor. Each item should include googleMapsUrl, placeUrl, or url. |
sourceDatasetId | string | - | Dataset ID or name to read business Actor items from. |
maxResults | number | 5 | Maximum unique places to process across all sources. |
maxPhotosPerPlace | number | 10 | Maximum public photo records to save per place. |
language | string | "en" | Google Maps interface language. |
country | string | - | Optional country hint, such as uk, us, de, or fr. |
apifyProxy | boolean | auto | Enable Apify Proxy. |
apifyProxyGroups | string[] | [] | Proxy pools: RESIDENTIAL, DATACENTER, SERP. |
proxyCountries | string[] | [] | Route Apify Proxy through specific ISO 2-letter countries. |
proxyUrls | string[] | [] | Custom proxy URLs. These override Apify Proxy. |
proxySessionRetries | number | 1 | Retry browser sessions after blocking, empty results, or navigation failures. |
adaptiveThrottle | boolean | true | Slow down automatically when Google Maps loads slowly or shows blocking signals. |
Output
Each result is one photo record. The Actor preserves original place fields from dataset input when provided, enriches missing place fields from the Google Maps page when visible, and appends photo-specific fields.
{"businessName": "Example Coffee","category": "Coffee shop","rating": 4.6,"reviewCount": 321,"address": "10 Example Street, London","phone": "+44 1234 567890","website": "https://example.com/","googleMapsUrl": "https://www.google.com/maps/place/Example+Coffee/...","latitude": 51.5072,"longitude": -0.1276,"placeId": "0x487...","sourceQuery": "coffee shops in London","photoUrl": "https://lh3.googleusercontent.com/...","photoIndex": 1,"photoAuthor": "Visible contributor name","photoCaption": "Visible caption or nearby label","photoSource": "google_maps_photos_panel","photoPageUrl": "https://www.google.com/maps/place/Example+Coffee/...","scrapedAt": "2026-05-13T12:00:00.000Z"}
Some optional fields, such as photoAuthor, photoCaption, or photoPageUrl, may be missing when Google Maps does not expose them in the public UI.
How It Works
The Actor accepts direct places immediately. For search queries, it opens public Google Maps search results, scrolls the result list, and collects place URLs. For business Actor dataset input, it keeps the original business fields and uses the stored Google Maps URL.
For each place, it opens the public place page, extracts visible business metadata, opens the photos panel when available, scrolls through public photos, normalizes Google-hosted image URLs, and saves unique photo records.
Deduplication uses:
- Google Maps place ID when available
- Normalized Google Maps place URL
- Normalized public photo URL
Reliability Notes
Google Maps can show captcha or automated-traffic blocking, especially on repeated runs, high result counts, or datacenter IPs. The Actor detects common blocking pages and retries with fresh proxy sessions when configured.
The Actor metadata requests a 3600 second default timeout, but an individual run or task can still be started with a shorter timeout such as 300 seconds. For short runs, keep maxResults, maxPhotosPerPlace, and proxySessionRetries low. The scraper stops early with partial results when it detects that the Apify timeout is close.
For larger runs:
- Enable Apify Proxy, preferably a residential pool
- Keep
maxResultsandmaxPhotosPerPlacemoderate - Use focused search queries
- Increase
proxySessionRetriesandmaxThrottleDelayMsif Google Maps loads slowly - Review output quality before scaling
Legal Disclaimer
This Actor is intended for academic, educational, and research purposes only. Users are responsible for ensuring that their use complies with Google's Terms of Service, Google Maps Terms, and applicable local laws regarding data privacy and scraping.
Automated access to Google services may be restricted. We do not encourage or condone use that violates the rights of others or a service provider's terms.