Playbook · Lead Generation
Match a list of company names or addresses to their Google Maps listings
Send a business name with its address or city and get back the matching Google Maps listing: place ID, phone, website, rating and whether it is still open.
In short
Call /search with the business name and address as the query and limit=1. The top result is the matching Google Maps listing, with place ID, phone, website, rating and business_status.
The use case
CRM exports, supplier lists and business registries usually hold a name and an address, but no phone number, website or place ID. Matching each row to its Google Maps listing fills those in and tells you whether the business still operates. It is the first step of most local-business enrichment.
Who does this: B2B data vendors and lead-gen tools enriching company lists, KYB and onboarding teams checking that a business exists at its address, provider directories matching clinics to locations, and CRM cleanup projects.
How to do it
Uses the Local Business Data API, tested live on October 27, 2026. Call /search with the name and address as the query and limit=1 to get the single best match:
import requests
r = requests.get(
"https://api.openwebninja.com/local-business-data/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"query": "Tartine Bakery, 600 Guerrero St, San Francisco, CA", "limit": 1, "region": "us"},
)
b = r.json()["data"][0]
print(b["name"], "|", b["full_address"])
print(b["phone_number"], b["website"], b["business_status"])
print(b["rating"], b["review_count"], b["place_id"])Tartine Bakery | Tartine Bakery, 600 Guerrero St, San Francisco, CA 94110
+14154872600 http://www.tartinebakery.com OPEN
4.5 5989 ChIJBVY2Bxh-j4ARa2zO8Jd6H2A{
"status": "OK",
"request_id": "3f9ed5c4-2601-472a-8d11-bd43e62b751c",
"parameters": {
"query": "Tartine Bakery, 600 Guerrero St, San Francisco, CA",
"language": "en",
"region": "us",
"lat": 37.09024,
"lng": -95.712891,
"zoom": 13,
"limit": 1,
"offset": 0,
"extract_emails_and_contacts": false
},
"data": [
{
"business_id": "0x808f7e1807365605:0x601f7a97f0ce6c6b",
"google_id": "0x808f7e1807365605:0x601f7a97f0ce6c6b",
"place_id": "ChIJBVY2Bxh-j4ARa2zO8Jd6H2A",
"google_mid": "/m/03gmfm5",
"phone_number": "+14154872600",
"name": "Tartine Bakery",
"latitude": 37.761434699999995,
"longitude": -122.42408209999999,
"full_address": "Tartine Bakery, 600 Guerrero St, San Francisco, CA 94110",
"review_count": 5989,
"rating": 4.5,
"timezone": "America/Los_Angeles",
"opening_status": "Closed · Opens 7:30 AM",
"working_hours": {
"Tuesday": [
"7:30 AM–6 PM"
],
"Wednesday": [
"7:30 AM–6 PM"
],
"Thursday": [
"7:30 AM–6 PM"
],
"Friday": [
"7:30 AM–6 PM"
],
"Saturday": [
"7:30 AM–6 PM"
],
"Sunday": [
"7:30 AM–6 PM"
],
"Monday": [
"7:30 AM–6 PM"
]
},
"opening_date": null,
"website": "http://www.tartinebakery.com",
"tld": "tartinebakery.com",
"verified": true,
"place_link": "https://www.google.com/maps/place/data=!3m1!4b1!4m2!3m1!1s0x808f7e1807365605:0x601f7a97f0ce6c6b",
"cid": "6926389544917822571",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJBVY2Bxh-j4ARa2zO8Jd6H2A&q=Tartine+Bakery,+600+Guerrero+St,+San+Francisco,+CA&authuser=0&hl=en&gl=US",
"owner_id": "109295495909628879040",
"owner_link": "https://maps.google.com/maps/contrib/109295495909628879040",
"owner_name": "Tartine Bakery",
"booking_link": null,
"reservations_link": null,
"business_status": "OPEN",
"type": "Bakery",
"subtypes": [
"Bakery",
"Breakfast restaurant",
"Cafe",
"Lunch restaurant",
"Restaurant"
],
"subtype_gcids": [
"bakery",
"beverages",
"breakfast_restaurant",
"cafe",
"coffee",
"eatery",
"establishment",
"establishment_poi",
"feature",
"food",
"food_and_drink",
"food_products",
"food_store",
"lunch_restaurant",
"public_api_establishment",
"restaurant",
"restaurant_or_cafe",
"shopping",
"store"
],
"photos_sample": [
{
"photo_id": "CIABIhCe-nzM9Puhxxwqk7_Oc4io",
"photo_url": "https://lh3.googleusercontent.com/grass-cs/AABkmLdpnBhUn2JxRFV6-dXRubxbr9TRy1m2VyT2i1q5goyPXox9TT-d9rP-86mBDf6hBuvdbq9UJzFLaLvPIQ0CAxfIx-uV31NUopEvNuJpZf0SJR8FSgKWfKmpixkD0jjScmwm7f_0Nz1EvVFA",
"photo_url_large": "https://lh3.googleusercontent.com/grass-cs/AABkmLdpnBhUn2JxRFV6-dXRubxbr9TRy1m2VyT2i1q5goyPXox9TT-d9rP-86mBDf6hBuvdbq9UJzFLaLvPIQ0CAxfIx-uV31NUopEvNuJpZf0SJR8FSgKWfKmpixkD0jjScmwm7f_0Nz1EvVFA=w4032-h3024-k-no",
"video_thumbnail_url": null,
"latitude": 37.76143470264242,
"longitude": -122.42408206340374,
"type": "photo",
"photo_datetime_utc": "2026-03-10T00:00:00.000Z",
"photo_timestamp": 1773100800
},
{
"photo_id": "N5VKNy-9psEpFOykD4mXMQ",
"photo_url": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=N5VKNy-9psEpFOykD4mXMQ&cb_client=search.gws-prod.grass&w=114&h=120&yaw=171.78723&pitch=0&thumbfov=100",
"photo_url_large": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=N5VKNy-9psEpFOykD4mXMQ&cb_client=search.gws-prod.grass&w=13312&h=6656&yaw=171.78723&pitch=0&thumbfov=100",
"video_thumbnail_url": null,
"latitude": 37.76145623849599,
"longitude": -122.42406097897575,
"type": "photo",
"photo_datetime_utc": "2019-10-06T00:00:00.000Z",
"photo_timestamp": 1570320000
},
{
"photo_id": "SCUS4fAPH9K1njvjxieUrg",
"photo_url": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=SCUS4fAPH9K1njvjxieUrg&cb_client=search.gws-prod.grass&w=114&h=120&yaw=248.12444&pitch=0&thumbfov=100",
"photo_url_large": null,
"video_thumbnail_url": null,
"latitude": 37.76150000944703,
"longitude": -122.42387631722642,
"type": "street_view",
"photo_datetime_utc": "2025-03-26T00:00:00.000Z",
"photo_timestamp": 1742947200
},
{
"photo_id": "CIABIhB2SNwZfSrFFRZt052s68YW",
"photo_url": "https://lh3.googleusercontent.com/grass-cs/AABkmLdy9CDcbbtjo_lWIdjc2s4kQEL8ryB_Pux0BCpbWMz2H87TtLTB7eqGzAffvYROv4aOurj52lI9c8iNu4oORgHG1PgZR0GY7Ot3-ag-Ilj7Wz-Zlhw14DVFAOnrHD3HI98uHWA8LyQq-H8",
"photo_url_large": "https://lh3.googleusercontent.com/grass-cs/AABkmLdy9CDcbbtjo_lWIdjc2s4kQEL8ryB_Pux0BCpbWMz2H87TtLTB7eqGzAffvYROv4aOurj52lI9c8iNu4oORgHG1PgZR0GY7Ot3-ag-Ilj7Wz-Zlhw14DVFAOnrHD3HI98uHWA8LyQq-H8=w8160-h6144-k-no",
"video_thumbnail_url": null,
"latitude": 37.76143470264242,
"longitude": -122.42408206340374,
"type": "photo",
"photo_datetime_utc": "2026-10-27T00:00:00.000Z",
"photo_timestamp": 1793059200
}
],
"reviews_per_rating": {
"1": 152,
"2": 144,
"3": 386,
"4": 1163,
"5": 4144
},
"photo_count": 10469,
"about": {
"summary": "Organic ingredients provide the makings for breakfast pastries, hot pressed sandwiches & coffee.",
"details": {
"Accessibility": {
"Wheelchair accessible entrance": true
}
}
},
"address": "600 Guerrero St, San Francisco, CA 94110",
"order_link": "https://www.google.com/searchviewer/42?cvd=CLw_EiQKIuICHzIdEhYiFNLX29IPDgoKL20vMDNnbWZtNRgAOgMI8A0%3D&hl=en-US&gl=us&fo_m=MfohQo559jFvMUOzJVpjPL1YMfZ3bInYwBDuMfaXTPp5KXh-&gei=4nLgatGOCfXR5NoPwO2EyQc&ei=4nLgatGOCfXR5NoPwO2EyQc&fo_s=OA%2CSOE&opi=79508299&ebb=1&cs=0&foub=mcpp",
"price_level": "$10–20",
"district": "Mission Dolores",
"street_address": "600 Guerrero St",
"city": "San Francisco",
"zipcode": "94110",
"state": "California",
"country": "US",
"hotel_price_for_dates": "French pastries, breads & sandwiches",
"keywords_mentioned_in_reviews": [
{
"keyword": "morning bun",
"review_count": 237
},
{
"keyword": "bread pudding",
"review_count": 150
},
{
"keyword": "limited seating",
"review_count": 8
},
{
"keyword": "croissants",
"review_count": 183
},
{
"keyword": "lemon tart",
"review_count": 71
},
{
"keyword": "outdoor seating",
"review_count": 14
},
{
"keyword": "chocolate croissant",
"review_count": 76
},
{
"keyword": "banana cream pie",
"review_count": 48
},
{
"keyword": "Coconut Cake",
"review_count": 18
},
{
"keyword": "almond croissant",
"review_count": 34
}
]
}
]
}For a whole list
Most teams run this over a spreadsheet. One row per company with the matched name, address, phone, website, status and place ID:
import csv
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.openwebninja.com/local-business-data/search"
companies = [ # name, address or city, country code
("Tartine Bakery", "600 Guerrero St, San Francisco, CA", "us"),
("Blue Bottle Coffee", "66 Mint St, San Francisco, CA", "us"),
("Café Central", "Herrengasse 14, Wien", "at"),
("Starbucks", "Seattle, WA", "us"),
]
with open("matched.csv", "w", newline="") as f:
w = csv.writer(f)
w.writerow(["input_name", "matched_name", "address", "phone", "website", "status", "place_id"])
for name, where, region in companies:
r = requests.get(URL, headers={"x-api-key": API_KEY}, params={
"query": f"{name}, {where}", "limit": 1, "region": region,
}, timeout=60)
hits = r.json().get("data") or []
b = hits[0] if hits else {}
w.writerow([name, b.get("name"), b.get("full_address"), b.get("phone_number"),
b.get("website"), b.get("business_status"), b.get("place_id")])input_name,matched_name,address,phone,website,status,place_id
Tartine Bakery,Tartine Bakery,"Tartine Bakery, 600 Guerrero St, San Francisco, CA 94110",+14154872600,http://www.tartinebakery.com,OPEN,ChIJBVY2Bxh-j4ARa2zO8Jd6H2A
Blue Bottle Coffee,Blue Bottle Coffee,"Blue Bottle Coffee, 66 Mint St, San Francisco, CA 94103",+15106613510,,CLOSED_PERMANENTLY,ChIJ4QU1LoSAhYAR5u7S0AIFmpE
Café Central,Café Central,"Café Central, Herrengasse 14, 1010 Wien",+4315333763,https://www.cafecentral.wien,CLOSED_TEMPORARILY,ChIJLzsM95cHbUcRSS5C-z-H-ls
Starbucks,Starbucks Coffee Company,"Starbucks Coffee Company, 1912 Pike Pl, Seattle, WA 98101",+12064488762,https://www.starbucks.com/store-locator/store/11676,OPEN,ChIJryqIewBrkFQRkWfQIS8mzpcFour rows took 10 seconds. To send several companies in one request, POST /search accepts up to 20 queries.
Good to know
- Check business_status. Blue Bottle Coffee at 66 Mint St matched correctly and is CLOSED_PERMANENTLY; Café Central in Vienna is CLOSED_TEMPORARILY.
- Give an address, not just a city. "Starbucks, Seattle, WA" returned one store (1912 Pike Pl), not the company. Compare the matched name and address with your input before trusting a row.
- Set region to the country (region=at for Vienna above) so the search runs on that country's Google Maps.
- No match returns an empty data list, so the script writes a row with blank fields you can review.
Frequently asked questions
How do I match a list of European company names and addresses to Google Maps?
Yes. Set region to the country code (for example at, de or hu) and include the city or street address in the query.
How do I enrich a CSV of thousands of business names with phone numbers and websites from Google Maps?
Loop over the rows as in the script above, sending requests in parallel up to your plan's rate limit, or send up to 20 queries per POST /search request.
Can I also get each business's email address and social profiles in the same call?
Yes. Add extract_emails_and_contacts=true and each business gets an emails_and_contacts field taken from its website.
Check the Amazon buy box and every seller's price for any ASIN
One API call per ASIN returns the buy box winner and every competing offer, with shipping, FBA status and the delivery date for your ZIP code.
Real-Time Amazon Data
Get today's Amazon deals filtered by discount, rating and category
One call returns 30 current Amazon deals with deal price, list price, discount and ASIN, filtered the way Amazon's deals page filters them.
Real-Time Amazon Data
Look up an Amazon seller and every product they sell
From a seller ID, get the seller's business name and address, rating and feedback, then page through every product they sell.
Real-Time Amazon Data
Start building with real-time web data
Every API includes a free tier. No credit card required, and the first request is a minute away.