API
Search for businesses
Run a live local-business search — every delivered lead fully verified.
API
Run a live local-business search — every delivered lead fully verified.
API
Run a live local-business search — every delivered lead fully verified.
POST/api/v1/search
Runs a live discovery search and returns the first batch of listings immediately, spending 1 lead per result. In the background we expand the search to find more matching leads and verify every one — up to 3 emails and 3 phones checked, plus the owner name where we find one. There's no separate enrichment charge: 1 lead covers the listing and all of its verification. Poll the search (Get Results) until enrichment is "complete" for the settled balance, and read all of its results by following next_offset — each poll returns one page, 50 leads by default and up to 1,000 with ?limit=.
| query | Required. The niche/keyword, e.g. "electrician". |
| location | City string, e.g. "Austin, TX". (Or pass location_code.) |
| location_code | Optional. Exact code from /locations. When it is sent, that code is what is searched, whatever location says. Sent with location, the search is named after the code's own place — or after location, when the code's own name can't be looked up. Sent alone, the search is unnamed: location comes back null — in this response, on the poll endpoint and in GET /api/v1/searches. |
| US places only | A location_code the US location list doesn't hold, or a location ending in another country ("London, UK"), is a 400 and nothing is searched or charged. A US territory's code (Puerto Rico, Guam, the US Virgin Islands, American Samoa, the Northern Mariana Islands) is searched as a US one. |
{
"search_id": "b3e1...c4a",
"query": "electrician",
"location": "Austin, TX, Texas, United States",
"delivered": 20,
"found": 20,
"credits_remaining": 80,
"enrichment": "pending",
"more_results": "pending",
"poll": "/api/v1/searches/b3e1...c4a",
"results": [
{ "rank": 1, "name": "Bluebonnet Electric Co", "category": "Electrician",
"phone": "+1 512 555 0112", "rating": 5.0, "website": "https://…" }
]
}Each additional lead the worker finds spends 1 lead and is verified — no separate enrichment charge. The poll endpoint reports the settled balance once it's done.
discovery is "complete" when the first batch is in the response, or "in_progress" when the search was queued whole — then results is empty for now and the leads arrive on the poll endpoint. Empty here does not mean no results.
When the location has no matching listings at all, results is empty with discovery, enrichment and more_results already "complete": nothing was charged and nothing more is coming, so there is nothing to poll for.