Build a dentist database from live Google Maps data

Pulled fresh from Google Maps, past 1,000 practices per major metro.

Free to try, no card 1,006 dentists in our Miami sweep ~1 second responses
PULLED LIVE FROM THE API, AUGUST 4, 2026

What data do you get?

This exact request ran while writing this page. It returned 5 Miami practices in about a second. Here is the first row, as CSV and as JSON. Phone digits are masked on this page; the API returns them in full.

# every practice in the results costs one request charge; zero results cost nothing curl "https://crustapi.com/v1/search?type=maps&q=dentists%20in%20Miami,%20FL&limit=5" -H "x-api-key: YOUR_KEY"
# the first practice as CSV (same values as the JSON view below)
titleaddressphonewebsitecategoryNametotalScorereviewsCountlatlngcitystatepostalCode
Relax and Smile Dental Care271 NE 2nd St, Miami, FL 33132(786) 9••-••12https://www.relaxandsmile.com/?utm_source=GMB&utm_medium=organic&utm_campaign=DevOptimization&utm_content=WebsiteDentist4.991325.7763227-80.1887702MiamiFlorida33132
// the same practice as JSON (the full field shape): { "title": "Relax and Smile Dental Care", "placeId": "ChIJ8WVD9Z622YgRTsE_RcBq1Qk", "address": "271 NE 2nd St, Miami, FL 33132", "phone": "(786) 9••-••12", "website": "https://www.relaxandsmile.com/?utm_source=GMB&utm_medium=organic&utm_campaign=DevOptimization&utm_content=Website", "categoryName": "Dentist", "categories": ["Dentist", "Cosmetic dentist", "Dental hygienist", ...], "totalScore": 4.9, "reviewsCount": 913, "openingHours": { "Monday": "12-7 PM", "Tuesday": "10 AM-6 PM", ... }, "location": { "lat": 25.7763227, "lng": -80.1887702 }, "city": "Miami", "state": "Florida", "postalCode": "33132" }

The other four rows carry the same shape. One of them, Alfonso Dental Miami, came back with a 5.0 rating across 1,012 reviews. Set limit up to 100 practices per search.

THREE STEPS

How do you get started?

No code needed. From zero to a CSV of practices 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 dentists in Miami. The practices land in a table.

  3. 3

    Click export. Download the CSV and open it in Sheets or Excel. Done.

Developers: skip the playground. Copy your key from the dashboard and run the curl above. Same data, as JSON.

WHAT EVERY PRACTICE INCLUDES

The full record on each dentist

Every practice comes back complete. No field tiers, no per-column upcharges:

IdentityName · placeId ContactPhone · website AddressStreet · city · state · zip ReputationRating · review count SpecialtyOrthodontist · oral surgeon · all categories HoursFull weekly schedule LocationLat / lng

One thing you will not find: an email field. Google Maps listings do not carry one, so no Maps-sourced dentist database has emails from Maps. There is a clean way to add them, covered below.

PAST THE 100-RESULT CAP

Sweep a whole metro

One search returns up to 100 practices, and a major metro holds far more. CrustAPI sweeps the whole metro and returns every practice, deduplicated. Our Miami sweep found 1,006 distinct dentist practices.

# one call sweeps the whole metro, deduplicated for you curl "https://crustapi.com/v1/search?type=maps&q=dentists%20in%20Coral%20Gables,%20FL&limit=100" -H "x-api-key: YOUR_KEY" curl "https://crustapi.com/v1/search?type=maps&q=dentists%20in%20Little%20Havana,%20Miami,%20FL&limit=100" -H "x-api-key: YOUR_KEY" curl "https://crustapi.com/v1/search?type=maps&q=dentists%20in%2033176&limit=100" -H "x-api-key: YOUR_KEY"

You only pay for practices that come back, so a full-metro sweep only ever costs the dentists it actually returns. The same endpoint works for any vertical; the Google Maps Scraper API page covers it in general form.

