Google Maps data extractor

Send a search, get every business back as JSON or CSV.

Free to try, no card Up to 100 businesses per search ~1 second responses
PULLED LIVE FROM THE API, AUGUST 4, 2026

What data do you get?

# the Maps rate per business returned; zero results cost nothing curl "https://crustapi.com/v1/search?type=maps&q=plumbers%20in%20Denver,%20CO&limit=3" -H "x-api-key: YOUR_KEY"
# CSV view: the same record as one spreadsheet row (Download CSV in the playground)
positiontitleaddressphonewebsitecategoryNametotalScorereviewsCountthumbnailUrlbookingLinks
3Brothers Plumbing, Heating & Electric6201 Broadway, Denver, CO 80216(720) 9••-••32http://www.brothersplumbing.com/Plumber4.79043https://lh3.googleusercontent.com/gps-cs-s/AHRPTWmjSqVcjj5ZgqxjSZe1XKgW5c25rVZdKh1ZKZjP-ZYQFdxqBnmYoC3Es_SrFLaNOORnsnfWhYrZuRmHPsnI5Z3QjphAH8HL2N-OIIOmUgXeOGPJ9tIn0XN0qMpJN7Bm03qzCLYkeLRCy8vGhttps://www.brothersplumbing.com/?source=gbp; https://book.servicetitan.com/hrf65sbzfuyw4y6zrmjkjrhf?rwg_token=AE37R_gtJCJvJDu7_embMjeN23kkiD9-WauBZy0PhEGill_hGJWeL7hoVx2cJMtG0aJOXMAYiyFe3B5AgfgvxWZ3Cv18gIRW4A%3D%3D
// JSON view: the same response, trimmed to one business (phone masked here, not in the API): { "query": "plumbers in Denver, CO", "count": 3, "tookMs": 837, "places": [{ "position": 3, "title": "Brothers Plumbing, Heating & Electric", "placeId": "ChIJszGcvzV0bIcR3_6j5Gru8sM", "address": "6201 Broadway, Denver, CO 80216", "phone": "(720) 9••-••32", "website": "http://www.brothersplumbing.com/", "categoryName": "Plumber", "totalScore": 4.7, "reviewsCount": 9043, "openingHours": { "Monday": "7 AM-8 PM", "Tuesday": "7 AM-8 PM", ... }, "location": { "lat": 39.8096461, "lng": -104.9881312 }, "city": "Denver", "state": "Colorado", "postalCode": "80216", "thumbnailUrl": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWmjSqVcjj5ZgqxjSZe1XKgW5c25rVZdKh1ZKZjP-ZYQFdxqBnmYoC3Es_SrFLaNOORnsnfWhYrZuRmHPsnI5Z3QjphAH8HL2N-OIIOmUgXeOGPJ9tIn0XN0qMpJN7Bm03qzCLYkeLRCy8vG", "bookingLinks": ["https://www.brothersplumbing.com/?source=gbp", "https://book.servicetitan.com/hrf65sbzfuyw4y6zrmjkjrhf?rwg_token=AE37R_gtJCJvJDu7_embMjeN23kkiD9-WauBZy0PhEGill_hGJWeL7hoVx2cJMtG0aJOXMAYiyFe3B5AgfgvxWZ3Cv18gIRW4A%3D%3D"] }, ...] }

That tookMs: 837 is the actual timing from the pull above. Maps searches answer in about a second, with limit up to 100 businesses each.

For the full parameter list and the head-to-head with the official Places API, see the Google Maps scraper API page.

WHAT YOU CAN EXTRACT

Every field, and one field you won't get

Each business comes back complete. No tiers, no add-on fees per field:

IdentityName · placeId · cid ContactPhone · website AddressStreet · city · state · zip ReputationRating · review count CategoryPrimary + all categories HoursFull weekly schedule LocationLat / lng StatusOpen · closed flags RankPosition in results PricingPrice level PhotoThumbnail URL BookingBooking links Not in MapsEmail
THE CATCH

No emails. Maps doesn't have them.

A Google Maps listing holds a phone number and a website, and that is where the contact trail ends. There is no email field in a Maps record, so we don't return one.

Tools that promise emails from Maps crawl each business website and guess. Some of those guesses land. Plenty bounce.

If your work needs verified emails on real people, that lives on our LinkedIn people search API (beta). Maps gives you the business. LinkedIn gives you the person.

THREE STEPS

How do you extract Google Maps data?

