This tutorial shows how to scrape Google Maps listings in Germany into CSV with the Google Maps Listing Scraper Germany template for UScraper. You will edit the search, run the scroll loop, and validate exported rows.
Before you start
Prerequisites for a Google Maps Germany scraping run
You need UScraper as a local desktop app, the Google Maps Listing Scraper Germany template, and a CSV folder. Start with one narrow keyword, such as supermarket Germany or zahnarzt berlin.
This guide covers visible Google Maps result cards, not login screens, owner dashboards, review scraping, CAPTCHA bypassing, or redistribution rights. Before reuse, review Google's Maps Platform terms, the Places API overview, and relevant local rules.
Technical access is not permission. Keep runs modest, stop when verification appears, and avoid bypassing access controls.
Workflow anatomy
What the Google Maps Listing Scraper Germany template does
The JSON export is the authoritative workflow definition. In plain English, the graph is:
Set Window Size -> Navigate -> Wait for Page Load -> Consent Cleanup
-> Wait for Results Feed -> Scroll Feed -> Check End-of-List
-> Structured Export -> End
The stock Navigate block opens https://www.google.com/maps/search/supermarket+Germany?hl=de. Consent cleanup clicks common German and English buttons such as Alle akzeptieren, Ich stimme zu, Accept all, and I agree. The scroll loop targets div[role="feed"] and stops when Maps shows Das Ende der Liste ist erreicht or the English equivalent.
Structured Export reads rows from div[role="feed"] div.Nv2PK. JavaScript-backed columns handle aria labels, nested spans, lazy images, and locale-specific text.
| CSV column | What it captures | Validation check |
|---|---|---|
Keyword | Configured search intent, starting with supermarket | Replace it when the Navigate URL changes. |
Name_des_Ladens | Shop or business name from the card label or title | Compare the first few names with the visible Maps feed. |
Kundenbewertung | Rating text when Google exposes it | Expect blanks for sparse or unrated listings. |
Anzahl_der_Bewertungen | Review count with parentheses removed | Check separators before numeric analysis. |
Adresse | Best-effort category/address line from the card text | Treat it as a mixed display line, not a guaranteed postal address. |
Übersicht | A short visible summary or leftover descriptive text | Review manually before using it in outreach copy. |
Main_image | Primary Google-hosted image URL when present | Use as a reference field, not as licensed media. |
Runbook
How to scrape Google Maps business data in Germany
Import the template
Open Google Maps Listing Scraper Germany, download the JSON, and import it into UScraper.
Edit the Maps search
Replace the sample supermarket+Germany?hl=de URL with one approved keyword and market. Keep hl=de for German result text.
Keep consent and feed waits
Leave the page-load wait, consent cleanup, pauses, and visible feed-card wait in place. Increase waits if Maps loads slowly.
Set the CSV destination
Structured Export writes google-maps-geschaefte-listing-scraper.csv with headers and append mode. Choose a project folder before running.
Run one keyword
Watch the browser until the feed scrolls to the end-of-list message. If verification appears, stop the run instead of trying to bypass it.
Validate before expanding
Compare names, ratings, review counts, address lines, summaries, and image URLs against the visible Maps cards.
Append-mode reruns can duplicate rows. Clear test files, use dated filenames, or dedupe by Name_des_Ladens plus Adresse.
API choice
Google Places API alternative or scraper?
The official Places API Text Search is the clean comparison point when the input is a category and location. For known places, Place Details is the official route for richer fields, subject to Google's field masks, billing, and policies.
| Approach | Best fit | Trade-off |
|---|---|---|
| UScraper local desktop workflow | Spreadsheet research, visual QA, modest German keyword batches | You maintain waits and selectors. |
| Google Places API | Approved API access, stable fields, production apps | Requires keys, billing, attribution, and terms review. |
| Hosted scraper platforms | Cloud scheduling, larger managed crawls, API-triggered datasets | Pricing, custody, and throttling depend on the provider. |
Use UScraper when an analyst needs an inspectable CSV from the same browser view they reviewed. Use the official API when governance, uptime, storage rules, or application integration matter more.
Quality control
Validate the Google Maps Germany CSV export
Open the CSV after the first run and keep the Maps tab beside it. Check the first five rows, one middle row, and the final row. Then filter for blank names, repeats, empty ratings, and suspicious address lines.
| 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 keyword. |
| Same rows appear twice | Append-mode rerun or repeated keyword | Clear the CSV before reruns and dedupe by business name plus address line. |
| Missing ratings | Google did not expose a rating for that card | Treat the value as optional and do not force zeros. |
| Address field looks mixed | Maps combined category, service text, and address fragments | Spot-check rows before geocoding or CRM import. |
| Image URLs are blank | The card image lazy-loaded differently or was not present | Keep the row and treat images as optional. |
FAQ
Google Maps Germany scraper FAQ
Public business information can still be governed by Google terms, access controls, privacy law, database rights, copyright, and local rules. Keep runs modest and do not bypass verification.
Next step
Download the Google Maps Listing Scraper Germany template
Download the JSON from Google Maps Listing Scraper Germany, import it into UScraper, and keep this tutorial open for the first validation keyword. For adjacent workflows, browse the UScraper template library or the UScraper blog.

