Find business details from Google Maps
Search for businesses and get their addresses, coordinates, and available listing details as JSON. Use the results to enrich a directory or research a local market.
Find the right place before collecting more
Search with a business name and city, or a category and map area. The response contains matching listings and the details available for each one, such as an address, website, and rating.
Check that a result matches the business you intended. Keep its place identifier when available, especially if you want to request reviews or more details later. Similar names and multiple branches can make a name-only match ambiguous.
For a larger list, search several areas and remove duplicates. One query does not cover every business in a city. Optional fields may be missing, and an email address may require a separate visit to the business’s website.
Try it step by step
Find the coordinates for an address or place
Send a complete address or business name and look up matching places. Read the coordinates and available listing details, or process a list of locations with the Python example.
View guideBuild a business list from Google Maps results
Search for a type of business in an area and collect the available listing details as JSON. The example combines several map searches into a CSV.
View guideTry a request
Search for a type of business around a map location. Each result includes the listing details available to the provider.
curl https://api.nativeport.ai/serper/maps \
-H "Authorization: Bearer $NATIVEPORT_API_KEY" \
-H "Content-Type: application/json" \
--data '{"q": "coffee roasters", "ll": "@37.7749,-122.4194,13z"}'{
"places": [{
"title": "Ritual Coffee Roasters",
"address": "1026 Valencia St, San Francisco, CA 94110",
"latitude": 37.7561, "longitude": -122.4213,
"phoneNumber": "+1 415-641-1011",
"website": "https://ritualroasters.com/",
"rating": 4.4, "ratingCount": 1893,
"category": "Coffee shop"
}]
}Compare providers
Compare starting prices and the tasks each provider supports. Features and usage affect the total cost. For measured results, see the benchmarks and how we test.
| Provider | Best suited for | Starting price |
|---|---|---|
| Serper | Search Maps or Places and retrieve listing details. | $0.001 per call |
| SerpApi | Get structured Maps and local-search results. | $0.025 per call |
| SearchAPI.io | Look up businesses through supported Maps endpoints. | $0.004 per call |
| Apify | Run a Maps Actor for bulk business collection. | metered by Apify |
| Oxylabs | Collect Maps data with supported scraping tools. | $0.0025 per call |
| Bright Data | Collect Maps listings for your data workflow. | $0.003 per call |
Build on an example
Set your NativePort API key and adapt an example to your own data. Outputs below illustrate the response format.
Enrich a list of business names with addresses and ratings
One request per input row. Check Serper pricing before processing a large list.import csv, json, os, sys, urllib.request
def place(q):
req = urllib.request.Request(
"https://api.nativeport.ai/serper/places",
data=json.dumps({"q": q}).encode(),
headers={
"Authorization": f"Bearer {os.environ['NATIVEPORT_API_KEY']}",
"Content-Type": "application/json",
},
)
with urllib.request.urlopen(req) as r:
hits = json.load(r).get("places") or []
return hits[0] if hits else {}
w = csv.writer(sys.stdout)
w.writerow(["query", "address", "phone", "rating"])
for line in sys.stdin:
q = line.strip()
if not q:
continue
p = place(q)
w.writerow([q, p.get("address", ""), p.get("phoneNumber", ""),
p.get("rating", "")])$ printf 'Ritual Coffee SF\nBlue Bottle Oakland\n' | python enrich.py query,address,phone,rating Ritual Coffee SF,"1026 Valencia St, San Francisco, CA 94110",+1 415-641-1011,4.4 Blue Bottle Oakland,"300 Webster St, Oakland, CA 94607",+1 510-653-3394,4.3
More ways to use these APIs
Fetch a business's Google Business Profile
Search with a business name and city to find its listing. Read the available
category, rating, and other details, and keep the place identifier for follow-up
requests. Review text can be requested separately through /serper/reviews.
Serper · /serper/places
Find a business website and its contact details
A maps listing may include a website URL. If you need an email address or other contact details, visit that site with a separate scraping request. Plan for this additional step when estimating the work and cost of enriching a business list.
Serper · /serper/places → /firecrawl/v2/scrape
Use it with NativePort
Use the Maps and Places providers here with your NativePort account. Your shared balance also covers follow-up review requests and visits to business websites.
Before you start
Do I need my own Google Maps Platform account?
No. These requests use the listed providers through NativePort. You only need your NativePort account and API key.
Can I collect all businesses in an area?
A maps search returns a page of results around a location. You can cover more ground with several queries and deduplication, or use a bulk collection tool such as an Apify Maps actor. Check the coverage and limits before treating the result as a complete dataset.
What should I do when a field is missing?
Treat listing fields as optional. Check for an address or coordinates before using a match, and allow missing phone numbers, websites, and ratings. The examples use optional field access where appropriate.