POST /v1/scanner/scan
Scan a single domain. Returns in 2–5 seconds for most sites. Scope required:scan Cost: 1 credit
| Field | Type | Notes |
|---|---|---|
domain | string | Required. Normalized server-side (lowercase, no scheme). |
merchant_name | string | Optional metadata. |
merchant_category | enum | retail, saas, marketplace, restaurant, b2b, travel, fintech, healthcare, media, other. |
country_code | string | ISO 3166-1 alpha-2. |
region | enum | latam, north_america, europe, apac, africa, mena. |
skip_if_fresh | boolean | If true, returns the cached scan when it’s under 24h old (still costs 0 credits). |
MerchantScan object.
GET /v1/scanner/scan/:id
Retrieve a specific scan by UUID. Scope required:read Cost: 0
GET /v1/scanner/scans/by-domain/:domain
Look up the freshest scan across the shared corpus for a given domain. Scope required:read Cost: 0
404 if no scan exists for the domain.
GET /v1/scanner/scans
List scans with filters. Returns rows across all tenants — the shared scan corpus. Scope required:read Cost: 0
Query parameters:
| Param | Notes |
|---|---|
category | Merchant category filter |
region | Region filter |
status | completed, failed, pending, etc. |
min_score | Minimum readiness_score |
max_score | Maximum readiness_score |
page | 1-indexed |
limit | Max 100 |
