FAQ & Troubleshooting
General
Do I need an SDK?
No. OmniScrape is a plain REST API. Any language that can send an HTTP POST works. See Code examples.
Where do I get an API key?
From the dashboard under API Keys. Send it in the X-API-Key header. See Authentication.
Is there a free trial?
Yes. First-time signups get $1.00 credit and a 7-day trial. No payment method required.
You can use Web Unlocker and Browser-as-a-Service (residential proxy is included behind those products). Direct proxy URLs stay locked until you top up $5+ (upgrades to PAYG) or subscribe.
One trial per email. Returning emails start on PAYG with $0 balance. Details: pricing.
What happens when my trial expires?
After 7 days leftover free-trial credit is removed and you get 402 with code TRIAL_EXPIRED until you complete a $5 minimum top-up. Top-up by card or crypto upgrades you to Pay-As-You-Go automatically.
Can I use direct proxy URLs on the free trial?
No. Trial calls to /v1/proxy/fetch return 402 / PROXY_LOCKED. Use Web Unlocker or BaaS during the trial, or activate PAYG / a plan to unlock credentials in Dashboard → Proxies.
Billing
What payment methods do you accept?
- Credit / debit card (Visa, Mastercard) via Xendit
- Cryptocurrency (BTC, USDT, ETH, 50+ coins) via Trybit
Both work for balance top-ups and Startup / Growth subscriptions from the billing dashboard. See Pricing & Billing.
Am I charged for failed requests?
No. Web Unlocker is pay-for-success — failed unlocks have billing.charged: 0. BaaS is per active minute; proxy is per GB. See Pricing.
Does js_rendering cost more than fast?
No. Flat $0.0035 per successful Web Unlocker request, regardless of lane.
How do I check my balance?
Every scrape response includes billing.balance_after. Full history is in the usage dashboard.
How do I request a refund?
See the Refund Policy. Email support@omniscrape.io with your account email and invoice ID (Xendit for cards, Trybit for crypto).
Requests & results
I'm getting an empty page or a loading skeleton
Content is rendered by JavaScript. Use mode: "js_rendering" and a js_wait_selector for an element that only appears once real content loads. See JS rendering.
The site keeps blocking me (403 / 503 / 502)
Climb the anti-bot escalation ladder: force js_rendering, add a matching proxy country, wait for real content, and use a session. Failed unlocks aren't billed.
How do I extract specific fields instead of full HTML?
Add a css_selectors map. Results come back in data.css_extracted. See CSS extraction.
Can I submit a form or hit a JSON API?
Yes. Set method: "POST" and a body, plus custom_headers / custom_cookies as needed. See POST requests.
How do I get data from a single-page app's API?
Enable capture_xhr to capture background fetch/XHR responses. Often cleaner than parsing the DOM. See JS rendering.
Scale & performance
What's the rate limit?
Two limits:
- Concurrency — 1 / 5 / 10 / 25 in-flight jobs by plan (
429+CONCURRENCY_LIMITwhen exceeded) - Request rate — about 20 req/s per account (
429without a code when exceeded)
See Rate limits.
How do I scrape thousands of URLs?
Run a worker pool sized to your concurrency limit, or use the async jobs API for large batches.
My requests are timing out
Raise your HTTP client timeout to at least 120 seconds. js_rendering and challenge solving can take several seconds per page.