Google Maps Scraper API
What a Google Maps listings scraper returns, which fields you can count on, where hotel cards differ, and what 1,000 places cost with each tool.
For business listings as data, the most used tools are Apify's Google Maps Scraper ($4.00 to $1.50 per 1,000 places by Apify plan) and Outscraper (500 places free, then $3 per 1,000), both of which add emails and full reviews for extra fees. Ujeebu's SERP API returns the listing itself (place_id, cid, address, phone, website, rating, review count, opening hours, GPS) with search_type=maps: 5 credits for a page of up to 20 places, so 1,000 places cost $0.04 to $0.08 on the $49 plan. In 637 probe responses for business searches between October 14 and November 1, 2026, every page had 20 places, and place_id, address, rating and GPS were filled on all of them (phone and website on 67% to 100%, depending on the market); hotel searches are the exception, with 9 cards and no address or IDs.
Disclosure: Ujeebu publishes this page and sells one of the tools on it. Our numbers come from our own calls and monitoring; competitor prices link to their pages.
What is the best scraper for Google Maps business listings?
It depends on what you need beyond the listing itself. When our AI Citation Index put this question and a lead-generation variant to ChatGPT, Gemini and Google AI Overviews 50 times (October 5 to 30, 2026), Apify was named in 41 answers, Octoparse in 16 and PhantomBuster in 10, and the answers cited apify.com 37 times and outscraper.com 31 times. Those tools sell enrichment on top of the Maps list:
- Apify Google Maps Scraper runs as a job on Apify, opens each place page and can add contact details, reviews, images and lead data, each priced per place.
- Outscraper is a no-code service with an API, priced per 1,000 places after 500 free, with reviews and email enrichment as separate products.
- Ujeebu SERP API returns the Maps result list as JSON in one synchronous call, priced per page of results, with the same key you use for web search and scraping. It does not open each place page, so there are no review texts, emails or popular times.
Which fields does a Google Maps API return?
Every business place carries title, category, address, phone, website, rating, reviews (the review count), opening_hours (as Google words it, for example "Closed · Opens 8 AM Mon"), gps_coordinates, and three identifiers: place_id (the one the Google Places API uses), cid (the number in maps.google.com/?cid= links) and feature_id. Use place_id as your primary key.
curl -G 'https://api.ujeebu.com/serp' \
-H 'ApiKey: YOUR_API_KEY' \
--data-urlencode 'search=dentists in Chicago, IL' \
-d 'search_type=maps'
{
"maps_results": [
{
"position": 1,
"title": "Dental Group of Chicago",
"category": "Dentist",
"address": "1556 S Michigan Ave #200, Chicago, IL 60605",
"phone": "(872) 328-4304",
"website": "https://dentalgroupofchicago.com/?utm_campaign=gmb&utm_medium=local&utm_source=google",
"rating": 4.7,
"reviews": 852,
"opening_hours": "Closed · Opens 8 AM Mon",
"gps_coordinates": { "latitude": 41.860397, "longitude": -87.624245 },
"cid": "12220838318085764726",
"place_id": "ChIJKVJwBIQsDogRdvb7lrMjmak",
"feature_id": "0x880e2c8404705229:0xa99923b396fbf676",
"description": "Dental Group of Chicago are exceptionally caring professionals.",
"thumbnail": "https://lh3.googleusercontent.com/grass-cs/..."
},
"... 20 places in total"
],
"pagination": { "api": { "next": "https://api.ujeebu.com/serp?...&page=2&search_type=maps&" } }
}
Trimmed from a real call made on November 1, 2026: HTTP 200, Ujb-Credits: 5, 2.6 seconds, 20 places, all 20 with a Chicago street address, place_id, cid, GPS, phone, website, rating and review count, 19 of 20 with opening hours.
How complete is Google Maps data? Fill rates we measured
Method: our health check sends one Maps search every 30 minutes through the public API with a normal customer key, rotating four fixed queries (pizza chicago, bookstore london, coffee shop new york, hotel paris). Since October 14, 2026 every response is scored against a field contract: a field counts as filled for a place when it is present and not empty. The table averages those per-run shares from October 14 to November 1 (836 scored runs: 637 business, 199 hotel). The 1,059 figure further down counts every Maps probe since October 10, including the four days before field scoring began.
| Field | pizza chicago (213 runs) | bookstore london (212) | coffee shop new york (212) | hotel paris (199) |
|---|---|---|---|---|
| Places per page | 20 | 20 | 20 | 9 |
| place_id or cid | 100% | 100% | 100% | 0% |
| address | 100% | 100% | 100% | 0% |
| rating and reviews | 100% | 100% | 100% | 93.6% |
| gps_coordinates | 100% | 100% | 100% | 0% |
| phone | 99.8% | 100% | 67.1% | 0% |
| website | 98.6% | 100% | 93.5% | 0% |
| opening_hours | 100% | 100% | 100% | 0% |
Source: Ujeebu health_serp_fields table, read November 1, 2026. Phone numbers are the field that varies most by market: a third of New York coffee shops listed none. Over the same probes, 20 of 1,059 Maps searches came back with HTTP 200 and no places; an empty answer is still an answer and was billed 5 credits, while the 2 gateway errors on October 14 cost nothing.
Why hotel searches return fewer fields
For lodging queries Google does not show its business list; it shows Google Hotels cards. A search for "hotels in Lisbon" on November 1, 2026 returned 9 cards with title, price (for example "$37"), rating, review count, a short description and amenities such as "Pool" and "Free Wi-Fi", and a link to google.com/travel. None had an address, phone, website, GPS, place_id or cid, because Google gives none of these on the cards. Our probe for "hotel paris" shows the same 9-card pattern on every run.
Of the fields a hotel card does carry, rating and review count were filled on 93.6% of cards across 199 probe runs, category (for example "3-star hotel") on 52.9% and a photo on 48.1%. Prices are the nightly rate Google shows for default dates, as text with a currency sign. So a lodging query is good for a price and rating snapshot of a city, not for building a hotel directory: for addresses and IDs you need a second lookup per hotel, by name, or the hotel's own website.
Google Maps scraper price per 1,000 places
A Ujeebu Maps call costs 5 credits per page. The first page held 20 places in every business probe; page 2 of our Chicago search held 10 more, one of them a repeat. Worked example for 1,000 unique places from first pages only: 50 calls x 5 credits = 250 credits, plus about 2% for empty answers that are still billed (20 of 1,059 probes) = 255 credits. On Starter ($49 for 300,000 credits, $0.000163 a credit) that is $0.042. Collecting from second pages instead (9 new places per 5 credits) costs about 560 credits, or $0.09.
| Tool | Entry price | Volume price | Free allowance | What the price covers |
|---|---|---|---|---|
| Ujeebu SERP API (maps) | $0.04 to $0.08 (Starter $49); $0.06 to $0.12 (pay as you go) | $0.02 to $0.03 (Business $999) | 5,000 trial credits (up to 20,000 places) | The Maps list fields; no review texts or emails |
| Apify Google Maps Scraper | $4.00 per 1,000 (Apify free plan) | $1.50 (higher Apify plans) | $5 platform credit a month on the free plan | Place pages; contacts, reviews and images cost extra per place |
| Outscraper | $3.00 per 1,000 (501 to 100,000 places) | $1.00 (after 100,000) | First 500 places | Places; reviews and emails are separate, same tiers |
| SerpApi (google_maps) | $1.25 (Starter $25, 20 places a page) | $0.30 (Volume $1,475) | 250 searches a month | The Maps list, 1 search per page |
How we normalized: Ujeebu plan price divided by plan credits, times 5 credits, divided by 20 (first page) or 10 (second page) places. SerpApi: $25 / 1,000 searches / 20 places = $1.25 per 1,000 places on Starter, $1,475 / 250,000 / 20 = $0.30 on Volume, assuming one search per page of 20, which its pricing page implies but does not state for Maps. Apify prices are per scraped place by Apify plan tier ($0.004 down to $0.0015), from the actor's public pricing.
How to scrape Google Maps listings for lead generation
- Put the place in the query. "dentists in Chicago, IL" returned 20 Chicago street addresses out of 20, with no location parameter at all.
- Prefer more queries over deeper pages. A first page gives 20 places for 5 credits; our page 2 gave 9 new places for the same 5 credits. Twenty neighbourhood or ZIP code queries cost less per place than paging one city query.
- Deduplicate on place_id and renumber. Page 2 of our Chicago search restarted its positions at 1 and repeated 1 place from page 1.
- Expect phone gaps by market. 99.8% of Chicago pizza places and 100% of London bookshops listed a phone, but only 67.1% of New York coffee shops did. Plan a website lookup for the rest.
- Get emails from the websites, not per-place fees. The website field was filled on 93.5% to 100% of business places. Fetching each site's contact page with the Scrape API costs 1 credit for a plain page.
See all search types on the SERP API page or try a Maps search in the Playground.
Frequently asked questions
What is the best scraper for Google Maps business listings?
How much does it cost to scrape 1,000 Google Maps places?
Does a Google Maps API return place_id and cid?
Can I get Google Maps reviews and emails through the API?
How many results does one Google Maps search return?
Is a failed Google Maps search billed?
Ujeebu figures come from our own API calls and health probes; competitor facts come from each vendor's public pricing and documentation pages, checked on . Prices change; check the vendor page before you buy.
Ujeebu publishes this page and sells one of the products on it. We do our best to keep it accurate and fair; if you see an error or a price that changed, please let us know.
Test it on your own targets
Benchmarks and price tables only go so far. Run your real URLs through two or three of these APIs during their free trials and compare success rate and cost per successful page.