This tutorial shows how to scrape Google Maps URLs into CSV with the Google Maps Listings Scraper by URLs template for UScraper. You will import the workflow, add approved Maps URLs, set the export path, run one validation pass, and decide when an official API route is a better fit.
Before you start
Prerequisites for scraping Google Maps URLs
You need UScraper as a local desktop app, the Google Maps Listings Scraper by URLs template, a folder for CSV exports, and Google Maps search or listing URLs you are allowed to process. Start with one URL, not a bulk list, because Maps results can vary by region, language, session, consent state, and result type.
This guide is for visible Google Maps pages. It is not a CAPTCHA bypass guide, login automation guide, or replacement for legal review. Before collecting or reusing place data, review Google's Maps Platform terms, Places API policies, and the rules for your intended use.
Technical access is not permission. Keep batches modest, stop when verification appears, and document the source URL, run date, and business reason for the export.
Workflow anatomy
What the Google Maps URL scraper does
The JSON export is the authoritative workflow definition. In plain English, the flow is:
Set Window Size -> Navigate -> Wait for Page Load -> Consent Cleanup
-> Feed or Place Detection -> Scroll Loop -> Prepare Rows
-> Structured Export -> Loop Continue
The template starts from the URLs in the Navigate block. A URL can be a Google Maps search URL, a saved search-style URL, or a listing URL that opens a place panel. If a results feed is visible, the workflow scrolls the feed and prepares one export row per listing card. If Google redirects directly to one place detail page, the workflow falls back to the main visible place record instead of returning nothing.
One important safeguard is that listing rows are prepared from cards inside div[role="feed"]. That prevents nested place-page modules such as "At this place" from being exported as false business listings.
| Workflow area | What it does | What to inspect |
|---|---|---|
| Navigate | Stores the Maps URLs to process | Replace the sample Pizza Hut search URL with your approved URLs. |
| Wait and consent cleanup | Gives Maps time to render and clicks common consent buttons | Watch for consent, verification, or blank pages. |
| Back-button logic | Returns from a selected place panel to a results feed when useful | Confirm the browser lands on the feed you expected. |
| Scroll loop | Scrolls the visible results feed until an end marker or bounded limit | Check whether the feed has fully loaded before export. |
| Structured Export | Writes fixed columns to CSV with headers and append mode | Confirm filename, folder, and whether old test rows exist. |
Runbook
How to scrape Google Maps URLs to CSV
Import the template
Open Google Maps Listings Scraper by URLs, download the JSON, and import it into UScraper.
Add approved Maps URLs
In Navigate, replace the sample URL with a short list of Google Maps URLs. Use specific search URLs such as https://www.google.com/maps/search/?api=1&query=Pizza%20Hut%20in%20London%2C%20UK&hl=en when you want a reviewable feed.
Set the export path
Structured Export writes google-maps-scraper-listing-page-by-url.csv. Choose a project folder and clear old test files before append-mode runs.
Run one URL
Watch the browser. If a consent prompt, verification page, empty feed, or unexpected place page appears, resolve that before adding more inputs.
Validate the rows
Open the CSV and compare name, rating, address, website, telephone, and detail_url against the visible Maps page.
Archive the run context
Save the input URL list, run date, CSV filename, language, region, and any selector edits with the export so later users can understand the dataset.
Because append mode is enabled, reruns can duplicate rows if you keep writing to the same file. Use dated filenames for production batches or dedupe by detail_url plus name.
Export shape
CSV columns exported from Google Maps
The Structured Export block defines 17 columns. Some are always expected, such as the input URL and scrape timestamp. Others are best effort because Google Maps may omit phone, website, price, tags, coordinates, or open-status text for a particular business or session.
| Column | Meaning | Validation note |
|---|---|---|
original_url, keyword | Source URL and inferred search phrase | Useful for tracing each row back to input. |
name, category, address | Core business identity fields | Compare the first few rows with visible cards. |
rating, review_count, price_range | Reputation and pricing signals when exposed | Expect blanks for sparse listings. |
latitude, longitude, detail_url | Coordinates and Google Maps place URL | Spot-check place URLs before downstream use. |
current_status, next_status, scraped_at | Open/closed state and run timestamp | Treat status as time-sensitive. |
website, telephone, tags | Contact and service signals | Verify before outreach, enrichment, or CRM import. |
API choice
Google Maps scraper vs Places API
The official Places API is the right comparison point when your project needs approved API access. For example, Place Details retrieves fields for a known place, and Google's field-mask guidance helps limit requests to the data your application actually needs.
| Approach | Best fit | Trade-off |
|---|---|---|
| UScraper local desktop workflow | Supervised spreadsheet research from visible Maps URLs, local QA, modest one-off exports | You maintain selectors and waits when Google Maps changes. |
| Google Places API | Contractual API access, documented billing, field masks, attribution rules, production apps | Requires API keys, billing setup, and policy compliance. |
| Hosted scraper platforms | Cloud scheduling, managed browsers, API-triggered datasets | Pricing, custody, and behavior depend on the vendor. |
Use UScraper when an analyst needs to inspect the same browser view that produced the CSV. Use the official API when governance, uptime, storage rules, display rules, or application integration matter more than a quick spreadsheet export.
Quality control
Validate the Google Maps CSV export
Open the CSV after the first run. Check the first five rows, one middle row, and the last row. Then filter for blank names, duplicate detail URLs, missing phone numbers, and suspicious addresses.
| Symptom | Likely cause | Fix |
|---|---|---|
| Zero rows | Consent, verification, empty feed, slow load, or selector drift | Inspect the browser, resolve prompts, increase waits, and rerun one URL. |
| One row only | Google opened a single place page instead of a results feed | Use a search URL if you expected multiple listings. |
| Missing phone or website | Maps did not expose that field on the card or place page | Treat fields as optional and verify before outreach. |
| Duplicate rows | Old append-mode CSV, repeated input URL, or rerun without clearing the file | Clear the file or dedupe by detail_url and name. |
| Stale open status | Status was captured at the run time | Keep scraped_at and rerun when hours matter. |
FAQ
Google Maps URL scraping FAQ
Google Maps can show public business information, but automated collection may still be restricted by Google terms, source controls, privacy law, database rights, and local data-use rules. Keep runs modest, do not bypass access controls, and get legal review for commercial reuse.
Next step
Download the Google Maps listings scraper by URLs
Download the JSON from Google Maps Listings Scraper by URLs, import it into UScraper, and keep this guide open for the first validation run. For adjacent workflows, browse the UScraper template library or more tutorials in the UScraper blog.

