CSV
Opens in any spreadsheet. Text that starts with =, +, - or @ is prefixed with an apostrophe, so a spreadsheet does not run it as a formula.
A Google Maps reviews scraper reads public reviews for one business ID: text, rating, date, author and owner response, up to 100 per page. Export that page, or read it through the API.
Before you run · Live research requires a configured data source. Sample data is clearly labeled. Paid plans are not available yet.

A Google Maps reviews scraper reads public reviews for one business ID: text, rating, date, author and owner response, up to 100 reviews on a page. It does not search by category. Export that page, or request another page with its own budget.
Fields vary by review. A field appears only when the data source returns it, and an empty field is not proof that the information does not exist.
review_textratingreview_datetime_utcreview_timestampreview_languagereview_linkreview_photosauthor_nameauthor_linkauthor_review_countowner_response_textowner_response_datetime_utclike_countreview_idbusiness_idSearch in Explore, open a business and choose Review collection under Prepare a follow-up task. You can also choose Review collection and paste a business ID.
Choose the review ordering, an optional review text filter and up to 100 reviews. Check the maximum units, then run.
Open Result pages to fetch one more page at a time, each with its own budget. Download CSV, Excel, JSON or JSONL, or combine the pages in one full-chain export.
To run the Google Maps reviews scraper for several businesses, select them in Explore and choose Collect reviews for the selection in Bulk research. Each business becomes one task under one total budget.
The Google Maps reviews scraper also works over the API: create a review task with a business ID and an explicit unit budget, then read the reviews page by page. Reading stored reviews never runs new research.
In an MCP client, use estimate_job, then create_job with a stable idempotency_key and max_units, and read with get_job_results. For the next page, preview_provider_continuation returns the exact task to authorize.
curl -X POST https://mapsscraper.dev/api/v1/jobs \
-H "Authorization: Bearer $MAPSSCRAPER_API_KEY" \
-H "Idempotency-Key: reviews-sample-business-001" \
-H "X-Max-Units: 1" \
-H "Content-Type: application/json" \
-d '{"kind":"reviews","business_id":"sample-business-id","limit":100,"review_options":{"sort_by":"newest"}}'
HTTP/1.1 202 Accepted
{"id":"6f1c2b3a-0000-4000-8000-000000000000","status":"queued","reserved":1}
curl "https://mapsscraper.dev/api/v1/jobs/6f1c2b3a-0000-4000-8000-000000000000/results?offset=0&limit=100" \
-H "Authorization: Bearer $MAPSSCRAPER_API_KEY"Sample response, shortened. Values are illustrative, not real business data.
{
"items": [
{
"review_id": "sample-review-id",
"business_id": "sample-business-id",
"review_text": "Friendly staff and a short wait.",
"rating": 5,
"review_language": "en",
"author_name": "Sample Reviewer",
"owner_response_text": "Thank you for visiting.",
"like_count": 2,
"_source": {
"provider": "live_maps",
"fetched_at": "2026-11-01T12:00:00Z"
}
}
],
"count": 1,
"offset": 0,
"next_offset": null,
"provider": "live_maps",
"coverage": "bounded_sample",
"fetched_at": "2026-11-01T12:00:00Z"
}Arguments for the MCP create_job tool
{
"task": {
"kind": "reviews",
"business_id": "sample-business-id",
"limit": 100,
"review_options": {
"sort_by": "newest"
}
},
"idempotency_key": "reviews-sample-business-001",
"max_units": 1
}Run the Google Maps reviews scraper from Python: create a review task, wait for it to finish, read the reviews, then preview the next page. Submitting that page is a separate paid task.
import os
import time
import uuid
import requests
API = "https://mapsscraper.dev/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['MAPSSCRAPER_API_KEY']}"}
def run(task, units):
# Keep the key: a retry of the same page must send it again.
key = str(uuid.uuid4())
job = requests.post(
f"{API}/jobs",
json=task,
headers={**HEADERS, "Idempotency-Key": key, "X-Max-Units": str(units)},
timeout=30,
)
job.raise_for_status()
job_id = job.json()["id"]
while True:
status = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30).json()["status"]
if status not in ("queued", "running"):
return job_id, status
time.sleep(5)
task = {"kind": "reviews", "business_id": "sample-business-id", "limit": 100,
"review_options": {"sort_by": "newest"}}
units = requests.post(f"{API}/estimate", json=task, headers=HEADERS, timeout=30).json()["units"]
job_id, status = run(task, units)
if status in ("completed", "partial"):
page = requests.get(
f"{API}/jobs/{job_id}/results",
params={"offset": 0, "limit": 100},
headers=HEADERS,
timeout=30,
).json()
for review in page["items"]:
print(review.get("rating"), review.get("review_text"))
# The next source page is a separate paid task: preview it, then submit
# its exact task only if you need it.
preview = requests.get(f"{API}/jobs/{job_id}/continuation", headers=HEADERS, timeout=30).json()
if preview["available"]:
run(preview["task"], preview["units"])Opens in any spreadsheet. Text that starts with =, +, - or @ is prefixed with an apostrophe, so a spreadsheet does not run it as a formula.
A workbook for Excel or Google Sheets, for results up to about 5 MB. Use JSON Lines for larger results.
The complete result with each record’s source, fetch time and the task’s coverage.
One review per line, for large files and data pipelines.
In the Google Maps reviews scraper, each page of up to 100 reviews reserves one unit, however many reviews it returns. Failed, cancelled and uncertain tasks charge nothing. Reading, exporting and combining pages you already have uses no units.
A chain of pages for one business stops at your workspace page limit, 20 pages by default and at most 100, or when the data source has no next page.
PricingNo. MapsScraper.dev is an independent service and is not affiliated with Google. Results come from a third-party business data source and use our own JSON format.
Up to 100 reviews per page. Each further page is its own task and budget, until the data source has no next page or your workspace page limit is reached. A business can show more reviews than the data source returns.
We cannot give legal advice. Whether collecting and using business data is lawful depends on where you are, what you collect, why you use it and the terms that apply. Public availability alone does not establish permission to store, resell or contact people. Read our data policy
Explore the workflow with labeled sample records, then connect your workspace for live research.
Explore a sample