Google Maps Photos Scraper
Export photo and video links visible on selected Google Maps places.
Queue a task
Send JSON with this parser’s settings inside input. Use your Extracto API key in the X-API-KEY header. The queue returns a saved task ID so you can retrieve the result when it is ready. Replace the example Idempotency-Key with a new unique key for each intentional task and reuse it only for retries of that task.
Review the estimate before running. Sending this example starts a real task and can spend credits.
https://extracto.cloud/api/v1/parsers/google-maps-photos-scraper/queuecurl --request POST 'https://extracto.cloud/api/v1/parsers/google-maps-photos-scraper/queue' \
--header 'X-API-KEY: ext_your_api_key' \
--header 'Idempotency-Key: replace_with_a_new_unique_task_key' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-binary @- <<'JSON'
{
"input": {
"placeIds": [
"ChIJLU7jZClu5kcR4PcOOO6p3I0"
],
"maxPhotosPerPlace": 12,
"categories": [
"all"
],
"imageSize": "large",
"googleMapsUrls": []
}
}
JSONThe following response is illustrative. Save the actual run.id returned by your request.
{
"success": true,
"queued": true,
"run": {
"id": "7e1e15c2-2db4-4c17-a713-5432f47fb40f",
"tool": "google-maps-photos-scraper",
"status": "queued"
},
"status_url": "https://extracto.cloud/api/v1/parser-runs/7e1e15c2-2db4-4c17-a713-5432f47fb40f",
"result_url": "https://extracto.cloud/api/v1/parser-runs/7e1e15c2-2db4-4c17-a713-5432f47fb40f/results"
}Get your results
Check status about once every five seconds while the task is queued or running. Stop at ok, partial, cancelled or error. Both requests require the API key of the account that created the task.
curl 'https://extracto.cloud/api/v1/parser-runs/7e1e15c2-2db4-4c17-a713-5432f47fb40f?include_result=0' \
--header 'X-API-KEY: ext_your_api_key' \
--header 'Accept: application/json'curl 'https://extracto.cloud/api/v1/parser-runs/7e1e15c2-2db4-4c17-a713-5432f47fb40f/results?limit=100' \
--header 'X-API-KEY: ext_your_api_key' \
--header 'Accept: application/json'Result pages contain items. Pass next_cursor as the next request’s cursor until it is null. Read run.error in the status response when a task fails.
See the shared guides for result webhooks, safe retries, and errors and limits.
Overview
Export photo and video links visible on selected Google Maps places.
Collection scope
Collects media metadata and links from explicit place IDs or Maps URLs. Place search, media downloads and ownership or licensing verification are not included.
Using Extracto
Extracto provides a web interface and HTTP API for submitting scraping tasks, tracking their status and retrieving structured results. Some parsers use third-party scraping providers for execution. Your Extracto account, API key and credit balance are managed at extracto.cloud.
Create an account at https://extracto.cloud/register, confirm your email and create an API key at https://extracto.cloud/api-keys. You can also configure and run this parser in the web interface at https://extracto.cloud/marketplace/google-maps-photos-scraper.
Pricing and credits
Current Extracto price: $0.25 / 1,000 results. Extracto charges your credit balance for parser usage. Your package or top-up amount determines the purchase price per 1,000 credits. Listed parser prices use the base credit rate; volume discounts reduce the effective cash cost. The displayed rate includes Extracto pricing; additional enabled options are shown in the estimate. Verified accounts receive 2,500 free credits every month. The free balance resets to 2,500 on the first day of each month at 00:00 UTC, without rollover. Free credits are spent first. Purchased credits do not expire. Free credits held for an active task remain reserved until it finishes; unused amounts from an expired month then expire. Review the cost estimate in the web interface or POST your request body to https://extracto.cloud/api/v1/parsers/google-maps-photos-scraper/estimate before launching a task. An estimate does not start scraping. Credit packages are listed at https://extracto.cloud/pricing; billing details are at https://extracto.cloud/docs#billing.
Input
Send JSON with the parser settings inside an input object. The example is a starting point: replace the sources and limits with your own permitted targets. Launching it starts a real task and can spend credits.
{
"input": {
"placeIds": [
"ChIJLU7jZClu5kcR4PcOOO6p3I0"
],
"maxPhotosPerPlace": 12,
"categories": [
"all"
],
"imageSize": "large",
"googleMapsUrls": []
}
}- placeIds (array, optional)
- googleMapsUrls (array, optional)
- categories (array, optional)
- maxPhotosPerPlace (integer, optional)
- imageSize (string, optional)
Requests and authentication
Use your Extracto key in the X-API-KEY header. Send Content-Type: application/json and Accept: application/json. Keep the key private on your server.
POST https://extracto.cloud/api/v1/parsers/google-maps-photos-scraper?wait=1 — explicitly request a synchronous result. Successful output is in data, with the result count in count and usage in meta.credits. POST https://extracto.cloud/api/v1/parsers/google-maps-photos-scraper/queue — submit a queued task. Save run.id from the HTTP 202 response. GET https://extracto.cloud/api/v1/parser-runs/{run_id}/results?limit=100 — retrieve saved items in pages. Pass next_cursor as cursor until it is null. Results require the task owner account API key. GET https://extracto.cloud/api/v1/parser-runs?status=ready — list terminal tasks; restart each polling cycle without a cursor to include older tasks that finished later. GET https://extracto.cloud/api/v1/parser-runs/{run_id} — check a saved task using the same account's API key. Poll about once every five seconds while its status is queued or running. Stop at ok, partial, cancelled or error. Saved results are in run.result; failures are described in run.error.
Integration examples, response formats, errors and limits: https://extracto.cloud/docs.
Output
Returned fields depend on the parser, input and source availability. A successful task can return no matching records. Availability and completion time can change when the source website changes. The following sample is illustrative documentation data, not a customer run or a guarantee of results:
[
{
"photoId": "CIHM0ogKEICAgICkpYOx2QE",
"imageUrl": "https://lh3.googleusercontent.com/gps-cs-s/ANWiy9QndtL9YPICfdPe3Bc64qITIOXAPgBoJhBO5sUAkfmsGuU9CPfWfamWAJIpbmXvHzEWvEseYdJX-Rjbf5wT3UPS9OwwHmb62qtPiDoYT0ZLCtN-ikGILinVh6KdPJl5jZJAq",
"thumbnailUrl": "https://lh3.googleusercontent.com/gps-cs-s/ANWiy9QndtL9YPICfdPe3Bc64qITIOXAPgBoJhBO5sUAkfmsGuU9CPfWfamWAJIpbmXvHzEWvEseYdJX-Rjbf5wT3UPS9OwwHmb62qtPiDoYT0ZLCtN-ikGILinVh6KdPJl5jZJAq",
"width": 581,
"height": 1032,
"uploadDate": "2019-03-06",
"placeName": "Eiffel Tower",
"placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0"
}
]- photoId (string): Photo id. Optional when absent at the source.
- imageUrl (string): Image url. Optional when absent at the source.
- thumbnailUrl (string): Thumbnail url. Optional when absent at the source.
- width (number): Width. Optional when absent at the source.
- height (number): Height. Optional when absent at the source.
- uploadDate (string): Upload date. Optional when absent at the source.
- placeName (string): Place name. Optional when absent at the source.
- placeId (string): Place id. Optional when absent at the source.
- type (string): Type. Optional when absent at the source.
Example uses
- Export structured media record data for your research.
- Compare saved results in your own reports or applications.
Responsible use and support
Use this parser only for data you are permitted to access and process. Follow applicable laws, source website terms and Extracto's acceptable-use policy: https://extracto.cloud/acceptable-use. For help, email [email protected] and include the parser name and run ID. Never send your API key. Terms: https://extracto.cloud/terms Privacy: https://extracto.cloud/privacy Refund policy: https://extracto.cloud/refund-policy