Skip to content

How to Export Google Maps Reviews to CSV

Export reviews for known Google Maps locations, compare date windows, check partial results, and repeat the workflow with your AI agent.

Dievio Team · Growth Systems · November 6, 2026 · 7 min read

Two map locations and several consumer review cards bearing a 5-point star rating motif and unlabeled horizontal strokes are stacked into a paper spreadsheet, distinct review rows.

To export Google Maps reviews to CSV, give the Google Maps Reviews Scraper the place URLs or Place IDs you want to research. Choose the number of reviews per location, run the Actor in Apify, then download its Dataset. Each output row represents a review and keeps the location context you need for analysis.

Start with one known location and 25 newest reviews. Once you understand that export, you can add more places, collect a longer history or build a repeatable reporting workflow. The same Actor can also be run by an AI agent through Apify MCP.

Step 1. Prepare the locations you want to review

For a few businesses, open each specific Google Maps listing and copy its full place URL. For an existing business dataset, use its placeId column. Keep a source sheet listing every location you submit, even if some return no review rows.

The reviews Actor accepts direct place URLs, supported CID URLs, review data URLs and Place IDs. A broad Maps search URL such as a search for restaurants across a city is not expanded into multiple businesses by this reviews-only Actor.

For city-wide research, first follow the Google Maps business export guide using the Google Maps Scraper. Review and deduplicate its places, then copy the IDs for the locations you want. This separates business discovery from review collection.

Step 2. Run a small review export in Apify Console

Open the Google Maps Reviews Scraper on Apify. Click Try for free, sign in if prompted, and use the editable Input form in Apify Console.

  1. Paste one full listing URL in Google Maps place URLs, or enter its ID in Place IDs.
  2. Set Number of reviews per place to 25.
  3. Choose newest under the review sort option.
  4. Leave the start date blank for an initial format check. Add a date when you have a reporting window.
  5. Set Personal data to false if your report only needs ratings, dates and review content.
  6. Review the current pricing, set a spending limit and click Start.

The public input reference describes the options. The image below shows the fields; your actual values go into the Console form.

Google Maps Reviews Scraper input fields for place URLs, Place IDs, review limits, sorting and a start date
The read-only field reference shows the location inputs and the per-place review, sorting and date controls.

Example input for the JSON editor

Replace YOUR_PLACE_ID with a real ID from your own list before starting. This example requests up to 25 newest reviews from that one location.

{
  "placeIds": ["YOUR_PLACE_ID"],
  "maxReviews": 25,
  "reviewsSort": "newest",
  "language": "en",
  "personalData": false
}

You can supply several IDs in the array. If you choose URL input instead, use startUrls with one URL object per place, in the form {"url":"YOUR_FULL_GOOGLE_MAPS_PLACE_URL"}. Replace the placeholder and remove unused inputs.

Step 3. Read the review rows before exporting

When the run finishes, open its Dataset and inspect several records. Check that the business is correct, the requested sorting makes sense and the review text is separate from the owner’s reply.

Columns worth keeping in a reviews CSV
FieldWhat it tells you
placeId, title, urlWhich location the review belongs to.
reviewId, reviewUrlThe review’s identity and source link where available.
stars or rating, textThe score and customer comment.
publishAt, publishedAtDateThe source date text and parsed date.
responseFromOwnerText, responseFromOwnerDateThe business’s response, when present.
scrapedAtWhen this record was collected.

A rating-only review can have blank text. Keep it when counting ratings. An owner response belongs in separate columns and should not add another customer review to your total.

Choose CSV in the Dataset export action and save the original file. Retain the run ID and Dataset ID alongside the requested places, sorting, dates and per-place limit. Those settings explain what your file represents.

Collect a date window without overstating coverage

For recent reviews, use reviewsSort: "newest" and set reviewsStartDate. The field accepts an absolute date such as 2026-04-01 and relative values such as 3 months. Absolute dates make a repeatable report easier to compare.

For an April–June report, start on April 1 and filter the exported parsed dates to before July 1. Review boundary rows against the raw publishAt text. Google can return relative dates, so the Actor’s date filtering is best-effort. Keep uncertain or undated rows identifiable.

