Getting Maps data into Google Sheets

Sheets is the best free cleaning room a Maps export can land in, once the data arrives. Here is the import done right, the cleaning steps as Sheets operations, and the honest place Apps Script holds.

Last reviewed

The route that works: extract, then import

Extraction happens outside Sheets, by whatever route fits your volume; Sheets' job begins at the CSV. Import via File > Import > Upload, separator set to comma. Sheets reads UTF-8 correctly by default, which is precisely where Excel corrupts accented business names, so make Sheets the first opener even when the list's final home is elsewhere. The export guide covers the Excel-side traps if the file continues its journey.

The cleaning sequence, as Sheets operations

  1. De-duplicate on place ID. Data > Data cleanup > Remove duplicates, ticking only the place-ID column. Expect 15-30% of rows to collapse from grid overlap; that shrinkage is correct.
  2. Filter closures. Create a filter on the closed/status column and delete permanently-closed rows before anything else reads the sheet.
  3. Normalise phones to E.164. A helper column like ="+44"&REGEXREPLACE(TEXT(A2,"0"),"[^0-9]","") pattern (adjust country code and leading-zero handling per market) gets most rows; paste-as-values when done. Keep the original column; parsing occasionally needs the source string.
  4. Band review counts. A simple =IFS(F2<10,"0-9",F2<51,"10-50",TRUE,"51+") column turns the export into the segmented list the workflow calls for.
  5. Stamp the extraction date in a column, not a cell comment, so every downstream copy inherits it.

Refresh diffs in Sheets

Quarterly re-extractions become delta lists with one function: import the new pull to its own tab, then =ISNUMBER(MATCH(placeID, old_tab_ids, 0)) flags survivors, leaving new listings (this quarter's openings, the hottest prospects) and vanished IDs (closures, the do-not-dial list) as filterable rows. Sheets is genuinely good at this join, and it is the step that makes an extracted list outrun any bought one.

Where Apps Script honestly fits

Apps Script calling the Places API and writing to a sheet is a real pattern with a narrow sweet spot: small, automatically refreshed datasets, a few hundred places on a dashboard. It inherits every Places API constraint (billing, the ~60-result cap, storage terms), so scaled to lead-list volumes it rebuilds the API problem with worse ergonomics. Use it for monitors, not for metros; and if you are writing serious code anyway, the Python build-vs-buy page is the fuller version of that decision.

Sheets limits worth knowing

Ten million cells per spreadsheet sounds infinite and is not: a 15-column export meets it around 650,000 rows, and performance degrades well before then. Metro lists fit comfortably; multi-country masters belong in a database, with Sheets as the working-segment surface. Which is, per the rationing discipline, how working lists should be handled anyway.

Frequently asked

Can Google Sheets pull data from Google Maps directly?
No. There is no IMPORTMAPS function, IMPORTXML cannot read Maps (an application, not a parseable document), and Sheets has no native bridge to Maps search results. The workable routes are: extract to CSV with a tool and import, or script the Places API through Apps Script within its costs, caps and storage terms. Anyone promising a formula that scrapes Maps into Sheets is selling a myth.
What is the best way to get a Maps lead list into Sheets?
CSV import. Extract with whatever tool fits your volume, then File > Import > Upload in Sheets, choosing comma-separated with "Convert text to numbers" disabled if your phone column is not yet in E.164. Sheets handles UTF-8 correctly by default, which sidesteps the encoding mangling Excel inflicts on business names, and makes Sheets the safer first-open for any export.
How do I de-duplicate Maps data in Google Sheets?
On the place ID column, never the business name. Data > Data cleanup > Remove duplicates, selecting only the place-ID column, collapses grid-overlap duplicates correctly. Name-based deduping merges different businesses that share names and misses the same business spelled twice. If your export lacks a place ID column, that is a tool problem worth fixing before it is a formula problem.
Can Apps Script automate Maps extraction into Sheets?
Apps Script can call the Places API and write results to a sheet, which is a legitimate lightweight pipeline for small, fresh datasets. It inherits the API’s constraints wholesale: per-request billing, roughly 60 results per Nearby Search so real coverage needs grid logic in your script, and storage terms that limit retaining what you fetch. For a dashboard of a few hundred places it is elegant; as a lead-list factory it recreates the API-versus-scraping problem inside a spreadsheet.