Skip to main content
The ScrapeLLM API uses standard HTTP status codes and consistent error response formats across all endpoints.

HTTP status codes

Error response format

All errors return a JSON body with a detail field:

Authentication error (401)

Credit limit (429)

Timeout (408)

The AI provider did not respond within the timeout window. Increase timeout (up to 600 seconds) or retry with bypass_cache=true.

Job not found (404)

Common error types

Authentication errors (401)

Credit / rate limit (429)

Server errors (500 / 503 / 504)

These are transient errors - it is always safe to retry.

Retry logic

Implement exponential backoff for 408, 429, 500, 503, and 504 errors:
Async jobs are automatically retried server-side up to 3 times before being marked failed. Credits are restored if all attempts fail.

Async job errors

When an async job reaches failed status, the error message is in the error field:
A failed job can be resubmitted by making a new request. Credits from the failed job are restored automatically.

Troubleshooting

401 Unauthorized

  • Verify the X-API-Key header is present and correctly spelled
  • Check the key is valid and hasn’t been revoked in the dashboard
  • Confirm your account has remaining credits

429 Too Many Requests

  • Check your credit balance in the dashboard
  • If the queue is full, implement retry with exponential backoff
  • Consider using async job mode to avoid holding connections

500 / 503 / 504

These are almost always transient. Retry immediately or after a brief delay. If the error persists for more than a few minutes, contact [email protected] with your job_id.

Amazon Rufus 500

If Rufus returns no products for a very vague query, the endpoint returns 500 with "Scraper returned an empty result." - retry with a more specific shopping query. Credits are restored automatically.