Job statuses
POST /api/v1/jobs
Create a new scraping job.
Request body
There is no unlimited sentinel for cap fields. If you want the maximum allowed value, send the maximum explicitly.
Website filter
website_filter restricts a scrape by each business’s web presence — letting you target the “no real website” segment, the high-value lead list for web and marketing agencies.
How it behaves:
- Filtered at scrape time. Non-matching businesses are dropped before they are stored, so they never appear in your results and you are never billed for them.
max_resultscounts only matches. A job for 100no_websiteleads keeps scraping until it finds 100 matches or the search area is exhausted — sparse areas may return fewer than the cap.- Pricing. When
website_filterisno_websiteorhas_website, afilters_appliedfee of0.001credits is charged per matching place, on top of the normal per-place cost.allis free. See Credits and billing. - Re-segment for free at read time. The same vocabulary is available on the results endpoint via the
web_presencequery parameter, which additionally exposes six fine-grained tiers.
website_filter is a coarse, one-shot scrape-time choice. To slice already-scraped results by finer categories (social-only vs. directory-only, etc.), use the web_presence filter on the results endpoint — no re-scrape and no extra cost.Supported language values
ar, bg, cs, da, de, el, en, es, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, th, tr, uk, vi, zh
Example request
Success response
Common failure modes
400 Bad Requestfor validation failures402 Payment Requiredif your credit balance is too low409 Conflictif you reuse an idempotency key incorrectly422 Unprocessable Entityfor invalid JSON429 Too Many Requestsif you hit the concurrent job limit, withRetry-After: 60
POST /api/v1/jobs/estimates
Check how much a scraping job will cost before you create it.
Use this endpoint to show users a price preview in your UI, or to decide programmatically
whether to proceed with a job based on cost and available credits.
Why use this endpoint
- You get a cost breakdown before spending any credits.
- The response includes your current credit balance so you know if you can afford the job.
- The estimate shows a range (min to max) because Google Maps results vary by location and search term.
Request body
Language is not needed here because it does not affect cost.
Example request
Example response
Response fields
estimate object containing the cost calculation:
balance object containing your account state:
Notes
- All costs are in credits. One credit equals one US dollar.
- The estimate uses your account’s active pricing rules at request time.
- If you set
max_results, it acts as a hard cap. The estimate will not exceed this number of places even if depth would produce more. - A
no_website/has_websitewebsite_filteraddsbreakdown.filter_cost= matching places ×0.001credits. Because billing runs on the places that actually match, the filter both narrows your results and is priced per match. - The
Cache-Control: no-storeheader is set on responses because estimates are ephemeral and should not be cached.
GET /api/v1/jobs
List your jobs with pagination and sorting.
Query parameters
Example response
Response fields
GET /api/v1/jobs/{id}
Fetch one job by UUID.
200 OKreturns the same job object shape shown above404 Not Foundif the job does not belong to you or does not exist422 Unprocessable Entityifidis not a valid UUID
POST /api/v1/jobs/{id}/cancel
Cancel a pending or active job.
Returns 204 No Content on success.
DELETE /api/v1/jobs/{id}
Delete a job you own.
Returns 204 No Content on success. Invalid UUID values return 422 Unprocessable Entity.
