This guide shows how to scrape Google Places with Python: call one endpoint, get each place as clean JSON with name, address, category, and rating, then save it to a CSV file. No browser automation.
The hard part of scraping Google Places yourself is driving a browser, dodging blocks, and parsing a page that keeps changing. Instead you send one HTTP request to a search endpoint and get clean JSON back. First a quick test with curl:
Then the same call in Python with the requests library. Install it with pip install requests, drop in a key, and run:
Here are the first two places that came back, shown as CSV so they drop straight into Sheets or a CRM:
Change q to any search you would type into the Google box, like plumbers in Miami or dentists near 90210. Add page=2, page=3 to walk further down the list; an empty places array means you have reached the end.
Every place comes back with its position, name, address, coordinates, category, star rating, review count, price level, and a Google cid you can keep as a stable ID. The same record as CSV, ready for Sheets or a database:
Or the same record as JSON, exactly as the API returns it:
Need phone numbers, websites, and opening hours too? Use type=maps for the richer record. The places type is the lean, fast listing.
You can build a Places scraper with a headless browser and a parser, and plenty of tutorials show how. The trade is maintenance. Here is the difference in practice.
| Writing it yourself | CrustAPI | |
|---|---|---|
| Setup | Install a headless browser, handle blocks and page changes | One GET request, no browser |
| Output | Parse the HTML yourself; fields break when the layout changes | Clean JSON from the API, or the same rows as CSV |
| Maintenance | Fix the scraper each time the page changes | We keep it working |
| Free tier | Free, but you pay in time and blocked requests | 3,000 credits / month, no card |
| Cost model | Server, proxy, and developer time | One credit per search, however many places come back; empty searches free |
| Storing the data | Yours to manage | No storage limits. Export to CSV or a database |
Prepaid packs, and credits never expire: 25k for $49 · 100k for $149 · 500k for $549 · 2.5M for $1,999 · up to 250M, all self-serve, ex-tax. A search that returns 20 places costs one credit; a search that returns none costs nothing.
Because the response is plain JSON, a short loop pages through the results and Python's built-in csv module writes them to a file. No extra libraries. This reads pages one through three, stops early when a page comes back empty, and writes one row each:
Open places.csv in Sheets or Excel and you have a finished list. Swap the query, run it again, and append to build a bigger dataset.
Related: Google Places Scraper · Places API pricing · Google Maps Scraper API · Scrape Google Maps with Python · API docs
When a different tool fits better: live driving directions, real-time traffic, or a contract with a formal SLA are Google Cloud products, not scraping. This endpoint returns the public place listing anyone sees in Google search, which is what most lead-gen and research work needs, but it is not the official Google Places API.
3,000 free credits covers a real search. Run one query and look at the JSON that comes back.
Get 3,000 free credits