/v1/brands/{brand_id}/local-scan-schedules Schedule a place's map scans
Scan a place for up to 10 searches on one grid, daily, weekly or monthly (off keeps it saved and stopped); the first run lands within the hour. prompts (up to 5 questions, none naming the city) makes each run ask Gemini with Google Maps too, as POST .../local-scans does. Each run costs credits_per_run (without prompts, one scan per search: Each scan costs one credit per 16 points, rounded up (a 3x3 grid 1, 5x5 2, 7x7 4), reserved when it starts and refunded if it fails; charged to the brand owner. With prompts, one credit per 3 AI answers (points times questions), rounded up, the Maps searches included.) A run that finds too few credits pauses the schedule. alert_rank_drop (positions, default 3) and alert_top3_drop (percentage points, default 20) tell the brand owner, and send the local_rank.dropped webhook, when a run worsens a search past them against the run before; null turns one off. Requires the brand owner on Starter or with an active API subscription: 403 brand_plan_required otherwise.
Path parameters
-
Brand UUID.
Query parameters
-
Preview the call without executing it. Runs auth, scope, eligibility and body validation, then returns
200with adry_runobject reporting the request-unit and credit cost plus a non-consuming quota snapshot. Nothing is debited, reserved, dispatched or mutated. An invalid body still returns422.default: false
Header parameters
-
Required with an API key, else
400 idempotency_key_required: a new value per operation (a UUID works). A retry with the same key and body within 24 hours replays the first response instead of running again. Ignored withdry_run=true.
Request body
application/json required-
The place to scan.
- alert_rank_drop number (nullable) nullable
- alert_top3_drop integer (nullable) nullable
- center_lat number (nullable) nullable
The grid's centre; null uses the place's pin
- center_lng number (nullable) nullable
- frequency enum
- grid_size integer
N in the NxN grid (3, 5 or 7)
- prompts array of string
Questions asked of Gemini with Google Maps at every point on each run; none runs Maps only.
- spacing_km number | string
Distance between adjacent grid points, km, or "auto": the centre is read first and the spacing set off how far its results lie (0.4 of their median distance, at least 1 km when fewer than 10 come back, rounded to 0.1, 0.2, 0.3, 0.5, 1, 1.5, 2 or 5 km). Left out, it is auto.
Example payload
{
"alert_rank_drop": 3,
"alert_top3_drop": 20,
"frequency": "weekly",
"grid_size": 5,
"keywords": [
"dentist",
"emergency dentist"
],
"location_id": "3f1c9a52-6d0e-4a8b-9c1d-2e4f6a8b0c1d",
"prompts": [
"best dentist near me"
],
"spacing_km": 1.5
}Responses
-
The spacing of its runs, km; not read while
spacing_autois on. - alert_rank_drop number (nullable) nullable
- alert_top3_drop integer (nullable) nullable
- center_lat number (nullable) nullable
- center_lng number (nullable) nullable
- created_at string (nullable) nullable
- last_run_at string (nullable) nullable
- last_run_id string (nullable) nullable
- next_run_at string (nullable) nullable
- object string
Always
local_scan_schedule. - paused_reason enum (nullable) nullable
creditsorplace_archived; saving the schedule resumes it. - prompts array of string
Questions for Gemini with Google Maps each run asks; none scans Maps only.
- spacing_auto boolean
Each run reads the grid's centre first and sets its own spacing off it (
spacing_km: auto).
-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "validation_error",
"message": "Request validation failed"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid credentials"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "forbidden",
"message": "You do not have permission to access this resource"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "not_found",
"message": "Resource not found"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "conflict",
"message": "Resource conflict"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "body_validation_error",
"message": "Request body did not match the expected schema"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "rate_limit_exceeded",
"message": "Per-minute rate limit exceeded"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "service_unavailable",
"message": "Service temporarily unavailable, please retry"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}