Most guides on how to export Google Maps data stop at Google Takeout. That works if you want your own saved places back, but it won't give you a spreadsheet of plumbers in Denver with phone numbers and emails.
This guide covers both jobs. First, getting your personal Maps data out. Then, turning a Google Maps business search into a CSV you can use for outreach.
What "export Google Maps data" can mean: your data vs business listings
It means one of two different things. You either want your own account data (saved places, lists, Timeline, custom maps), or you want business listings from a search like "dentists in Tampa" so you can contact them.
The two jobs use completely different methods, and mixing them up is why so many people end up with a Takeout archive that has nothing useful in it.
- Personal data: starred places, "Want to go" lists, custom lists, location history, pins on a My Maps map.
- Business listings: every business that matches a keyword and location, with name, address, phone, website, category and rating, plus any contact details you add on top.
Here is how the main export options compare:
| Method | What you get | Business contacts? | Best for |
|---|---|---|---|
| Google Takeout (saved places) | Places you saved, with names, notes and Maps links | No | Backing up your own lists |
| Timeline export (phone) | A JSON file of your location history | No | Personal records, mileage logs |
| My Maps KML/KMZ export | Pins you added to a custom map | No | Google Earth, GIS, sharing |
| Manual copy-paste | Whatever you type in | Phone and website only | 5 to 10 businesses, once |
| Google Places API | Structured place data per request | Phone and website, no emails | Developers building apps |
| Google Maps lead tool | Every business matching a search, enriched | Yes, where found on the website | Outreach and sales lists |
What Google Takeout, Timeline and saved-list exports actually contain
Takeout returns the places you saved in your own account. Timeline is no longer in Takeout and has to be exported from your phone. Custom maps built in My Maps export as KML.
Saved places via Google Takeout
To download your saved places:
- Go to takeout.google.com and sign in with the account that holds your lists.
- Click Deselect all so you don't export your whole Google history.
- Tick Maps (your places), and Saved if you want your custom lists.
- Click Next step, choose Export once and .zip.
- Click Create export and wait for the email with the download link.
- Unzip the file and open the Maps and Saved folders.
Inside you'll typically find a Saved Places.json file (GeoJSON format, covering starred places) and one CSV per custom list. Expect place names, notes, comments and Google Maps URLs. Depending on your account and selections, addresses and coordinates can be missing, and file names vary, so check the archive before you rely on a specific column.
Timeline (location history)
Google moved Timeline data onto your device, so it no longer appears in Takeout downloads. You export it from the phone instead.
- On Android: Settings > Location > Location services > Timeline > Export Timeline data.
- In the Google Maps app: Settings > Personal content > Export Timeline data.
You'll confirm, unlock the phone and choose where to save. The result is one large JSON file of coordinates, timestamps and visits. It won't open cleanly in a spreadsheet, so you'd need a converter to get GPX, KML or CSV.
My Maps and KML
If you built a custom map at My Maps, open it, click the three-dot menu next to the map title and choose Export to KML/KMZ. Tick the option to export as KML if you want a plain file rather than a zipped KMZ.
KML is built for Google Earth and mapping software. To get it into a spreadsheet you'll need a KML-to-CSV converter or a GIS tool that can save as CSV.
Why Takeout and KML exports can't give you a list of businesses to contact
They only contain what you personally saved, and Google Maps doesn't publish emails or owner names in the first place. So even a perfect Takeout export is the wrong tool for prospecting.
Four specific limits:
- Scope. Search results are never part of your account data. If you didn't click save on a place, Takeout doesn't know it exists.
- Fields. No emails, no owner names, no social profiles. Phone numbers are often missing too.
- Scale. Saving 300 roofers one by one to a list, then exporting, takes hours of clicking.
- Freshness. A saved list is a snapshot from the day you saved it. Closed businesses and new openings aren't reflected.
Some people try the workaround of saving every search result to a list and then running Takeout. It technically works, but you end up with names and links after an afternoon of clicking, and you still have to find every contact by hand.
Can you extract business data from Google Maps, and what about the API?
Yes. You can copy listings by hand, pull them through Google's Places API if you write code, or use a Google Maps lead tool that collects and enriches them for you.
Manual copy-paste
Fine for a handful of businesses. Past about 10 rows, typos in phone numbers and skipped listings creep in, and the time cost gets silly.
The Google Places API
The API returns structured place data such as name, address, phone, website, rating and opening hours. It is billed per request through a Google Cloud billing account. Google has offered some free monthly usage, but the allowances have changed over time, so check Google Maps Platform's current pricing page rather than trusting an old blog post.
Three things to know before you build on it:
- You need an API key, billing set up and code to page through results.
- It doesn't return emails, owner names or social profiles.
- The Maps Platform terms limit how long you can store most returned content, so read them before building a permanent lead database.
A Google Maps lead tool
This is the no-code route for sales lists. A good tool searches Google Maps live, works around the result cap by splitting areas, visits each business website for contact details and hands you a clean file.
That result cap matters. A single Google Maps search stops showing results at around 120 listings, which is why a search stops at around 120 results is the first thing to understand before you plan a big export.
Step by step: turn a Google Maps search into a CSV of leads
Pick one niche and one area, split the area into smaller searches, enrich the results, then filter and export. Here's the process in order.

