TIMEOUT

The target site took longer than 10 seconds to respond.

CodeHTTP statusRetryable?
TIMEOUT504Yes

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

json
{
  "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.

Safe to retry. Exponential backoff. Many slow sites recover within minutes.

Suggested handling in a Node client:

ts
if (data.code === 'TIMEOUT') {
  // Transient; retry once with fresh=true after a brief pause.
  await sleep(2000);
  return retry({ fresh: true });
}
CodeStatusWhat it means
EXTRACTION_FAILEDHTTP 500The cleaning engine errored mid-process — rare, usually transient.
URL_NOT_FOUNDHTTP 404The 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.