Irmu
Guides9 minIrmu Engineering

How to Scrape Google Maps (2026 Guide)

Collect business listings, ratings and reviews from Google Maps reliably — without maintaining a browser farm.

Why Google Maps is hard to scrape

Google Maps renders results progressively inside a virtualized list, loads detail panels over XHR, and applies aggressive rate limiting per IP and per session. A naive HTTP request returns a shell with no listings in it, and a naive headless browser gets challenged within a few dozen requests.

The official Places API solves reliability but introduces different limits: capped result sets, a small number of returned reviews and pricing that grows quickly with coverage. For territory mapping or lead generation you usually need more rows than it will give you.

The approach that works

Render the search URL in a real browser, scroll the results panel until the list stops growing, then extract each listing from the settled DOM. Rotate residential IPs geographically close to the searched area so results match what a local user sees.

With Irmu, all of that is one request: rendering, scrolling, proxy selection and extraction happen server-side, and you describe the output shape instead of writing selectors.

python
import requests

res = requests.post(
    "https://app.irmu.com/api/extract",
    headers={"Authorization": "Bearer irmu_sk_live_..."},
    json={
        "url": "https://www.google.com/maps/search/dental+clinics+in+austin",
        "country": "us",
        "schema": {
            "business_name": "string",
            "address": "string",
            "phone": "string",
            "rating": "number",
            "review_count": "number",
        },
    },
)

for row in res.json()["data"]:
    print(row["business_name"], row["rating"])

Getting reviews as well as listings

Review text lives behind a second interaction: opening the place panel and expanding the review list. Point the same extract call at the place URL and request a reviews array; Irmu performs the expansion before extraction.

For continuous monitoring, schedule the job rather than looping client-side. Scheduled runs deliver by webhook and share the same retry semantics as ad-hoc requests.

Staying on the right side of the rules

Collect public business information, not personal data. Respect the volume you actually need, cache aggressively, and read Google's terms for your specific use case. Irmu's Acceptable Use Policy prohibits circumventing authentication and unlawful personal-data collection.

Start building with Irmu today

1,000 free credits every month, no card required. Every API, every integration, one key.