THE TRADE-OFFS

vs buying a static list

Most dentist databases for sale are flat files compiled at some point in the past. Practices move, close, rebrand, and change phones all year. Here is the trade, stated plainly:

A static list fileCrustAPI
FreshnessSnapshot from whenever it was compiledPulled from Google Maps at request time
CoverageFixed row count, set by the vendorWhatever is on the map today; 1,006 in our Miami sweep
Ratings + review countsVaries by vendorOn every practice
Hours + categoriesVaries by vendorFull weekly schedule + all specialty categories
EmailsOften included, a real advantageSeparate step via the LinkedIn people endpoints
ReuseOne file, one point in timeRerun any time; one charge per practice, empties free
FAIR PLAY

When a static list is the better pick: you need emails in one flat file today, you are running a single one-time campaign where speed to send beats freshness, or you want zero technical steps of any kind. Good list vendors clean, dedupe, and verify their files, and that work has real value.

PRICING

How much does a dentist database cost?

You pay the Maps rate for each practice a search returns. A search that returns nothing costs nothing. Here is what real pulls cost:

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.

Paid funds never expire. At standard Maps prices, 1,000 practices cost $1.96. Larger deposits get lower rates.

Pull your first city free
Try it free. No card, no contract.
Try for free
WHO USES IT

Who uses this data?

Dental SaaS teams

Count practices per metro to size territories, build target-account lists for sales, and enrich signups with rating and review counts so reps know who they are talking to.

Suppliers and labs

Every practice with a street address and a phone number, mapped by lat/lng. Route planning, territory splits, and call lists come straight out of the same JSON.

Marketers and agencies

Local SEO pitches land harder with the prospect's own numbers. One Miami practice in our sample sits at 4.9 stars with 913 reviews; its neighbors do not. That gap is the pitch.

Review text itself is one parameter away: type=reviews with a placeId returns the actual Google reviews for any practice, about 0.3s per call. Details on the Google Reviews API page.

THE MISSING COLUMN

How do you get emails?

Maps gives you the practice: phone, website, address. It does not give you an email, because listings do not have one.

When outreach needs emails, LinkedIn people search (beta) finds the dentist or office manager behind the practice. People results include a verified email where one can be found and checked.

# find the people behind the practices (people search, beta); enrich pulls the full public profile curl "https://crustapi.com/v1/linkedin?type=search&keywords=dentist practice owner Miami&enrich=true" \ -H "x-api-key: YOUR_KEY"

The usual flow: practices from Maps first, then a people search on the ones worth a personal email. Both run on the same key and the same balance. Full detail on the LinkedIn People Search API (beta) page.

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

BEFORE YOU ASK

Common questions

Up to 100 with the limit parameter, billed at one charge per practice actually returned. A search that finds none costs nothing. To cover a whole metro, ask for the full sweep and CrustAPI returns every practice, deduplicated for you, past the 100-per-search cap; that is how our Miami sweep reached 1,006 practices.

No. Maps records carry name, address, phone, website, rating, review count, categories, and hours. Google Maps listings do not have an email field, so no Maps-sourced list gets emails from Maps. For emails, the LinkedIn people endpoints return a verified email on people results, so the usual flow is practices from Maps, then people and emails from LinkedIn.

It is pulled from Google Maps at the moment you ask. Nothing on this page comes from a stored file. A typical maps search returns in about a second; the sample above took about a second.

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 is public on the map for anyone to see.

Our Miami sweep found 1,006 practices. At standard Maps prices those records cost $1.97176. The $6 monthly allowance can cover that example, and paid funds never expire.

Yes. The playground at /app runs any search from the browser and shows the rows in a flat table. It also plugs into Clay, n8n, and MCP if you already work there, plus LangChain and CrewAI on the code side.

WORKS WITH YOUR STACK

Pull the dentists in your metro

The free plan covers a full metro sweep. Run one search and look at the JSON that comes back.

Try for free
No credit card required