POST
Fetch an SEO snapshot for a domain

Authorizations

Authorization
string
header
default:tok_public_demo
required

Send a workspace API token in the Authorization: Bearer <token> header.

Keys carry the satk_ prefix and spend your organization's credit balance. GET /v1/public/balance reports what is left.

Test-mode keys (satk_test_), which drew on a separate self-refilling allowance, have been retired and no longer authenticate.

Headers

Idempotency-Key
string

Optional deduplication key, scoped to your organization. Re-sending a request with a key that was already used returns the original job instead of creating and charging for a second one.

Supersedes the idempotencyKey body field, which remains supported as a deprecated alias. If both are present, this header wins.

Maximum string length: 255

Body

application/json
domain
string
required
wait
boolean
default:true

Wait for a terminal response before falling back to async job polling.

waitTimeoutMs
integer

Optional client-requested sync wait timeout, bounded by the server maximum.

webhookUrl
string<uri>

Optional public callback URL for terminal job delivery. Available to every organization.

Naming a URL here registers it as a webhook endpoint if it is not registered already, so the signing secret exists before the first delivery does. Fetch it from GET /v1/public/webhooks/endpoints/{endpointId}/secret, or register the endpoint up front with POST /v1/public/webhooks/endpoints to have the secret in hand before you run anything.

Deliveries carry X-Scrapebento-Signature, an HMAC-SHA256 over "<timestamp>.<body>" under that endpoint's own secret, so the secret you need to verify your deliveries cannot forge anyone else's. Every attempt is recorded in GET /v1/public/webhooks/deliveries and can be re-sent from there.

idempotencyKey
string
deprecated

Deprecated alias for the Idempotency-Key header, which is the conventional transport and takes precedence when both are sent. Still honoured so existing integrations keep working.

Maximum string length: 255
cacheTtlSec
integer

How long this result may be reused, in seconds. Capped at 7 days (604800); larger values are clamped.

Omit it to accept the per-kind server default. Slow-moving kinds cache by default — infra and brand for 6h, seo, sitemap, site, and producthunt for 1h, and hn_search, hn_post, and rss for 5m. Everything else defaults to no caching.

A cached result is charged at the same rate as a fresh scrape, so the TTL is how stale an answer you can be billed for. Send 0 to prevent this result being cached, and fresh: true to bypass an existing cache entry on read.

Required range: 0 <= x <= 604800
fresh
boolean

Bypass cache and force a new scrape or search execution.

url
string<uri>
companyName
string
productName
string

Used only to look the product up as a Wikidata entity. A match is accepted solely when the entity's P856 (official website) claim resolves to domain, never on the name alone, so an inaccurate name yields no entity rather than the wrong one.

signals
enum<string>[]

Opt into a subset of the snapshot's sources. Omit (or send an empty array) for all of them. Callers use this to skip the slow, slow-changing sources — Common Crawl republishes monthly and Wikidata entities change less often still — instead of re-fetching them on every snapshot. crux is the Chrome UX Report field-data history. An unknown name is refused with 400, not ignored.

Available options:
technical,
pagespeed,
blogfeed,
tranco,
wikidata,
commoncrawl,
crux

Response

SEO snapshot completed and returned a terminal response.

data
object
required