How to Use a Google Maps Scraper to Export Data to CSV

Support Anastasia

Administrator
Staff member
A-Parser Enterprise

gmaphero.webp


How to Scrape Google Maps to CSV Without Code

With A-Parser’s built-in Google Maps scraper (Maps::Google), you can export Google Maps listings to CSV: business name, phone number, website, address, rating, review count, categories, coordinates, and a link to the listing.

The export can be opened in Excel, imported into a CRM, or filtered for prospecting, territory planning, and local-market research.



From Search Queries to a Business Directory

You can set up the entire workflow in the A-Parser web interface, without custom scripts, browser extensions, or Node.js libraries.

Enter search queries and an OpenStreetMap region code; A-Parser builds a grid inside the selected boundary and collects listings from every point.



What Google Maps Data Can You Export to CSV?

The built-in Maps::Google parser accepts search keywords and extracts contact, location, rating, and review data from Google Maps listings.

A standard export can include 10 columns:

ColumnParser Field Maps::GoogleDescription
Search QueryqueryThe keyword that returned the listing
Business NamenameBusiness name shown in Google Maps
RatingratingAverage rating on a 1–5 scale
ReviewsreviewsReview count at the time of collection
AddressaddressBusiness address
PhonephonesContact number from the listing
WebsitesiteWebsite or external page linked from the listing
CategoriescategoriesPrimary and additional business categories
CoordinatescoordinatesLatitude and longitude (lat, lng)
Listing LinklinkGoogle Maps URL with CID; useful for deduplication

Other available fields:
The parser can also return timestatus (open or closed status), tags (accessibility features and amenities), photo (image URL), and price (price tier).



How to Set Up Google Maps Scraping in A-Parser

What You Need

  • A-Parser Pro or Enterprise.
  • A residential proxy pool, such as A-Parser Premium Proxies. A proxy pool is needed for citywide crawling because Google limits frequent requests from one IP address.
  • A list of target search queries.



Step 1. Select Maps::Google

1. Open Task Editor in the A-Parser web interface.

2. Select the built-in Maps::Google parser from the parser list.

gmap1_en.png




Step 2. Add Search Queries

In the Queries field, enter 5–10 complementary terms for your niche.

⚠️ Semantic coverage matters:
Businesses can appear for different related terms. In the Los Angeles test, cosmetic dentist contributed 820 rows, while medical spa contributed 351 and botox clinic contributed 111. Using a single broad term will return fewer results.

The Los Angeles test used these 10 queries:

Code:
cosmetic dentist
skin care clinic
teeth whitening
dental implants
medical spa
dermatologist
laser hair removal
plastic surgeon
med spa
botox clinic

gmap2_en.png




Step 3. Configure Core Parser Parameters

gmap2_2_en.png


Check these five settings in Maps::Google:

1. Coordinates — the center point for a single-point search. Use it for a small locality or when results around a specific map point matter. With Collect full region enabled, you can leave it blank: A-Parser builds the grid from the regional boundary. A value already present in an imported preset does not change that grid.

2. Zoom — map scale. It matters for a single-point search. In full-region mode, A-Parser automatically chooses the scale for each grid point.

3. Country — set United States when you need an explicit country setting. In our tests, Country did not change the returned listings, while Language did.

4. Language — set English for an English-language export. Check the first rows: a different language setting can produce mixed-language results.

5. Max pages — pagination depth per grid point. In the test, one page contained 20 listings: 3 pages returned up to 60 listings per point, while 10 returned up to 200. Start with 3 pages and increase the depth if needed.



Step 4. Configure Citywide Crawling (Collect Full Region)

Google Maps results vary by search location. To cover an entire city, A-Parser builds a grid inside the boundary of the selected region.

Where to find the region setting:
The regional crawling options are in Task Editor, under the parser's Parser options section:
- OpenStreetMap Type+ID: enter the region code. For Los Angeles, use R207359. The R prefix means relation.
- Step in kilometers: set 3 km.
- OSM Mode: select Location code.

How it works: After you enter a relation code, A-Parser determines the regional boundary, builds a grid inside that polygon, and queries every point with your keyword list. The grid follows the regional shape rather than a rectangular bounding box, so it can contain fewer points than a rough bounding-box estimate.

How to find a code for another city:
Open openstreetmap.org, find the city, and open its administrative boundary. The object details panel shows the object type and ID, for example Relation: Los Angeles (207359). Add the R prefix for OpenStreetMap Type+ID: R207359. You can also find the relation number in a URL such as openstreetmap.org/relation/207359.



Step 5. Configure Proxy Checker

