Google Places API Pricing, Decoded

Google bills per request across field tiers, reaches $35 per 1,000 for ratings and hours, and bars you from storing it. Here is the breakdown, plus a flat option you keep.

$35 / 1,000 Enterprise requests lat/lng cached 30 days max Flat pay-per-result, keep it
THE PRICING MODEL

How Google Places API pricing actually works

Google Places API pricing is not a single number. It is a stack of per-request SKUs, and the fields you ask for decide which tier you pay for that call.

The tiers run Essentials, Pro, and Enterprise. The basic name and address data sits in the cheaper tiers. The fields most people actually want, a business rating, phone number, website, and opening hours, land in the Enterprise tier, billed at $35.00 per 1,000 requests per Google's own usage-and-billing page (developers.google.com). Add reviews and atmosphere fields and you move to Enterprise plus Atmosphere at $40.00 per 1,000.

Two details make the real bill higher than the sticker. First, a Text Search returns up to 20 places per request. To read more than 20 you paginate, and each page is another billed request. Second, the old $200 monthly credit was retired in March 2025 and replaced with a per-SKU free allowance. Enterprise SKUs get roughly 1,000 free calls a month, Pro gets 5,000, Essentials gets 10,000, and the allowances no longer pool (developers.google.com/maps/billing-and-pricing/march-2025).

THE FINE PRINT

The rule most people miss: you cannot store the data

The line item is only half the cost. Google's Places policies restrict what you are allowed to keep after you pay for it.

Per Google's Places policies page (developers.google.com/maps/documentation/places/web-service/policies), an app may not pre-fetch, cache, or store Places content except in narrow cases. The place ID is the big exception and can be stored indefinitely. Latitude and longitude can be cached for up to 30 consecutive calendar days, then must be deleted. Everything else, the name, rating, phone, and hours you just paid Enterprise rates for, is meant to be fetched fresh each time you need it.

For a live map that shows one place on demand, that model is fine. For building a database of a market, a lead list, or anything you enrich and keep, you are renting the same rows over and over.

WHAT YOU GET BACK

One search, a full row per business

CrustAPI runs the same kind of query against Google Maps and hands back clean rows you can save. Here is a real shape for type=maps, shown as CSV because that is what most people paste into a sheet.

# GET https://crustapi.com/v1/search?type=maps&q=dentist+miami name,rating,reviewsCount,phone,website,city,category "Bright Smile Dental",4.8,412,"(305) 555-01••","brightsmilemia.com","Miami","Dentist" "Coral Way Orthodontics",4.6,208,"(305) 555-01••","coralwayortho.com","Miami">"Miami","Orthodontist" "Downtown Dental Care",4.9,631,"(305) 555-01••","ddcmiami.com","Miami","Dental clinic"

One call returns up to 100 businesses in about a second, with name, rating, review count, phone, website, full address, weekly hours, categories, and lat/lng on every row. There is no email field, Google Maps listings do not carry one, so nobody scraping Maps has it. When you need a verified work email, that comes from the LinkedIn profile endpoint, not from Maps.

curl "https://crustapi.com/v1/search?type=maps&q=dentist+miami" \ -H "x-api-key: YOUR_KEY"

The rows are yours. Save them, enrich them, resync them next quarter. Related reading: Google Maps API pricing and Google Maps scraper API.

SIDE BY SIDE

CrustAPI vs the official Places API

Same underlying business data. Different billing model and very different rules on what you can keep.

Google Places APICrustAPI
Billing unitPer request, field-tier SKUsPer successful result
Ratings + phone + website + hours$35 / 1,000 requests (Enterprise)Included on every row
Cost per result$35 / 1,000 requests, 20 results each$1.96 / 1,000 at entry, down to $0.40
Results per request20 (paginate for more, each billed)Up to 100
Store the data?place ID forever, lat/lng 30 days, rest noKeep everything, no time limit
Pay for zero results?Yes, the request bills either wayNo, empty search costs nothing
Star histogramNot availableOptional, per place
See a real Maps pull in the playground
Run type=maps on 3,000 free credits a month, no card.
Get started →
WHAT YOU PAY

Flat pay-per-result, credits that never expire

One rule: 1 credit equals 1 business we actually return. A search that finds 40 places costs 40 credits. A search that finds nothing costs nothing.

The free tier is 3,000 credits every month with no card. Prepaid packs start at 25k for $49, which works out to $1.96 per 1,000 results at the entry price. Bigger packs drop the rate: 100k for $149, 500k for $549, on up to 250M for $100,000, where the effective rate falls to about $0.40 per 1,000. Credits never expire, so a slow month does not burn them. See the full Maps pricing page for the pack table.

THE TRADE-OFFS

When the official Places API is the right call

We are not the answer for every use case. Here is where Google's own API wins.

WHEN THEY WIN

You need Google's own contract: If your product must display live, Google-sanctioned place data with an uptime SLA, official support, and a signed terms relationship, buy from Google directly. That contract and that guarantee are exactly what you are paying the per-request premium for, and we do not replace them.

Related: Google Places API alternative · Google Maps scraper API · Google Maps API pricing

BEFORE YOU ASK

Common questions

WORKS WITH YOUR STACK

Stop renting your own data back from Google

The official Places API makes you fetch every field fresh and delete most of it on a timer. CrustAPI returns the same business records as clean rows, priced per result, yours to keep. Start on 3,000 free credits a month with no card.

Get 3,000 free credits
No credit card required