The review limit still applies. Suppose one location returns 25 newest reviews and the oldest is in June. It may have more reviews from April and May that your cap excluded. Increase the cap for that location before reporting a complete quarterly count.

Choose the sort order for your question

Use newest for recent feedback and recurring reports. mostRelevant follows relevance ordering; highestRanking and lowestRanking emphasize rating extremes. Keep the same sorting when comparing places, and record it with the export.

The mean rating in a capped or date-filtered sample can differ from the overall score shown on a Maps listing. Label your calculation as the average of the exported sample and keep the listing’s overall rating separate.

Dievio

Your next customer starts here.

Find decision-makers by role, company and location. Build your next prospect list in Dievio.

Find my leads

Free audience preview · No credit card

Find leadsExample
FounderSoftwareUnited States
AM
Alex MorganFounder & CEO · Northstaralex@northstar.example
JC
Jamie ChenCo-founder · Formlyjamie@formly.example
Work emailsCompany detailsCSV export

Export many locations and combine repeat runs

The input supports a high review ceiling, up to 10,000,000 per place. That is an accepted configuration limit. Actual available reviews, source access, time and spending settings determine what the run can return.

Plan the total across locations: 100 places with a 200-review cap can request up to 20,000 reviews. Test a few places first, then use manageable batches with their own input files and run IDs. Keep the original place list as the basis for coverage reporting.

When combining overlapping runs, deduplicate by placeId and reviewId. If the same review changes, retain its latest observed version in the current table and preserve older snapshots separately when your report needs history. Keep rows without review identifiers in a review bucket instead of deleting them by text alone.

Check empty results and partial failures

Open RUN_SUMMARY in the run’s key-value store. Check target, saved, targetReached and exhaustionReason. Then inspect sourceStats for individual locations, including failed sources and review extraction status.

  • No reviews for one place: verify the ID or direct listing URL, date filter and source status before reporting a genuine zero.
  • The exact cap was returned: treat the location as potentially truncated until the source and date coverage show otherwise.
  • A charge limit was reached: keep the successful rows and mark the run partial.
  • Some sources failed: preserve completed locations and retry failed ones separately. The Actor can retain successful partial output.

Record one status per requested place: returned reviews, confirmed empty or filtered result, partial extraction, or failure. A location absent from the Dataset is not automatically a location with zero customer reviews.

Use Apify MCP to run the review export with an agent

Connect an MCP-compatible agent to https://mcp.apify.com and authorize your Apify account. The Apify MCP guide explains the setup. Give the agent your actual place list, review limits and approved budget.

Export reviews with x_guru/google-maps-reviews-scraper.
Place IDs: [PASTE_MY_REAL_PLACE_IDS]
First test: at most 25 reviews per place, newest first.
Start date: [YYYY-MM-DD, OR LEAVE UNSET]
Approved run budget in USD: [AMOUNT]

Inspect the current schema. Use personalData=false.
Apply the budget through callOptions.maxTotalChargeUsd.
Wait for the run and read all Dataset pages.
Keep placeId, reviewId, rating, text, source links,
raw and parsed review dates, owner response and scrapedAt
where those fields are available.

Check RUN_SUMMARY and sourceStats for each requested place.
Save a review CSV and a separate location coverage table.
Identify capped, failed and uncertain-date results.
Report run ID, Dataset ID, review counts and stop reason.
Wait for approval before increasing limits or adding places.

The agent can use call-actor to start the run, get-actor-run to wait, and get-dataset-items with pagination to read the results. For category-based discovery, ask it to run Google Maps Scraper first, review the place list and then pass the selected IDs to this Actor.

Choose the source that fits your project

For locations you manage, check the official Google Business Profile review API and its account setup. Google’s Place Details API is another option for place information with selected reviews.

For this Apify workflow, keep your places, review settings and coverage table together. Continue with the business discovery guide if you need more locations, or the Apify run and Dataset export guide to repeat the process from an application.

Keep reading

Build your first list.

100 free credits. No credit card required.

Start free