TIMEOUT
The target site took longer than 10 seconds to respond.
| Code | HTTP status | Retryable? |
|---|---|---|
| TIMEOUT | 504 | Yes |
What this means
TIMEOUT fires when the target origin doesn't respond within the 10-second budget. This covers DNS resolution, TCP handshake, TLS handshake, and the HTTP response — all together. The most common causes are origin overload, geographically slow routes, or sites that intentionally throttle bot traffic to slow it down without an outright block.
When you'll see it
HTTP 504. Body always includes code: "TIMEOUT". Branch on code, never on the human-readable message — wording can change without notice; the code is the stable contract.
Example response
{
"status": "error",
"code": "TIMEOUT",
"message": "Target site exceeded 10s response budget"
}How to handle
Retry later — TIMEOUT is almost always transient. For automated systems, exponential backoff with a long ceiling (30s, 5min, 30min) works well; many slow sites recover within minutes. If a specific URL times out consistently across days, the origin is probably just permanently slow — skip it. The Wayback Machine is often a workable fallback for slow news sites.
Suggested handling in a Node client:
if (data.code === 'TIMEOUT') {
// Transient; retry once with fresh=true after a brief pause.
await sleep(2000);
return retry({ fresh: true });
}Related errors
| Code | Status | What it means |
|---|---|---|
| EXTRACTION_FAILED | HTTP 500 | The cleaning engine errored mid-process — rare, usually transient. |
| URL_NOT_FOUND | HTTP 404 | The target URL returned 404 — the page doesn't exist on the origin. |
See the full error index for the complete catalog with the handling switch statement covering every code at once.