No code needed. From zero to a CSV in about two minutes:

  1. 1

    Create a free account. Try it free, no card needed.

  2. 2

    Type a search in the playground. Something like plumbers in Denver. The businesses land in a table.

  3. 3

    Click Download CSV. Every field becomes a column, ready for Sheets, Excel, or a CRM import.

With code: the JSON flattens in a few lines. Here it is in Python:

# pull up to 100 plumbers and write them to a CSV import csv, requests r = requests.get( "https://crustapi.com/v1/search", params={"type": "maps", "q": "plumbers in Denver, CO", "limit": 100}, headers={"x-api-key": "YOUR_KEY"}, ) places = r.json()["places"] cols = ["title", "address", "phone", "website", "categoryName", "totalScore", "reviewsCount"] with open("plumbers-denver.csv", "w", newline="") as f: w = csv.DictWriter(f, fieldnames=cols, extrasaction="ignore") w.writeheader() w.writerows(places)

The same call works from n8n, Clay, LangChain, CrewAI, or any tool that can hit a URL with a header.

PRICING

How much does the extractor cost?

You pay the Maps rate for each business a search returns. Forty businesses cost $0.0784 at standard Maps prices. Empty searches are free. Here is the deposit pricing:

DepositGoogle Search / 1,000 requestsMaps / 1,000 businessesLinkedIn reads / 1,000 requestsPeople, Jobs, Refresh / 1,000 units
$10+$1.00$1.96$6.00$1.96
$149+$0.76$1.49$4.50$1.49
$549+$0.56$1.10$3.30$1.10
$1,999+$0.41$0.80$2.45$0.80
$6,500+$0.33$0.65$1.95$0.65
$27,500+$0.28$0.55$1.65$0.55
$50,000+$0.26$0.50$1.50$0.50
$100,000+$0.20$0.40$1.50$0.40

Every eligible account gets $6 of free usage monthly. Each deposit keeps its prices until spent; paid funds never expire. People and Jobs bill per successful search, Refresh per accessible profile. Full profiles in People use the read rate per full profile. See all billing details.

Larger deposits unlock lower endpoint prices. Each deposit keeps its prices until spent. See the full deposit table on the pricing page. Prices in USD, ex-tax.

Funds are prepaid and never expire, so an unused pack waits for your next project.

Extract your first list free
Try it free. No card, no contract.
Try for free
WHO IT'S FOR

Who uses this extractor?

GO DEEPER

Extract the reviews too

Swap type=maps for type=reviews and any placeId from your extract returns the written Google reviews for that place: rating, text, author, date, with sorting and pagination. Reviews answer in about 0.3 seconds. Details on the Google Reviews API page.

# the reviews for that Denver plumber, newest first curl "https://crustapi.com/v1/search?type=reviews&placeId=ChIJszGcvzV0bIcR3_6j5Gru8sM&sortBy=newest" -H "x-api-key: YOUR_KEY"

Related: Google Maps Scraper API · Google Reviews API · Google Places API alternative · LinkedIn People Search API (beta)

FAIR PLAY

When something else is the better pick: if you need 20 rows once and never again, a free browser extension that grabs the page you're looking at is quicker than creating an API key. And if you're building live map features inside an app, Google's official Places API comes with an SLA and support contracts. Both are good at their jobs.

BEFORE YOU ASK

Common questions

No. Google Maps listings do not contain an email field, so no Maps extractor can pull one from the map itself. You get phone and website as the contact fields. If you need verified emails on people, our LinkedIn people search endpoints (beta) return them with each result.

Two ways. In the playground at /app, run your search and click Download CSV; every field becomes a column. In code, the JSON response flattens with a standard CSV writer in a few lines, like the Python example on this page.

Stated neutrally: logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, while Google's Terms prohibit automated access that violates instructions like robots.txt. We handle the collection; what you get is business data that's public on the map for anyone to see.

Up to 100 with the limit parameter. At standard Maps prices, 12 businesses cost $0.02352. Empty searches are free.

An extension grabs whatever page you are looking at, which is fine for one small list. An API runs on a schedule, covers many cities in one script, and feeds tools like Sheets, n8n, and Clay without you clicking anything. The free tier lets you test both ways at no cost.

Maps costs $1.96 per 1,000 businesses at standard prices, down to $0.40 for the largest deposit. Empty and failed searches are free. Every eligible account gets $6 of free usage monthly. Paid funds never expire.

WORKS WITH YOUR STACK

Run one extract on your city

The free plan covers a real list. Send one search and look at the JSON that comes back.

Try for free
No credit card required