Synchronous requests
Synchronous endpoints return the full result in the same HTTP response, so the request has to fit inside your client’s timeout. See Synchronous requests for the request and response structure, common parameters, and code examples.Asynchronous requests
Asynchronous endpoints accept a task, return ataskId immediately, and process the work in the background. You retrieve the result via webhook (recommended) or by polling. See Asynchronous requests for the two-step submit-and-fetch flow, task states, queue limits, and request prioritization.
When to use which
Common questions
How long should one request take?
Typical end-to-end times, measured over the last seven days of production traffic:
A request to an AI assistant (ChatGPT, Gemini) drives a
real browser session (how cloro retrieves
data): it
loads the surface, submits the prompt, waits for the answer to finish streaming
and parses the rendered page, often over several page loads when the surface
defers its sources or product cards. A Google SERP is one page load, so it
lands in seconds. An AI surface has to generate its answer before there is
anything to read, and that generation time is the bulk of the wait. The spread
moves with the provider’s own load, so treat these as the shape rather than a
guarantee.
Elmo publishes an independent comparison of cloro
and other scraping APIs for these engines, re-measured every six hours on the
same prompts.
Why are my requests slower than expected?
Beyond the generation time above, latency comes from:- Queue depth (async requests only): set by your plan’s concurrency limit and your current queue size
- Geographic routing: requests route through region-specific infrastructure, which may differ in latency depending on the
countryparameter you specify - Provider load: peak hours on the provider’s side lengthen generation