Unlocker API
One call returns any page past any protection, as Markdown or structured JSON. Anti-bot handling, proxy rotation, CAPTCHA solving and JavaScript rendering all happen inside the request.
- Cloudflare, Akamai, DataDome, PerimeterX and every major CAPTCHA, handled inside the call
- 99.6% success on protected targets
- Proxies are automatically managed: tier, rotation and retry-on-ban
- JavaScript rendering with waits and page actions
- HTML, Markdown, screenshot or JSON output, auto-parsed fields
- AI parsing with your own model key
npx -y @datafuel/mcp initOne request starts the example.
Everything in one request
The scannable summary. Deep dives below.AI parsing with your own API key
Send a prompt and a JSON schema with the request. The page is fetched through our network, then handed to your model on your key: OpenAI, Anthropic, Google or Mistral. You get the fields, not the HTML, and the model tokens are billed by your provider, not by us.
1curl -X POST https://scraping-api.datafuel.ai/api/v1/task \2 -H "X-API-Key: $DATAFUEL_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "unlocker",6 "proxy_type": "Basic",7 "proxy_country": "US",8 "attributes": {9 "url": "https://example.com/product/123",10 "method": "GET",11 "result_format": "json",12 "result_use_ai": true,13 "result_ai_prompt": "Extract product name, price and stock status",14 "result_ai_format": {15 "title": "string",16 "price": "number",17 "in_stock": "boolean"18 },19 "ai_provider": "openai",20 "ai_model": "gpt-4o-mini",21 "ai_api_key": "$OPENAI_API_KEY"22 }23}'
Anti-bot and proxy management
Cloudflare, Akamai, DataDome, PerimeterX and every major CAPTCHA are cleared inside the request: fresh TLS fingerprint per call, rotation on ban, escalation from Basic to Premium when a datacenter exit is blocked. proxy_session_id pins one IP across calls when a login or a cart needs it.
1curl -X POST https://scraping-api.datafuel.ai/api/v1/task \2 -H "X-API-Key: $DATAFUEL_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "unlocker",6 "proxy_type": "Premium",7 "proxy_country": "GB",8 "proxy_session_id": "checkout-8f3a",9 "attributes": {10 "url": "https://example.com/account/orders",11 "method": "GET",12 "result_format": "json"13 }14}'
Bulk jobs, asynchronous
Hundreds of URLs across many sites in one POST /job. The id comes back at once, tasks run in parallel up to your plan's concurrency, and GET /job/{id}/results returns one entry per URL. An Idempotency-Key makes retries safe; failed tasks are not billed.
1# 1. queue the batch → {"id": "9f2c7a1e-…"}2curl -X POST https://scraping-api.datafuel.ai/api/v1/job \3 -H "X-API-Key: $DATAFUEL_API_KEY" \4 -H "Idempotency-Key: batch-2026-09-13-a" \5 -H "Content-Type: application/json" \6 -d '{7 "type": "unlocker",8 "multithreaded": true,9 "proxy_type": "Basic",10 "attributes": {11 "urls": [12 "https://amazon.com/dp/B0DEMO123",13 "https://walmart.com/ip/demo-456",14 "https://tripadvisor.com/Hotel_Review-demo"15 ],16 "result_format": "markdown"17 }18}'1920# 2. poll progress → {"status": "processing", "tasks_count": 3, "tasks_done": 1, "tasks_remaining": 2, "total_cost": 1}21curl https://scraping-api.datafuel.ai/api/v1/job/$JOB_ID -H "X-API-Key: $DATAFUEL_API_KEY"2223# 3. fetch every result once status is completed24curl https://scraping-api.datafuel.ai/api/v1/job/$JOB_ID/results -H "X-API-Key: $DATAFUEL_API_KEY"
JavaScript rendering
js_rendering: true loads the page in a real browser, waits for the selector you name, runs your page actions (click, scroll, type) and only then extracts. Images, fonts and media are never fetched, so rendering stays fast and costs 5 credits instead of 1.
1curl -X POST https://scraping-api.datafuel.ai/api/v1/task \2 -H "X-API-Key: $DATAFUEL_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "unlocker",6 "proxy_type": "Basic",7 "proxy_country": "US",8 "attributes": {9 "url": "https://app.example.com/product",10 "method": "GET",11 "js_rendering": true,12 "wait_for_selector": "#price",13 "result_format": "json"14 }15}'
Pay only for successful requests
Pick a monthly plan, buy credits once, or run unlimited threads. Failed requests are never billed.
Every plan includes every endpoint and every interface (API, MCP). One shared credit balance: you only pay for volume, and only for successful requests.
Test every endpoint with real credits. No card, no expiry pressure.
- 1,000 trial credits
- Every endpoint, API + MCP
- Community support
For production crawlers and agents that need headroom.
- Everything in Starter
- Auto top-up
- Priority chat support
For teams shipping data products on a schedule.
- Everything in Growth
- Usage alerts per API key
- Account manager
High volume at the lowest per-page rate. Checks out instantly.
- Everything in Business
- Dedicated IP pool
- 99.9% SLA
Committed volume, invoicing and governance.
- Custom volume pricing
- Custom concurrency (250+)
- SSO · audit log · DPA
| Free | Starter | Growth | Business | Scale | Enterprise | |
|---|---|---|---|---|---|---|
| Credits / month | 1K trial | 300K | 1M | 3.5M | 12M | Custom |
| Concurrent threads | 2 | 10 | 25 | 50 | 150 | 250+ |
| API keys | 1 | 3 | 10 | 25 | Unlimited | Unlimited |
| JS rendering | ||||||
| Residential proxies | ||||||
| AI in-flight (your key) | ||||||
| Geo-targeting · 195+ countries | ||||||
| Batch multi-URL | ||||||
| Unlocker · Crawl · Map · LLM Scraper | ||||||
| Auto top-up | — | — | ||||
| Support | Community | Priority chat | Account manager | Slack + phone | Dedicated + SLA |
Frequently asked questions
The real objections, answered straight.
What counts as a successful request?
Which output formats are supported?
When do I need js_rendering?
Do I need my own AI key?
Which protections are supported?
What happens when a target blocks me?
Are there rate limits or a concurrency cap?
Can I keep the same IP across several requests?
Ready to build?
Start with the free tier and scale as your project grows. No credit card, no sales call.
Talk to an engineer, not a chatbot.