In Task options:

  • Select your proxy list in the Proxy checker field.
  • Set Max retries: 10. Google can return temporary blocks or empty responses; a retry lets the parser try the request again with another proxy.
  • Set 20–30 threads.



Step 6. Configure CSV Output

You do not need an external conversion script: A-Parser creates one CSV row for every Google Maps listing. Keep the same field order in the result template and the CSV header.

Business Rows

1.
In Overall results format, paste:

Code:
[% FOREACH serp %]
[% tools.CSVline(
    query,
    name,
    rating,
    reviews,
    address,
    phones,
    site,
    categories,
    coordinates,
    link
) %]
[% END %]

FOREACH serp iterates through the collected listings. tools.CSVline safely handles separators, quotes, and line breaks so business names and addresses do not split into extra columns.

CSV Header

2.
In Prepend Text, paste:

Code:
Query,Name,Rating,Reviews,Address,Phone,Website,Categories,Coordinates,Link

Keep the line break after Link; otherwise, the first business row will join the header. The header order must match the field order in tools.CSVline.

Encoding, File Name, and Run

3.
In Results options, enable Write BOM: Yes (true) so Excel opens UTF-8 text correctly.

4. Save results to a file, for example:

Code:
google_maps_leads_$datefile.format().csv

5. Click Add task or Run. When the task status is Completed, download the CSV from the task queue.

gmap3_en.png




Check the CSV Before a Full Citywide Run

Before regional crawling, run 1–2 test queries and check the first CSV rows:

  • the header and data appear in separate columns;
  • phone, address, coordinates, and listing link are in the expected fields;
  • text opens correctly in Excel;
  • the Link field contains a Google Maps CID;
  • language and country match the target region;
  • empty websites, ratings, and reviews do not necessarily indicate an error: those fields can be absent from a Google Maps listing.

For a lead list, deduplicate the Link column by CID. Keep the Query field when you need to know which search term returned a listing.



Live Benchmark: 4,001 Records from Los Angeles

The Los Angeles test covered medical aesthetics, dermatology, and cosmetic dentistry with 10 search queries and Max pages = 3.

How the Data Was Collected

ParameterValue
TerritoryLos Angeles, California (R207359)
Test dateSeptember 30, 2026
Search queries10 medical aesthetics and cosmetic dentistry terms
Grid points183
Grid step3 km
Max pages3
Generated subqueries1,830 (183 × 10)
Queries done/all1,840 (10 seed queries + 1,830 subqueries)
ProxiesA-Parser Premium residential proxy pool
A-Parser versionv1.2.3671; NextGen v0.5.79 (Linux)
Run timeAbout 10 minutes
Raw rows35,760

Adjacent grid points overlap, so the same listing can appear in the raw output more than once. Of the 4,001 rows in the final export, 3,999 are unique by CID, and 2 rows have duplicate CIDs.

What We Got

The final google_maps_leads_la_medspa.csv export is available here (view in HTML):

MetricResult
Rows in final export4,001
Phone numbers3,885 of 4,001 (97.1%)
Addresses3,976 of 4,001 (99.4%)
Coordinates4,001 of 4,001 (100.0%)
Categories3,996 of 4,001 (99.9%)
Ratings3,507 of 4,001 (87.7%)
Review counts3,238 of 4,001 (80.9%)
Websites / external pages3,057 of 4,001 (76.4%)
Google Maps links with CID4,001 of 4,001 (100.0%)

Phone number format:
The export keeps phone numbers in a normalized format without parentheses or hyphens, making them easy to import into a CRM or dialing tool.

What the Results Show

1. Phone numbers and addresses appear more often than websites. Google Maps works well as a starting point for a contact database, but a missing website field should be checked manually.

2. Related queries expand coverage. Using all 10 queries returned far more listings than using med spa alone.

3. CID is needed for final deduplication. Grid overlap creates repeated listings, so remove duplicates before importing into a CRM.

Query Contribution to the Final Export

Search QueryRows in Final ExportShare of Export
cosmetic dentist82020.5%
skin care clinic64716.2%
teeth whitening54713.7%
dental implants51812.9%
medical spa3518.8%
dermatologist3248.1%
laser hair removal2666.6%
plastic surgeon2436.1%
med spa1744.3%
botox clinic1112.8%



How to Use Your Export

The CSV is more than just a list of businesses. Use it for segmentation, data checks, and personalized outreach.

