Local Business Search API

Local business search data, without the Google Maps Platform bill

/search/places and /search/maps return the local businesses Google's own Local Pack shows for a query — name, address, phone, hours, rating, and category — as one JSON response. No GCP project, no per-field SKU tiers, one flat rate per call.

GET/api/v1/search/web?q=postgres+connection+pooling&num=3
200 OK0.17s1 credit85,000 results
{  "searchTime": 0.17,  "totalResults": 85000,  "page": 1,  "organic": [    {      "position": 1,      "title": "31.10. Connection Pools and Data Sources",      "link": "www.postgresql.org/docs/…",      "domain": "postgresql.org",      "snippet": "For an environment without an application se…"    },    { "position": 2, "domain": "medium.com", … },    { "position": 3, "domain": "stackoverflow.blog", … }  ],  "credits": 1}

What's an alternative to Google's Places API for local business search data?

Searlo's /search/places and /search/maps return the local businesses Google's own Local Pack shows for a query — name, address, phone, hours, rating, and category — as one JSON response, for 1 credit per call. Google's comparable Places API (New) calls are billed per SKU, from $25 to $32 per 1,000.

That is the honest scope: Searlo has no map tiles, geocoding, or routing — for those, a real Maps Platform vendor (or Google's own SDK) is still the right tool. What it replaces is the local-pack search-result data behind a location query, at a flat per-call price instead of Google's per-field SKU stack.

Searlo cost per call
$0.30 per 1,000 calls (1 credit each), up to 20 places per call our pricing
Free credits to start
3,000 free credits — One-time bonus on sign-up. No credit card required. our pricing
Google Places API (New), Text Search Pro
$32.00 per 1,000 calls (0–100,000 tier), 5,000 free/month developers.google.com/maps/billing-and-pricing/pricing
Google Place Details Enterprise + Atmosphere
$25.00 per 1,000 calls, 1,000 free/month — the SKU required for ratings/reviews on a place lookup developers.google.com/maps/billing-and-pricing/pricing
What Searlo doesn't do
Map tiles, geocoding, or routing — this is search-result data, not a Maps Platform replacement

Third-party figures on this page last verified against the sources linked above. Prices change; if you find one of these stale, tell us and we will correct it.

Searlo's /search/places and /search/maps endpoints return the same kind of record Google's own Local Pack shows for a business search — name, address, phone, hours, rating, and category — as structured JSON, from one API key, at one flat rate per call.

It is not a map. Searlo has no tile server, no geocoding endpoint, and no turn-by-turn routing — if your product renders a map or drops a pin from a street address, you still need Mapbox, Geoapify, Radar, or Google's own Maps SDK for that half of the job. What Searlo replaces is the other half: the search-result data behind "coffee shops near me" or "plumbers in Austin, Texas" — the businesses, their contact details, and, via the sibling Google Reviews API, what customers say about them.

Two endpoints cover it because there are two ways to point at an area: a location string ("Austin, Texas") or a map viewport (a center point and zoom level). They return the same shape of result and cost the same per call — which one you reach for depends on whether your caller already has a place name or a set of map coordinates.

Features

  • Search by place or by viewport

    /search/places takes a location string like "Austin, Texas"; /search/maps takes lat/lng/zoom or an ll token — same result shape, two ways to point at the map.

  • Full contact details

    Phone, website, domain, hours, and open/closed state on every result — the same fields a person sees on the business's own listing.

  • Rating, review count, and price level

    Google's star rating, review count, category, and price level come back with every result, for filtering and ranking without a second call.

  • Booking links, when Google shows them

    /search/maps surfaces the reservation, appointment, or order link Google's own Local Pack displays, picked from whichever booking block the business has.

  • Direct handoff to reviews

    Every result carries featureId and cid — the exact identifiers the Google Reviews API accepts, so pulling a business's reviews needs no separate lookup.

  • One credit per call

    $0.30 per 1,000 calls, up to 20 places each, no per-field charges and no GCP billing account.

Get started in one request

The same search by location string, and by map viewport — same response shape, different way to point at the map.

curl "https://api.searlo.tech/api/v1/search/places?q=coffee%20shop&location=Austin%2C%20Texas&limit=10" \
  -H "x-api-key: YOUR_API_KEY"
import requests

r = requests.get(
    "https://api.searlo.tech/api/v1/search/places",
    params={"q": "coffee shop", "location": "Austin, Texas", "limit": 10},
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = r.json()
for p in data["places"]:
    print(p["title"], p["rating"], p["phoneNumber"], p["address"])
const params = new URLSearchParams({
  q: "coffee shop",
  location: "Austin, Texas",
  limit: "10",
});
const res = await fetch(
  `https://api.searlo.tech/api/v1/search/places?${params}`,
  { headers: { "x-api-key": "YOUR_API_KEY" } },
);
const { places } = await res.json();
places.forEach((p) => console.log(p.title, p.rating, p.phoneNumber, p.address));
curl "https://api.searlo.tech/api/v1/search/maps?q=coffee%20shop&lat=30.2672&lng=-97.7431&zoom=13" \
  -H "x-api-key: YOUR_API_KEY"
import requests

r = requests.get(
    "https://api.searlo.tech/api/v1/search/maps",
    params={"q": "coffee shop", "lat": 30.2672, "lng": -97.7431, "zoom": 13},
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = r.json()
for p in data["places"]:
    print(p["title"], p["rating"], p["phone"], p["bookingLink"])
const params = new URLSearchParams({
  q: "coffee shop",
  lat: "30.2672",
  lng: "-97.7431",
  zoom: "13",
});
const res = await fetch(
  `https://api.searlo.tech/api/v1/search/maps?${params}`,
  { headers: { "x-api-key": "YOUR_API_KEY" } },
);
const { places } = await res.json();
places.forEach((p) => console.log(p.title, p.rating, p.phone, p.bookingLink));

Searlo vs Google Maps Platform

Google Maps Platform and Searlo solve different problems that get shopped for on the same search terms. This is the honest, SKU-by-SKU comparison for the piece Searlo actually covers: local business search-result data.

Capability comparison between Searlo and Google Maps Platform
CapabilitySearloGoogle Maps Platform
Price per 1,000 business searches$0.30$32.00 (Places API (New), Text Search Pro, 0–100K tier)
Price per 1,000 calls that need ratings$0.30 (same call — ratings are included)$25.00 (Place Details Enterprise + Atmosphere SKU)
Free tier3,000 free credits, no card5,000 Text Search calls/month or 1,000 Place Details calls/month
SetupOne API keyGCP project + billing account + enabled APIs
Per-field pricingNo — every field on one priceYes — Pro/Enterprise SKU tiers gate which fields you get
Map tiles / geocoding / routingNot included — pair with a Maps Platform vendor if you need theseIncluded — this is what Maps Platform is actually for

What /search/places and /search/maps actually return

Both endpoints return the same shape of record — a list of local businesses with name, address, coordinates, rating, category, price level, phone, website, hours, and open/closed state — pulled from Google's own local search results, the same data rendered in a Local Pack. Neither endpoint returns a map: there is no tile layer, no static map image, and no route between two points.

That distinction matters because "Google Maps API alternative" searches are dominated by vendors that do render maps — Mapbox, Geoapify, Radar, MapTiler — and none of them sell this kind of business search-result data as their core product. Searlo is the reverse: a business search-result data source that happens to share a name with the product category people search for.

  • title, address, latitude, longitude — identity and location
  • rating, ratingCount (reviews on /search/maps) — the star signal
  • category, categories, priceLevel (price on /search/maps) — for filtering
  • phoneNumber (phone on /search/maps), website, domain, hours, openState — contact and status
  • cid, featureId, placeId — the handles the Google Reviews API accepts directly

Location string or map viewport: which endpoint to call

/search/places takes a location string — a city, an address, a named place — in the location parameter, alongside your search term in q. It's the right endpoint for a directory, a lead list, or anywhere a human typed a place name.

/search/maps takes a viewport instead — lat, lng, and zoom, or a single ll token like @40.7,-74.0,12z — because it's built for a UI that already knows where its map is centered. Pass the coordinates your map component is showing and you get results for that view, the same way panning Google Maps itself refreshes the pins.

Both return the same JSON shape (with two field-name differences — see below), so switching between them later is a parameter change, not a rewrite.

One field-name catch: the two endpoints don't share every field name

The two responses are close but not identical, because /search/places is derived from the same upstream record as /search/maps and renames a few fields along the way. Code that reads phone from a /search/places response, or phoneNumber from /search/maps, gets undefined instead of an error — check this before writing one parser for both.

  • Phone number: phoneNumber on /search/places, phone on /search/maps
  • Rating count: ratingCount on /search/places, reviews on /search/maps
  • Price level: priceLevel on /search/places, price on /search/maps
  • Open/closed state: openState on both — the one that matches
  • /search/maps only: bookingLink / bookingLinks and timezone

Chaining into reviews

Every result from either endpoint carries featureId and cid — the same identifiers the Google Reviews API accepts. Search for a business, take the featureId (or cid) off the result you want, and call /search/reviews with it to get that business's reviews without a second lookup or a name-matching step.

See the Google Reviews API for the review-side endpoint, including the one real limitation worth planning around: it returns up to 50 reviews per call, with no pagination.

Google Places API pricing, the honest version

Google doesn't charge one number for this. Places API (New) bills per SKU: a Text Search Pro call is $32.00 per 1,000 in the 0–100,000 tier, and if you need the rating and review count confirmed on one specific place, that's a separate Place Details Enterprise + Atmosphere call at $25.00 per 1,000 — two calls, two line items, for what one Searlo call returns. Google gives 5,000 free Text Search calls and 1,000 free Place Details calls a month; past that, every SKU you touch has its own tier table (developers.google.com/maps/billing-and-pricing/pricing, verified 2026-09-13).

Searlo charges $0.30 per 1,000 calls for either search endpoint, one field set, no SKU to pick between.

What this doesn't replace

If your product needs to render an actual map — tiles, a pin at a geocoded address, or a driving-time route — Searlo is not that product. Mapbox, Geoapify, Radar, and Google's own Maps SDK do that job, and none of them are what /search/places or /search/maps compete with. What competes here is the data behind a local business search: the list of results, their contact details, and, with the Google Reviews API, what customers say about them.

What teams build on the local business search API

  • Local business directories and lead lists, enriched with live contact details
  • Store-locator and "near me" features that need business data, not map tiles
  • Local SEO and citation-audit tools comparing address/phone data across many businesses
  • CRM and sales-intelligence enrichment by location and category
  • AI agents and chat assistants answering "find me a plumber near X"

FAQ

Frequently asked questions

Is Searlo a Google Maps API alternative?

Partly, and honestly: Searlo has no map tiles, geocoding, or routing, so it doesn't replace the Maps JavaScript SDK, the Directions API, or the Geocoding API — for those, Mapbox, Geoapify, or Radar are the real alternatives. What Searlo replaces is the Places search-result data: business name, address, phone, rating, hours, and category from one GET request, at a flat per-call price instead of Google's per-SKU pricing.

What is the Google Places API?

Google's Places API (New) is the Google Cloud product that returns business search results — Text Search and Nearby Search for finding places, Place Details for one place's full record. It's billed per SKU and per field tier, requires a GCP project and billing account, and its Enterprise + Atmosphere tier (needed for ratings and reviews) runs $25.00 per 1,000 calls.

What's an alternative to the Google Places API?

Searlo's /search/places and /search/maps endpoints return the same category of local-business result — name, address, phone, rating, hours, category — from a single API key at a flat per-call price, without a GCP project or per-field SKU tiers. Neither includes geocoding or map rendering, only the search-result data.

What is a local business data API?

An API that returns structured records for local businesses — typically name, address, phone, hours, rating, and category — for a search query, instead of ten blue links or a rendered map. Searlo's /search/places (location string) and /search/maps (map viewport) are both local business data APIs in that sense; the difference between them is only how you point at the area to search.

How much does the Google Places API cost?

Per SKU, not a flat rate. Text Search Pro and Nearby Search Pro are $32.00 per 1,000 calls in the 0–100,000 tier (5,000 free/month); Place Details Enterprise + Atmosphere, the tier that includes ratings and reviews, is $25.00 per 1,000 (1,000 free/month) — verified at developers.google.com/maps/billing-and-pricing/pricing, 2026-09-13. Searlo charges a flat rate per 1,000 calls for either search endpoint, with ratings included.

What's the difference between /search/places and /search/maps?

Both return the same kind of local-business record. /search/places is addressed by a location string (a city or place name) in the location parameter; /search/maps is addressed by a map viewport — lat, lng, and zoom, or an ll token — for a UI that already knows where it's centered. A few field names differ between the two responses; see the field-name section above before sharing a parser across both.

Can I get a business's reviews from this API?

Not from /search/places or /search/maps directly — both return a rating and a review count, not the review text. Take the featureId or cid from a result and call the Google Reviews API (/search/reviews) to get up to 50 individual reviews with text, author, date, and any owner reply.

Does this replace Google Maps tiles or geocoding?

No. There's no tile server, static map image, or geocoding/routing endpoint here — for those, use Mapbox, Geoapify, Radar, or Google's own Maps SDK. Searlo returns the local-business search-result data: the list of places, their contact details, and, via the Google Reviews API, their ratings and reviews.