Scrape Google Maps and the local pack without Selenium: business listings, ratings, phone/website, full place details and paginated reviews — parsed JSON from one POST.
import requests
API = "https://app.quantumproxies.io/api/v1/scraper/serp"
KEY = "qp_live_YOUR_KEY"
r = requests.post(API, headers={"Authorization": f"Bearer {KEY}"},
json={"query": "coffee shop", "search_type": "places",
"location": "Milan, Italy", "country": "it", "num": 20})
for p in r.json()["places"]:
print(p["rank"], p["name"], p["rating"], p["reviews"], p["address"])location is encoded server-side into Google's uule parameter — you get the pack a searcher physically in Milan sees. For map-canvas results pass "search_type": "maps" with "gps_coordinates": "45.4642,9.1900,14z".
# full record: address, phone, website, hours
json={"search_type": "place_details", "place_id": "ChIJ..."} # -> place_results
# paginated reviews, newest first
json={"search_type": "reviews", "data_id": "0x...:0x...", "sort_by": "newest"}
# -> reviews_results: [{rating, date, text, user: {name}, ...}], next_page_tokenRunnable pipeline (search → details → reviews CSV): maps.py.
- Lead lists — every listing carries phone + website
- Local SEO monitoring — pack rank per city is a ranking you can track like any other
- Multi-location reputation — chains diff their ratings across branches; the workflow is in monitoring Google reviews across locations
The DIY-vs-API tradeoffs (Maps is one of the hardest Google surfaces to scrape raw) are covered in scraping Google Maps business data; pair it with Yelp business data for US coverage.
Part of the QuantumProxies SERP API — same endpoint as organic search, search_type switches the vertical. All parameters: serp-api/docs · keys: app.quantumproxies.io/api-keys.