Scraping Modes
The mode parameter controls how aggressively OmniScrape works to fetch a page. The right mode balances speed, cost, and success rate.
| Mode | Browser? | Best for | Speed |
|---|---|---|---|
fast | No | Static HTML, APIs, simple sites | Fastest |
js_rendering | Yes | JS-heavy or anti-bot-protected sites | Slower |
auto (default) | Maybe | When you're not sure | Adaptive |
auto
The default. We start with the cheap, fast path and automatically escalate to a real browser with challenge solving only if the target blocks us or requires JavaScript. This gives you the best success-to-cost ratio without you having to guess.
{ "url": "https://example.com", "mode": "auto" }
Use auto unless you have a specific reason not to.
fast
A direct, browserless HTTP request with rotating fingerprints. No JavaScript execution. It's the cheapest and fastest option and works great for static pages, JSON endpoints, and sitemaps.
{ "url": "https://api.example.com/data.json", "mode": "fast" }
Choose fast when you know the content is in the initial HTML response and the site isn't protected.
js_rendering
Loads the page in a real, headless browser. JavaScript runs, lazy content can load, and anti-bot challenges (Cloudflare, DataDome, etc.) are solved automatically. It's slower and costs more, but it gets through almost anything.
{
"url": "https://protected.example.com",
"mode": "js_rendering",
"js_wait_selector": ".main-content"
}
Choose js_rendering when content is rendered client-side, or when auto/fast returns a challenge page.
Decision guide
- Start with
auto. - If you need every request to be as cheap as possible and the site is static, pin
fast. - If you keep getting
502or empty content, pinjs_renderingand add ajs_wait_selector.