How-to

Export Google Reviews to Google Sheets — Free (2026)

By Sarayut L., Founder, ZocialCommentOctober 18, 20269 min read
Export Google Reviews to Google Sheets — Free (2026)

Export Google reviews now

Free — first 100 comments of any post, no signup. CSV, Excel & JSON.

If you want to export Google reviews to Google Sheets, the free route is two steps: download the reviews of a Google Maps place as a CSV, then import that file into Sheets. Google itself offers neither half. Maps shows reviews in a scrolling panel, Google Business Profile lets owners reply to them one at a time, and Sheets has no function that reads Maps. Below: the download, the import settings that keep emoji intact, and the formulas, chart and colour rules that make the file useful in ten minutes.

Everything below works on the free tier: the first 100 reviews of any place are free, no signup and no Google account needed.

The short answer: a CSV in the middle

Every working path from Google reviews to Google Sheets passes through a file. The ZocialComment Google Reviews exporter reads the public review feed of a place and gives you one row per review. You download that as CSV and pull it into Sheets with the standard import dialog. There is no add-on to install and no API key to create.

There is no one-click "send to Sheets" button on our download page today, so this guide uses the route that works on every browser and device: download CSV, then File > Import.

The exporter needs a link that identifies one specific place. The easiest way to get one is the same on desktop and mobile: open the business on Google Maps, tap Share, then Copy link. These formats all work:

  • https://maps.app.goo.gl/… — the short share link, the most reliable choice.
  • https://g.page/… — the short link many businesses print on receipts and websites.
  • https://maps.google.com/?cid=… — a link carrying the place's customer ID.
  • https://www.google.com/maps/place/… — the long address-bar URL, as long as it still contains the place ID (the long data= segment).

The one that fails is a trimmed /maps/place/Name/@lat,lng link with no place ID: it points at a spot on the map, not a business. If the exporter says the link does not identify a place, go back and use Share > Copy link.

Importing the file without mangling it

Once the export finishes, choose CSV on the download page. Then, in a new or existing spreadsheet:

  1. Open File > Import and switch to the Upload tab.
  2. Drop the CSV in or browse to it.
  3. Under Import location, pick Insert new sheet(s), then rename the new tab Reviews. Keeping each export on its own tab matters later when you refresh.
  4. Leave Separator type on Detect automatically and keep Convert text to numbers, dates, and formulas ticked so the rating column arrives as numbers.

Google documents every option on its import data sets help page. A faster alternative is to drag the CSV into Google Drive, right-click it and choose Open with > Google Sheets. Either way, the file is UTF-8, so Thai, Japanese, Arabic and emoji reviews come through exactly as written. Review text often contains commas and line breaks; the CSV quotes those fields properly, so each review stays on one row.

Can IMPORTDATA keep the sheet live?

Sheets has a function called IMPORTDATA that fetches a CSV from a URL and refreshes it periodically. It is tempting to point it at a review export and call the sheet "live". In practice it does not work here, for two honest reasons:

  • The download link is private. Export links are tokenized so only you can open your file, and they expire. IMPORTDATA would break the day the link does.
  • A CSV link is a snapshot. Even a permanent URL would keep serving the reviews as they were when you exported, not the ones posted since.

IMPORTDATA is great for a CSV you host yourself at a stable public address. For Google reviews, a manual refresh — new export, re-import — is the reliable workflow, and the refresh section below makes it painless.

Which column is which

Formulas need column letters, so here is the layout of the review CSV as it lands in Sheets. The file has 27 columns, A to AA; these are the ones you will use most:

  • A author — reviewer name
  • C text — the review in its original language (empty for star-only reviews)
  • D likes — how many people marked the review helpful
  • F created_at — publish timestamp, e.g. 2026-10-08T16:11:16.694Z
  • I id — the review ID, stable between exports
  • L rating — the 1–5 star rating
  • M translated_text — Google's English translation, when one exists
  • P owner_reply and Q owner_reply_at — the business's answer and its date
  • R photo_count and S photo_urls — photo URLs separated by "; "
  • X author_review_count, Z author_is_local_guide and AA author_local_guide_level — how experienced the reviewer is

If you are working from a free sample of a bigger place, the last row is a one-line note saying how many reviews were left out; its rating cell is empty, so it does not disturb any of the formulas below.

Formulas worth pasting on day one

Put these on a second tab called Summary. They assume the reviews are on the tab named Reviews.

Average star rating and total count

=AVERAGE(Reviews!L2:L)
=COUNT(Reviews!L2:L)

COUNT only counts numbers, so it ignores blank cells and gives you the true number of rated reviews.

Reviews per star band

Type 5, 4, 3, 2, 1 down A2:A6 of the Summary tab, then next to each in column B:

=COUNTIF(Reviews!L2:L, A2)

Add a share column with =B2/COUNT(Reviews!L2:L), filled down and formatted as a percentage. The share of 1-star reviews is the single number most worth tracking over time.

Reviews and average rating by month

The timestamp is text, so first add a helper column on the Reviews tab — AB, right after the last data column — that turns it into the first day of its month:

=IF(F2="", "", EOMONTH(DATEVALUE(LEFT(F2, 10)), -1) + 1)

Format it as Custom: yyyy-mm and fill it down. Then the QUERY function builds the monthly table in one cell:

