Request Timeouts
Every HTTP client lets you set a request timeout: how long to wait for a response before giving up. This page lists the typical and maximum response time of each API, suggests a client timeout for each, and explains why response times vary.
How to choose a timeout
A timeout is an upper bound, not a wait: fast responses still come back immediately, the timeout only decides how long your code waits before aborting a request that is still in flight. That makes a generous timeout cheap and a short one expensive: if the timeout is below the API's maximum response time, you abort requests the API was about to answer, and each aborted request has to be retried from zero. When in doubt, use 180 seconds: that covers every API, including the slowest ones such as Screenshot API, HTTP Tracker API and URL to PDF API.
What the timeout applies to differs by HTTP client. Node.js AbortSignal.timeout(), Go's http.Client.Timeout and PHP cURL's CURLOPT_TIMEOUT cap the whole request, from connection to full response. Python urllib's timeout applies to the connection attempt and to each blocking socket read instead, so it aborts a server that stops sending data for that long rather than a response that legitimately takes longer to complete.
Response times per API
Average response times are measured under normal conditions; the "can take up to" column is the worst case you should plan for, and the suggested timeout sits comfortably above it. APIs without a listed maximum stay close to their average range, and the suggested 30-second timeout leaves ample margin.
| API | Avg response time | Can take up to | Suggested timeout |
|---|---|---|---|
| Account Info API | 150 ms – 250 ms | – | 30 seconds |
| ASN Info API | 150 ms – 500 ms | – | 30 seconds |
| BIMI Validator API | 150 ms – 3 s | 30 seconds | 60 seconds |
| DKIM Validator API | 150 ms – 500 ms | – | 30 seconds |
| DMARC Validator API | 150 ms – 500 ms | – | 30 seconds |
| DNS Lookup API | 150 ms – 500 ms | 15 seconds | 30 seconds |
| DNS Propagation API | 500 ms – 1 s | 15 seconds | 30 seconds |
| DNSSEC Status API | 150 ms – 500 ms | – | 30 seconds |
| Domain Age API | 150 ms – 3 s | 30 seconds | 60 seconds |
| Domain Info API | 150 ms – 3 s | 30 seconds | 60 seconds |
| Domain Reputation API | 150 ms – 3 s | – | 30 seconds |
| Email Verify API | 150 ms – 3 s | – | 30 seconds |
| EML Insights API | 500 ms – 5 s | 30 seconds | 60 seconds |
| Geo Request API | 500 ms – 5 s | 30 seconds | 60 seconds |
| HTML to PDF API | 5 s – 10 s | 150 seconds | 180 seconds |
| HTML to PNG API | 5 s – 10 s | 150 seconds | 180 seconds |
| HTTP Tracker API | 5 s – 10 s | 150 seconds | 180 seconds |
| HTTP3 Status API | 1 s – 3 s | 30 seconds | 60 seconds |
| IP Reputation API | 150 ms – 3 s | – | 30 seconds |
| Parked Domain API | 500 ms – 3 s | 30 seconds | 60 seconds |
| Phone Validator API | 150 ms – 500 ms | – | 30 seconds |
| Ping Test API | 3 s – 5 s | – | 30 seconds |
| Port Scan API | 500 ms – 3 s | – | 30 seconds |
| QR Scan API | 250 ms – 3 s | – | 30 seconds |
| Reverse IP API | 500 ms – 3 s | – | 30 seconds |
| Screenshot API | 5 s – 10 s | 150 seconds | 180 seconds |
| Security Headers API | 500 ms – 5 s | 30 seconds | 60 seconds |
| Site Trustworthiness API | 3 s – 5 s | 75 seconds | 90 seconds |
| SPF Validator API | 150 ms – 500 ms | – | 30 seconds |
| SSL Info API | 250 ms – 3 s | 30 seconds | 60 seconds |
| TLS Check API | 250 ms – 3 s | 60 seconds | 90 seconds |
| Tor Test API | 3 s – 5 s | 30 seconds | 60 seconds |
| URL Reputation API | 3 s – 5 s | 60 seconds | 90 seconds |
| URL Status API | 3 s – 5 s | 60 seconds | 90 seconds |
| URL to PDF API | 5 s – 10 s | 150 seconds | 180 seconds |
| VPN Test API | 3 s – 5 s | 30 seconds | 60 seconds |
Why response times vary
Two main factors drive most of the variation:
- The target. APIs that connect to a remote host, such as the Screenshot, URL to PDF, URL Status, Site Trustworthiness and TLS Check APIs, can only be as fast as the target lets them: a website that is slow to resolve, connect, or render slows the API response by the same amount, regardless of our own server performance.
- The request parameters. Some options may increase the work per request. For example, the TLS Check API with
scan_ciphersset totruetakes longer than a plain check, and the Screenshot API withfull_pageset totruetakes longer than a viewport-only screenshot. These options require additional processing work.
This is why the table lists ranges rather than single numbers: pick your timeout from the "can take up to" column, not from the average. This leaves enough headroom for slower targets and more demanding request options, reducing avoidable client-side timeouts during requests that are still processing normally.
Timeouts and retries
Timeouts and retries work together: the timeout decides when to give up on a single attempt, the retry policy decides what happens next. A timed-out request should be retried with incremental backoff exactly like a 5xx response, see API Errors & Retries for ready-to-use retry examples in Python, PHP, Node.js, Go and Java.