How to Export Google Maps Data to CSV or Excel (2026)
Three ways to export Google Maps business data to CSV, Excel, or Google Sheets — manual copy-paste, Google Maps API, and a cloud scraper. With sample CSV format.
The fastest way to export Google Maps data to CSV or Excel is to use a cloud scraper like g-maps-scraper.com — every search produces a downloadable CSV automatically. If you only need a handful of records you can copy-paste from the Maps interface; if you're a developer, the Google Places API can return JSON you convert to CSV yourself. Each path makes sense in a different situation.
This guide covers all three, plus the canonical CSV format you should use whatever method you pick.
Method 1: Cloud scraper → CSV (the practical path)
This is what 95% of people actually need:
- Sign up at g-maps-scraper.com.
- Type a city (autocomplete from 33,000 cities) and a business category (e.g., "dentist," "gym," "italian restaurant").
- Click search. The scraper runs in the cloud — no installation, no setup.
- Download the CSV when the job finishes. Open it in Excel, Google Sheets, Numbers, or import directly into your CRM.
The CSV download is included on every plan, including the free tier (30 searches, no credit card).
Method 2: Manual copy-paste (for tiny datasets)
If you only need 5–20 records, manual copy-paste works:
- Open maps.google.com.
- Search for your category in your city.
- Click each result and copy name, address, phone, and website into a Google Sheet or Excel.
- Use Sheets' "File → Download → Comma-separated values (.csv)" to export.
Pros: free, no signup, works on any device. Cons: painful past 20 records, no email column, you hit Google's ~120-result-per-search cap before you've covered any reasonably-sized city.
Method 3: Google Places API (for developers)
The Google Places API is the official Google product for querying place data programmatically. It returns JSON, which you can convert to CSV in your favorite scripting language.
import requests, csv
API_KEY = "YOUR_GOOGLE_API_KEY"
def text_search(query: str):
url = "https://maps.googleapis.com/maps/api/place/textsearch/json"
r = requests.get(url, params={"query": query, "key": API_KEY})
return r.json().get("results", [])
results = text_search("dentist Berlin")
with open("dentists.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "address", "rating", "user_ratings_total", "place_id"])
writer.writeheader()
for r in results:
writer.writerow({
"name": r["name"],
"address": r.get("formatted_address", ""),
"rating": r.get("rating", ""),
"user_ratings_total": r.get("user_ratings_total", 0),
"place_id": r["place_id"],
})
The Google Places API has three real downsides:
- It costs real money. Place Details requests are billed at roughly $17 per 1,000 calls. A 5,000-business scrape costs $85+.
- It doesn't return emails. The Places API has no email field at all. You'd still need a separate website-crawl pipeline to recover emails.
- It's capped at 60 results per text search query. Even worse than the 120-result browser cap. You need to manually grid-search to get full coverage of a city, doubling the API spend.
For most users, the Places API is the wrong choice unless you specifically need Google's official data warranty for compliance reasons.
The canonical CSV format
Whatever method you use, your output CSV should have these columns. They're the de facto standard across managed scrapers and easy to import into any CRM:
name,address,city,country,latitude,longitude,phone,website,email,category,rating,reviews_count,google_maps_url
"Pizzeria Da Marco","Via Roma 12, 00184 Roma","Roma","Italy",41.8954,12.4823,"+39 06 4827 1234","https://pizzeriadamarco.it","[email protected]","Italian restaurant",4.6,1847,"https://maps.google.com/?cid=12345"
"Trattoria San Lorenzo","Via Garibaldi 7, 00185 Roma","Roma","Italy",41.8932,12.4956,"+39 06 4444 5555","https://trattoriasanlorenzo.it","[email protected]","Italian restaurant",4.4,923,"https://maps.google.com/?cid=67890"
A few format conventions worth following:
- Quote string fields. Addresses contain commas; quoting prevents CSV parsers from splitting them mid-address.
- Use UTF-8 encoding. Restaurant names and addresses contain accented characters in most countries.
- Don't use Excel as your authoring tool. Excel will silently mangle phone numbers (
+39 06 4827 1234becomes a number, then loses the leading +). Author and edit CSVs in a text editor or Google Sheets, never Excel. - Use a stable primary key. The
google_maps_url(or the underlyingplace_id) is stable across re-scrapes. Names and addresses can change.
Importing into Excel
- File → Open → choose the .csv.
- Critical: if Excel offers a "Text Import Wizard," step through it and explicitly mark the
phonecolumn as "Text" (not "General"). Otherwise Excel will mangle international phone formats. - Save As .xlsx if you want Excel-native format.
Importing into Google Sheets
- File → Import → Upload → choose the .csv.
- Replace current sheet (or create new).
- Detect file type: comma-separated values.
- Done. Google Sheets handles UTF-8 and quoted fields correctly out of the box.
Importing into a CRM
Most modern CRMs have a CSV import wizard. The key step is field mapping: the CRM asks you which CSV column corresponds to which CRM field. Map name → "Company name," phone → "Phone," email → "Email," and so on.
Pro tip: import a small batch (10 rows) first to validate the field mapping, then bulk-import the rest. CRM imports are easy to undo only if you tag the import batch with a unique tag.
TL;DR
- Need data fast and clean? Use g-maps-scraper.com — CSV download on every search.
- Need just a few records? Copy-paste from Maps directly.
- Are you a developer with a compliance need? Google Places API + your own JSON-to-CSV script.
- Always quote your strings, use UTF-8, and treat phone as text in Excel.
Ready to extract your own leads?
Try g-maps-scraper.com free — 30 searches, no credit card required.
Get Started FREE