- Choose one niche and a clear territory. "Roofing contractors in the Phoenix metro" is a good brief. "Home services in Arizona" is too broad to write one email for.
- List the keywords owners actually use. Roofers might be listed under "roofer", "roofing contractor" or "roof repair". Search each one.
- Split the area. Because of the roughly 120-result cap, search city by city or ZIP by ZIP rather than one search for the whole metro.
- Run the searches in a lead tool. In Prospect Cheap you enter the keyword and location, it pulls live listings from Google Maps and uses AI to read each business website for emails, the owner's name and title, extra phone numbers and social profiles.
- Check a sample before scaling. Open 20 rows. Are they actually roofers? Do the emails look like real addresses? Fix your keywords now, not after 2,000 rows.
- Filter, verify and export. Covered in the next sections.
Worked example. Say you search three roofing keywords across eight Phoenix-area cities and, after duplicates are removed, you have 450 unique businesses. Prospect Cheap charges one credit per lead found, so that run uses 450 credits. The 150 free credits are enough to test one or two cities first and see what the data looks like before you commit to a monthly plan, which start at $29.
Adding emails, owner names and social profiles before you export
Google Maps gives you the business basics, but the contact details that make outreach work live on each business's own website. Enrichment visits that site and adds them to the same row.
What a Google Maps listing typically shows: name, category, address, phone, website, rating and review count. What it doesn't show: email addresses, the owner's name, their title, or links to the company's Facebook, Instagram and LinkedIn pages.
Do the enrichment before you export, not after. If you export first and then run emails through a separate tool, you end up merging two files with lookups, and rows drift out of line when a business name is spelled slightly differently.
A layout that works well for outreach:
| Column | Example | Used for |
|---|---|---|
| business_name | Desert Peak Roofing | Personalization, CRM company field |
| category | Roofing contractor | Segmenting and filtering |
| city / zip | Mesa / 85201 | Territory, local references |
| phone | (480) 555-0142 | Calling, SMS |
| website | desertpeakroofing.com | Research, dedupe key |
| mike@desertpeakroofing.com | Cold email | |
| email_status | valid | Deciding who to send to |
| owner_first_name / last_name | Mike / Alvarez | Greeting, decision-maker |
| owner_title | Owner | Confirming you reached the right person |
| facebook / instagram / linkedin | profile URLs | Multichannel follow-up |
| rating / reviews | 4.3 / 87 | Prioritizing and offer angle |
For a full breakdown of every field, see every column in a Google Maps export explained. If you want more detail on the email side specifically, read how to get emails from Google Maps businesses.
Two realities to expect. Some businesses only list a role address like info@ or office@, and some have no website at all, so there's nothing to enrich. Don't delete the no-website rows automatically; they can be your best prospects if you sell websites or local marketing.
Filtering and verifying the list so the CSV is ready to use
Remove rows you can't or shouldn't contact, then verify every email before it goes near a sending tool. This step protects your sender reputation more than any copywriting will.
Filters to run on almost every Google Maps list:
- Category mismatches. A "roofer" search can return roofing supply stores and general contractors. Drop or separate them.
- Duplicates. Overlapping city searches return the same business twice. Dedupe on website domain first, then phone number.
- Chains and franchises. Multiple locations often share one corporate email. Keep one row or skip them if you sell to owner-operators.
- Closed businesses. Remove anything marked permanently closed.
- No email. Move these to a call list instead of deleting them.
- Offer-based filters. Selling review management? Filter for ratings under 4.0. Selling ads? Look for higher review counts that suggest budget.
Then verify. Verification checks each address and labels it, usually as valid, invalid, catch-all or unknown.
- Valid: send.
- Invalid: remove.
- Catch-all: the domain accepts everything, so you can't confirm the inbox. Send to a small batch and watch bounces.
- Unknown: hold back or retry later.
On paid Prospect Cheap plans, emails can be verified in one click before you export. For the reasoning behind this step, see why you should verify emails before sending.
Opening the export in Excel or Google Sheets without breaking the columns
Import the CSV instead of double-clicking it, set phone and ZIP columns to text, and use UTF-8 encoding. That avoids almost every formatting problem.
What goes wrong when you just double-click a CSV in Excel:
- ZIP codes lose leading zeros, so 02108 becomes 2108.
- Long numbers turn into scientific notation.
- Accented names like Café or Peña show up as garbled characters.
- Addresses containing commas can spill into the next column if the file isn't properly quoted.
In Excel
- Open a blank workbook and go to Data > From Text/CSV.
- Select your file and set File Origin to 65001: Unicode (UTF-8).
- Confirm the delimiter is Comma.
- Click Transform Data, select the phone and ZIP columns and set their type to Text.
- Click Close & Load.
In Google Sheets
- Go to File > Import > Upload and choose the CSV.
- Set the separator to Comma.
- Uncheck Convert text to numbers, dates and formulas.
- Click Import data.
Keep the original export untouched as your master file and work on a copy. If you edit the list and need to re-upload it somewhere, save it as CSV UTF-8, not the plain CSV option, so special characters survive.
Where to send the data next: CRM, cold email tools or an API
A CSV is fine for one-off campaigns. If you're pulling new lists every week, sending leads straight to your tools saves the download-clean-upload loop every time.
- A CRM. Map each column to the matching CRM field before importing, especially owner first and last name and custom fields like rating. The guide on importing lead lists into your CRM walks through field mapping.
- Cold email tools. Prospect Cheap can send leads directly to GoHighLevel, Instantly, Smartlead or lemlist, so the owner name, email and company land in the right campaign variables without a file in between.
- An API or AI assistant. For automated workflows, the REST API lets you pull leads into your own scripts, and the MCP server lets you run searches from an AI assistant. See finding leads from Claude with MCP for an example setup.
Whichever route you use, keep the email_status column attached to every lead. It's the quickest way to stop an unverified address slipping into a live campaign.
Next steps
- If you only need your own places, run Google Takeout for saved lists or the phone export for Timeline, and convert JSON or KML files as needed.
- If you need businesses to contact, pick one niche and one city, run a small test search, and review 20 rows before scaling.
- Enrich, filter and verify before export, then import with text-formatted phone and ZIP columns.
- Once a test list looks right, expand city by city and send leads straight to your CRM or sending tool.
