A stable code for the reason. Write your logic against this. The
message wording may change; the code will not.The id of this request. Quote it when you contact support. Every response also carries it in the
X-Request-Id header.Failed calls are free. Credits are only charged when you get a result, so an error never costs anything. See Credits.
Codes
A page we cannot read
422 with UPSTREAM_UNREACHABLE means the site did not respond, or we could not read that page. This is a fact about that URL, not a fault in our service, and asking again straight away will not change it.
details.retryAfterSeconds is there, asking again before then returns this same answer at once. After that, a new call makes a fresh attempt.
Rate limits
Every response carries headers that tell you where you stand:
Wait for
Retry-After instead of a fixed delay.
Timeouts
A call waits for its result for up to 90 seconds, or yourtimeout. Past that it does not fail: it answers 202 with a job id and keeps working for up to 5 minutes. Only work that runs past those 5 minutes fails, and the job then reports REQUEST_TIMEOUT with status 504. It costs nothing. Pages that hit this are almost always heavily protected. See Jobs & webhooks.
Errors inside a job
A crawl or batch can succeed overall while some of its pages fail. Starting the job and polling it return normal successful responses. Check each entry in the job’spages for its own status and error, and the job’s status for failed or cancelled.
Next: Brand data
Logos, colours and fonts for any company.