=QUERY(Reviews!A2:AB, "select AB, count(L), avg(L) where L is not null group by AB order by AB desc label count(L) 'Reviews', avg(L) 'Avg stars'", 0)

A falling average or a sudden spike in volume shows up immediately — far easier to spot here than by scrolling Maps.

Owner reply rate

=COUNTIF(Reviews!P2:P, "?*") / COUNT(Reviews!L2:L)

"?*" matches any non-empty cell. Restrict it to low ratings with =COUNTIFS(Reviews!L2:L, "<=2", Reviews!P2:P, "?*") / COUNTIF(Reviews!L2:L, "<=2") to see whether complaints are being answered.

An English column for every row

Many foreign-language reviews already arrive with Google's translation in column M. For the rows that do not, fall back to Sheets' own translator:

=IF(M2<>"", M2, IF(C2="", "", GOOGLETRANSLATE(C2, "auto", "en")))

GOOGLETRANSLATE is slow on thousands of rows, so once the column has filled, copy it and paste values only.

Photo links in separate cells, and keyword counts

=IF(S2="", "", SPLIT(S2, "; ", FALSE))
=COUNTIF(Reviews!C2:C, "*parking*")

The first, placed in an empty column on the Reviews tab, spreads a review's photo URLs across neighbouring cells; wrap one in =IMAGE(...) to preview it. The second counts reviews mentioning a word — swap in a dish, a room type or a staff name.

Drawing the star-rating chart

Select the five star-band rows on the Summary tab (the star numbers and their counts) and choose Insert > Chart. Sheets usually guesses a column chart; switch to a bar chart if you want the familiar horizontal Maps look, with 5 stars on top. In the Customise tab, set one series colour and turn on data labels so the counts sit on the bars. For the trend, insert a line chart from the QUERY output, using the month column as the X axis and Avg stars as the series. Both charts redraw whenever the data under them changes, so they survive a refresh.

Making 1- and 2-star reviews jump out

Complaints are usually what you came for, so colour them. On the Reviews tab:

  1. Select the text column, C2:C.
  2. Open Format > Conditional formatting and choose Custom formula is.
  3. Enter =AND(L2>0, L2<=2) and pick a light red fill.
  4. Add a second rule on the same range, =L2=3, with a pale amber fill if you want the lukewarm reviews too.

Repeat on L2:L with the rule Less than or equal to 2 to colour the rating cell itself. Then turn on Data > Create a filter and filter column L to 1 and 2 when you want only the complaints. Filter column P to empty as well and you have a to-do list of bad reviews nobody has answered yet.

Refreshing the sheet next month

Because there is no live connection, plan the sheet around repeat imports from the start:

  • Export the place again and import the new CSV with Replace current sheet while the Reviews tab is open. The Summary formulas, chart and colour rules keep pointing at the same tab name, so they update on their own. Refill the AB helper column afterwards.
  • If you want history, rename the old tab first (e.g. Reviews 2026-09) and import the fresh file as a new Reviews tab.
  • The review ID in column I is stable, so =COUNTIF('Reviews 2026-09'!I:I, I2)=0 marks the reviews that are new since last time.
  • For several branches, give each place its own tab and stack them with ={Branch1!A2:AB; Branch2!A2:AB} plus a column naming the branch. Competitor places work the same way — our competitor review analysis guide covers what to look for once they sit side by side.

What running the exporter taught us

We build and run the ZocialComment Google Reviews exporter, and everything in this guide comes from operating it. The 27 columns and their order are the live CSV layout, taken from the code that writes the file, not from a mock-up. The link formats are the ones the exporter accepts, the "free sample" note row is how the product marks a capped file, and the free allowance quoted here is the live product value.

We also looked at the data our users actually pull. Across about 10,000 Google reviews exported over the last 60 days from roughly 110 places, around a third had no text at all — just stars — which is why every formula above counts the rating column rather than the text column. About four in ten came with a translation value, slightly fewer had an owner reply, and roughly one in seven carried photos. Those shares vary by place, but they explain the defaults: star-only rows are kept and the translation gets its own column.

What we cannot see is Google's own rating calculation, so when your AVERAGE and the Maps badge differ slightly, treat Google's figure as Google's. For the rules on what reviews may contain, Google's Maps user-generated content policy is the source; for replying as an owner, see the Business Profile reviews help page. If you wonder why the official API can't fill a sheet for you, our post on the Places API's five-review limit explains it.

Where the Sheets route stops being enough

Sheets handles a single place, or a dozen, with ease. It starts to strain when you combine hundreds of thousands of rows — a file is capped at 10 million cells — or when GOOGLETRANSLATE and big QUERY formulas recalculate on every edit. At that size, load the CSVs into Looker Studio or BigQuery instead. If a place has more reviews than the free 100, the full set is unlocked with a one-time payment, never a subscription; the details are on the pricing page. For a closer look at the file itself and the other export routes, see how to export Google reviews to CSV.

Download Google reviews for Google Sheets free →

Related reading: how to export Google reviews to CSV, Excel and JSON, Google reviews competitor analysis, why the Google Places API returns only 5 reviews.

Export Google reviews now

Paste any Google Maps place link — every review with star rating, translation, photos and owner replies.