## TL;DR

A quiet ZenRows SDK default: retries are OFF unless you ask. Add retries=1 (or higher) once and stop writing your own retry loop around every call. The Python client retries 429, 500, 502, 503, and 504 with exponential backoff - but only if you pass retries to the client constructor.

## Fix

1. A quiet ZenRows SDK default: retries are OFF unless you ask.
   Expected: You get the expected result; the problem is gone.
2. Add retries=1 (or higher) once and stop writing your own retry loop around every call.
   Expected: You get the expected result; the problem is gone.

## When to use

- You are dealing with this situation.
- The symptom matches: ZenRows SDK retries are off by default - pass retries or a single 429 kills your run.

## When NOT to use

- Unrelated issues with a different cause.
- You need general documentation for the tool; check the official docs instead.

## Compatibility

Reported per the linked source.

## Variant phrasings

### ZenRows SDK retries are off by default - pass retries or a single 429 kills your run

## Why it happens

ZenRows official Python SDK README: automatic retries (status codes 429, 500, 502, 503, 504, with exponential backoff via urllib3 Retry) are NOT active by default - you must specify the retries count, e.g. ZenRowsClient('key', retries=1). The Node SDK is the same: fetch-retry covers 429 and 5XX but retries need to be specified. Scripts that omit it get zero retries and treat a single 429 or 503 as fatal.

## Edge cases

- If your error message differs even slightly, this is probably a different issue; search the exact text.
- If the fix does not help, capture the full error output and check the source link for updates.