Skip to content

Errors and Retries

Newer endpoints return:

{
"error": "invalid selector",
"field": "price",
"detail": "expected identifier",
"hint": "verify the selector with a parser dry-run"
}

error is always present; the other fields are optional. Older parse/scrape paths can still return plain-text errors in some cases.

StatusMeaningRetry?
400Malformed JSON/requestNo; fix the request
401Missing, invalid, or inactive keyNo; replace the credential
402Insufficient available creditsAfter adding credits or releasing reservations
404Resource absent or not ownedNo
413Legacy HTML upload exceeds 16 MBNo; reduce the upload
422URL guard, parser/config, sink, batch, SQL, or content validation failedNo; inspect field, detail, and hint
429RPS, concurrency, pending, or account resource limitUsually; honor Retry-After when present
502Target/upstream transport failedUsually, with backoff
503Feature not configured or service temporarily unavailableRetry later unless the feature is disabled

A scrape concurrency rejection is not a generic rate limit. Its structured log/error code is concurrency_limited; wait for the matching fetch or browser slot.

A batch is rejected atomically when credits or pending capacity are insufficient:

{ "error": "insufficient credits", "required": 4980, "available": 3200 }
{ "error": "pending limit", "pending": 24400, "limit": 25000, "accepted": 0 }

No partial batch is accepted. Re-chunk only after capacity becomes available.

LinkedIn endpoints expose stable codes in structured failures:

CodeHTTPRetryableMeaning
unsupported_type422NoResource/schema is unsupported
rate_limited429YesLinkedIn returned 999/429 or an auth wall after internal retries
not_found404NoDeleted, private, or nonexistent resource
fetch_failed502YesTransport or upstream fetch failure
masked_contentsuccess warningNoGuest fields were masked and returned as null

Failed prebuilt calls do not consume credits. Respect retry_after_seconds when supplied.

instagram-posts can return INSTAGRAM_UPSTREAM_PROFILE_UNAVAILABLE with retryable: true. Branch on code, not message, and do not retry before retry_after_seconds.