Skip to main content

Setup and compatibility

Python 3.6 and later. The SDK has no other runtime dependencies beyond requests and urllib3, which are installed automatically with pip install zenrows.
No. requests (and urllib3) are installed automatically as dependencies when you run pip install zenrows.
No. The SDK talks to the Universal Scraper API’s endpoint directly (API Mode). If you want to use ZenRows as a proxy in your own HTTP client instead, see the Proxy Mode documentation rather than the SDK.

Requests, errors, and concurrency

Pass timeout as an extra keyword argument to get, post, or put. It’s forwarded to the underlying requests call: client.get(url, timeout=30). We recommend not setting a timeout below 3 minutes, since canceling a request client-side doesn’t immediately free up the concurrency slot on ZenRows’ side.
By design, the SDK returns the requests.Response object even for non-2xx status codes. It doesn’t raise automatically. Check response.ok or response.status_code, or call response.raise_for_status() yourself if you want an exception. See Error Handling and Retries.
No. Each ZenRowsClient instance enforces its own concurrency setting independently. Running two scripts (or two client instances) at the same time can exceed your plan’s actual limit and trigger 429 Too Many Requests errors. Coordinate concurrency across processes yourself if you run multiple scripts against the same ZenRows plan.

Project and support

Yes. See the ZenRows Node.js SDK on npm.
The SDK is open source on GitHub. Open an issue there for bugs, or a pull request if you’d like to contribute.
MIT. You can use, modify, and distribute it freely; see the LICENSE file in the repository.

Still stuck?

Check the API Error Codes reference, or contact support directly.