TaskFilter ByNext Step
Find listings without a linked websiteWebsite = emptyReview the listing manually and verify whether the business has an active website
Prioritize listings with more reviews and higher ratingsReviews, RatingFilter for businesses with the right review count and rating, then use those details to personalize your outreach
Review ratings and review countsRating, ReviewsIdentify listings with low ratings and enough reviews to warrant further review
Segment by geographyAddress, Coordinates, CategoriesSplit the export by area, business type, or sales territory
Prepare for CRM importName, Phone, Website, LinkDeduplicate by CID, check contacts, and import the records

Important: An empty Website field means the Google Maps listing does not contain a linked website. It does not necessarily mean the business has no website. Ratings and review counts are prioritization signals, not proof that a business needs a particular service.



What to Do When Your Results Look Wrong

ProblemCauseSolution
Business names or addresses use the wrong languageLanguage is set incorrectlySet Language = English for an English-language export
Regional crawling creates too many pointsStep in kilometers is too small for the cityStart with a 3 km step and reduce it only when needed
The parser covers a wider area than expectedOSM resolved the location name to the wrong boundaryUse OSM Mode = Location code with the exact relation code, such as R207359
Excel shows garbled textThe CSV has no UTF-8 BOMEnable Write BOM: Yes in Results options
The final file contains repeated listingsAdjacent grid points overlapRemove duplicates by the Link column (CID) in Excel or Template Toolkit
Website, rating, or review fields are emptyThose fields are absent from the Google Maps listingKeep the value empty or filter these rows for your use case



When to Use A-Parser Instead of a Custom Script

A custom script can make sense when you need unusual data processing or an integration with an internal system. But citywide collection also requires grid generation, proxy management, retries, deduplication, and export formatting.

A-Parser combines these steps in one task. Save the configuration as a preset, replace the city and query list, and run it again when needed.



Ready-to-Use A-Parser Task Preset

In Task Editor, use the import button next to the Task preset field and select Import preset. Open the spoiler and paste the Base64 code into the import field.

Code:
eJx9VV1v2jAU/SuR1UrtlKJ2VTWNN5qVrRstLW23B0DIjS/Bw7Fd26EgxH/f
tRPCxzaeYl/fcz/OPXaWZAbGciVJ8yImjtqpfTBgwVnS7C+JDmvSJJlSmYCz
nGp7JiiJiabGIhK9+uQOrc3m1+CCRwzGtBCOxEviFhoQrTCJ4cwfcob7nM5H
mmZg0TCjovA+l2T1f8BEbHmCPORaWNBGzRcbgDMFHAAE72QC6RTMVpYPh5IE
jAFn+E4PF+eHQGNlcuqQ0UBODeofR+1u76aVfIuQUR0dD9HilBK2kTz9FFzC
yVsBZhFHkuYQR4Y6LjP8wozDu40jyhgGxYWeKAn4tdyhX0odZMpXiGulDOMS
LbjBkNPTMs3N/Rdc7BStHarBrmtWNn/Gg5Zkt2yr5t7H80+XV5/Rgsm5R1BB
mktiHehb+SMP84w9+k4xD0j9Z7UaDmNSEmDbgQ08OtIXjUpn9eETncGz8pzx
IKk1Bnf3SEItyJEX5EgAZXZ0xLA9798oiT45baR2tlNimdOLdlPHi+RvoSep
0NczjYy1jfI9OJi7yrhY19snR2FPMEQRsI8lhjTHVFiIicXi2xQLYfsnOBec
njLdimRkTMmWEB2Ygdi4hfjXBRcMb1hrjKDbCvhvl+5fMVZ1e9upUI/vBmso
r0RMwua6e7e+IoSpjsqwb/aKXQuec4d7m6hCYuPnMZkC6Jqve89XrgzUKara
qsz4jmiQXkSPQb5+cHGvFG+v0m6rku6DV278C16DdJONcpMt4XZQtwO5UUNL
V/HJHh878901pkqOedatbubas5DP+PJ1ZaJyLcAT5GPiS9Lb6K5lq2n6zabX
fWgSEngO168gCXf5+1MZVBuOur7y5eU4kO2cVciUCvHS6+xXY53SXXljzJ4K
gr6wL5uD42nEQDpu3UDaKZf4BhiIUrzwPB1IB+Am0fsEKZY4hIH0vlREHNNQ
6exA5sA4po+spv7UC14JlYV4guLrFE0oN1EonYqBRJz1SW1hMlAyBCjBr8qp
eZV561oF6sIcyhEv/G41rH8n9b9niWr8bR9Kq4cF2+oP371X0w==



Downloads and Next Steps


For a first run, replace the test queries with your niche and check the first 20 rows. If the columns, language, and region look correct, add more queries and run the full citywide crawl.

← Back to All Scraping Guides and Tutorials
 
Last edited:
Back
Top