← Use cases

Use case

Match a business list to Google Maps place IDs

Match messy business names and addresses to their Google Maps place: place ID, clean address, coordinates, phone, website and rating.

Say you run RevOps for a company that sells espresso machines to cafés and restaurants, and the sales team is about to split territories. Before anyone draws a line on a map you need the account list cleaned: reps have typed the same account three ways, half the rows have no phone, and some are just “starbucks lafayette ca 94549”. You cannot dedupe on a name that is spelled differently in every row. You can dedupe on Google’s place ID, and the Google Maps Place Matcher gives you one per business it can match, along with Google’s own spelling of the name and address.

The manual way, and what it costs

The public search form on Google Maps
Google Maps — the official search. One record at a time.

The free way is one Google Maps search per row. Type the line, open the right result, copy the address and phone back into the sheet, then move on to the next row. That is minutes per row, and a search result has no button that sends it to a sheet, so every value is copy-paste. You also have to judge each answer yourself: Google offers its closest guess even when the house number you typed is wrong, which is how a list fills up with the business next door. For a handful of accounts, do it by hand; it costs nothing and you will look at each place properly. Past a few dozen rows the copying becomes the job, and you still end up without the place ID to dedupe on.

The faster way

Google Maps Place Matcher: Business Lookup by Name & Address does the same search once and hands back every row at once.

{
  "queries": [
    "Blue Bottle Coffee 480 9th St Oakland",
    "starbucks lafayette ca 94549",
    "Joe's Pizza 7 Carmine St New York",
    "Franklin Barbecue Austin TX"
  ]
}

These 4 lines are the shapes a CRM export holds: a name with its street address, a lowercased chain name with a city and ZIP, a name with a street in New York, and a name with only a city and state. None of them needs cleaning first. If your export has its own account IDs, send it as rows instead, for example {"id": "crm-17", "name": "Tartine Bakery", "city": "San Francisco", "state": "CA"}, which in our test matched 600 Guerrero St and came back with input_id: "crm-17".

What comes back

{
  "input": "Blue Bottle Coffee 480 9th St Oakland",
  "input_id": null,
  "place_id": "ChIJLRIbILeAj4ARyWoMWFQmkSY",
  "name": "Blue Bottle Coffee",
  "address": "480 9th St, Oakland, CA 94607",
  "street": "480 9th St",
  "city": "Oakland",
  "state": "CA",
  "zip_code": "94607",
  "latitude": 37.8012466,
  "longitude": -122.2739477,
  "phone": "(510) 653-3394",
  "website": "https://bluebottlecoffee.com/us/eng/northern-california-cafes?utm_source=google&utm_medium=organic&utm_campaign=cafe_business_listing_norcal",
  "rating": 4.4,
  "review_count": 396,
  "categories": [
    "Coffee shop"
  ],
  "google_maps_url": "https://www.google.com/maps/search/?api=1&query=Blue%20Bottle%20Coffee&query_place_id=ChIJLRIbILeAj4ARyWoMWFQmkSY",
  "matched_by": "name + address",
  "confidence": "high",
  "other_matches": [],
  "source_url": "https://www.google.com/maps/search/?api=1&query=Blue%20Bottle%20Coffee&query_place_id=ChIJLRIbILeAj4ARyWoMWFQmkSY"
}
FieldExample valueMeaning
inputBlue Bottle Coffee 480 9th St OaklandWhat was looked up (your line, or a row’s fields joined)
input_id—The id you gave the row, echoed back
place_idChIJLRIbILeAj4ARyWoMWFQmkSYGoogle’s own place ID
nameBlue Bottle CoffeeThe place’s name on Google Maps
address480 9th St, Oakland, CA 94607Full address as Google Maps writes it
street480 9th StStreet line(s)

place_id closes the loop: two CRM rows with the same place ID are the same account, however the reps spelled them. phone fills the gaps, here (510) 653-3394 for the Oakland café. Then read confidence. The Lafayette Starbucks line matched 3343 Mount Diablo Blvd at “medium”, because Google answered with more than one Starbucks; the one at 3540 Mount Diablo Blvd is in other_matches. A chain with two stores on one street is exactly where a rep should confirm which one the account is.

What you’d do with it

Export the dataset to CSV and join it back to the CRM on input_id (or on input for plain lines). Add place_id as a field on the account, merge accounts that share one, and fill empty phone and website fields from Google’s values. Sort the “medium” and “low” rows into a short review queue for the reps. The free no-match rows are the other queue: in our 10-line test there were 3, and each named what Google offered instead, so fixing one is usually a matter of correcting a house number. Next quarter, match the new accounts only and join on the place IDs you already have.

Worth knowing

It was built and tested on US businesses and addresses. Outside the US a match keeps only its full address line, with no state or ZIP split out. The data is what Google Maps shows at the time of the run, so a place with no phone or website on Google Maps has none here. The match check compares numbers and name words; it can still pass a place at the same house number with a similar name, and it refuses a business whose Google Maps name shares too few words with the name you sent (send the name as Google Maps writes it, or the address alone). You cannot send a place ID to look up a place you already have the ID of.

The price is $0.0015 per matched input, so 1,000 matches cost $1.50, and no-match rows are free.


Run it yourself: How to run Google Maps Place Matcher: Business Lookup by Name & Address walks the whole thing step by step.

If the next step is outreach by email, the Business Email, Phone & Contact Details Scraper takes the matched websites and returns each business’s email and social links.

Last updated 2026-11-06