nvNeuralVerge
Company intelligence

Google Maps Search API and MCP — Local Businesses by Keyword and Area

Send one or more search terms and an area and this source returns matching places as data: name, categories, full address split into street, city, state and postal code, phone, website, star rating, review count, coordinates, opening hours by day, and whether the place is closed.

You send
Search terms plus an area (location, city, postal code, or custom shape)
You get back
Places with category, address, phone, website, rating, reviews, coordinates and hours
Coverage
Places listed on Google Maps, worldwide.
Price
5 points per returned place, plus 2 per place for each active filter — $5 per 1,000
Billed per place actually returned, capped by max_items per search term. Each active filter (categories, name matching, minimum rating, website, skip closed) adds 2 points per place. A search that finds nothing costs nothing.
Comparison

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
Searching the map by handSearch, click each pin, copy the detailsFree, and slowWorkable for ten places, not for a city
The Google Places APIA Google Cloud project, billing account and per-field pricingPay per request and per field groupCapable, but you build the pagination, area tiling and field selection yourself
NeuralVergeOne request per searchFrom $5 per 1,000 places, misses not billedReturns what the listing shows — owner-maintained fields like hours and website can be out of date
Response

What you get back

Every field in the example response below.

FieldTypeDescription
search_termsarrayThe terms searched.
locationstringThe area searched, as given.
active_filtersarrayWhich filters were applied — each adds 2 points per place.
points_per_placenumberWhat each returned place cost, filters included.
total_itemsnumberHow many places came back.
items[].place_idstringGoogle's place ID.
items[].namestringBusiness name.
items[].categorystringPrimary category, e.g. Coffee shop.
items[].categoriesarrayAll listed categories.
items[].addressstringFull formatted address.
items[].streetstringStreet address.
items[].neighborhoodstring | nullNeighbourhood, where shown.
items[].citystringCity.
items[].statestringState or region.
items[].postal_codestringPostal code.
items[].country_codestringISO country code.
items[].phonestring | nullPhone number as displayed.
items[].websitestring | nullBusiness website.
items[].ratingnumberAverage star rating.
items[].review_countnumberNumber of reviews.
items[].pricestring | nullPrice level, where shown.
items[].latitudenumberLatitude.
items[].longitudenumberLongitude.
items[].permanently_closedbooleanWhether the place is marked permanently closed.
items[].temporarily_closedbooleanWhether the place is marked temporarily closed.
items[].opening_hoursarrayHours for each day of the week.
items[].urlstringLink to the place on the map.
items[].ranknumberPosition in the map's results for the term.
Response

Example response

A real response, as returned.

{
  "session_id": "1aa2f23b-b749-4f3f-89b7-f6ea59ac24b1",
  "kind": "google_maps_search",
  "search_terms": ["coffee shop"],
  "location": "Austin, USA",
  "max_items": 1,
  "language": "en",
  "active_filters": [],
  "points_per_place": 5,
  "machine": {
    "total_items": 1,
    "partial": false,
    "items": [
      {
        "place_id": "ChIJq7RZDGczW4YRyCS5Z0KiiDE",
        "name": "Godsent Coffee",
        "category": "Coffee shop",
        "categories": ["Coffee shop"],
        "address": "9817 Anderson Mill Rd, Austin, TX 78750",
        "street": "9817 Anderson Mill Rd",
        "neighborhood": "Anderson Mill",
        "city": "Austin",
        "state": "Texas",
        "postal_code": "78750",
        "country_code": "US",
        "phone": null,
        "website": "https://www.godsentcoffee.com/",
        "rating": 5,
        "review_count": 244,
        "price": null,
        "latitude": 30.4464508,
        "longitude": -97.7971457,
        "permanently_closed": false,
        "temporarily_closed": false,
        "opening_hours": [
          { "day": "Monday", "hours": "7 AM to 3 PM" },
          { "day": "Tuesday", "hours": "7 AM to 3 PM" },
          { "day": "Wednesday", "hours": "7 AM to 3 PM" },
          { "day": "Thursday", "hours": "7 AM to 3 PM" },
          { "day": "Friday", "hours": "7 AM to 3 PM" },
          { "day": "Saturday", "hours": "8 AM to 3 PM" },
          { "day": "Sunday", "hours": "Closed" }
        ],
        "url": "https://www.google.com/maps/search/?api=1&query=Godsent%20Coffee&query_place_id=ChIJq7RZDGczW4YRyCS5Z0KiiDE",
        "search_term": "coffee shop",
        "rank": 11
      }
    ]
  },
  "total_points": 5
}
Integration

How to run it

The same lookup works from the app, the API, or as a tool an agent can call mid-task.

This endpoint is synchronous: the call blocks until the search completes and returns the places directly. search_terms is required (comma-separated, up to 5). Area: location (free text), or country, state, county, city and postal_code, or custom_geolocation (GeoJSON with a radiusKm). Optional: max_items (places per search term, 1-1,000, default 20), language. Filters — categories, search_matching (only_includes or only_exact), min_rating (two to fourAndHalf), website (withWebsite or withoutWebsite), skip_closed — each add 2 points per place. If a search hits its time budget, the response comes back with partial: true and the places collected so far.

curl -X POST https://api.neuralverge.ai/functions/v1/run-google-maps-search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "search_terms": "coffee shop, roastery", "location": "Austin, USA", "max_items": 100, "skip_closed": true }'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Local lead lists

List every business of a type in a city or postal code, with phone and website.

Territory planning

Use coordinates and addresses to split a market into routes and territories.

Market sizing

Count competitors or potential customers in an area, filtered by rating or category.

Website prospecting

Filter for businesses without a website — a ready list for agencies and site builders.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Places listed on Google Maps, worldwide.

Freshness

Read at request time.

Handling

This source returns business listing information that is publicly shown on the map, stamped with the search it came from and a session id you can trace.

What it will not do
  • —Phone, website and hours are maintained by the business owner and can be missing or out of date — the sample above has no phone.
  • —Results are ranked by the map, not by distance; rank shows where a place sat in the results.
  • —Review text isn't included here — only the rating and review count.
FAQ

Questions, answered

Yes — the search runs inside the request and the places come back in the same response, no polling. If it hits its time budget first, the response comes back with partial: true and the places collected so far; re-run with a smaller max_items for a complete result.

Related

Related sources

Try google maps search on your own data

One request format across every source in the catalog.

Get started