Skip to main content

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:

  1. Concurrency — 1 / 5 / 10 / 25 in-flight jobs by plan (429 + CONCURRENCY_LIMIT when exceeded)
  2. Request rate — about 20 req/s per account (429 without 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.

Still stuck?​