DataFuel Scraping API
OpenAPI spec

Introduction

DataFuel gives you one API for scraping protected pages and querying AI answer engines through residential proxies. Send a target, get structured results — no browser farms, no proxy management.

Base URL
API

Authentication

Every request needs your API key in the X-API-Key header. Keys look like dfk_… — keep them server-side.

cURL

                        

Credits are deducted per completed task. Check remaining credits with GET /users/@me/balance; concurrency and monthly limits are on GET /users/@me.

Tasks, jobs, map and crawl

TASK

Synchronous, one target. POST /task holds the connection until the scrape finishes and returns the result in the response. Set client timeouts to 120s+.

JOB

Asynchronous batch. POST /job takes many targets, returns a job id instantly. Poll progress, then fetch results.

MAP

Synchronous URL discovery. POST /map reads the site’s sitemaps and the links on the page and returns one deduplicated list of same-site URLs. Flat price, no scraping. Details.

CRAWL

Asynchronous site crawl. POST /crawl follows links from a start URL breadth-first and scrapes every page with unlocker options. Returns a job id; poll progress, page through results.

Rule of thumb: one URL or prompt → task. A list → job with multithreaded: true. Need the URLs of a site → map. Need the content of a site → crawl.

Idempotency

POST /task, POST /map, POST /job and POST /crawl accept an Idempotency-Key header (1–255 chars, unique per account). Retrying with the same key returns the original task or job instead of creating and billing a new one; a sync task that is still running is waited for. The key is bound to the request: the same key with a different type, attributes or proxy settings is rejected with 422 IDEMPOTENCY_KEY_REUSED.

cURL

                        

MCP server

The same API is exposed as a Model Context Protocol server for agents and AI IDEs: streamable HTTP, stateless, JSON responses. Authenticate with the same X-API-Key header. Every tool call is billed exactly like its REST counterpart.

Endpoint
MCP
Claude Code

                        
Cursor / Claude Desktop / generic (mcp.json)

                        
ToolWhat it doesREST equivalent
scrapeRun one task and wait for the result. type + attributes as in POST /task.POST /task
get_taskFetch a task and its result by id.GET /task/{id}
mapDiscover the URLs of a site. Flat inputs: url, search, limit, sitemap, include_subdomains, ignore_sitemap, sitemap_only, proxy_type, proxy_country.POST /map
create_jobQueue a batch. Plural targets in attributes (urls / prompts).POST /job
get_jobJob status and counters.GET /job/{id}
get_job_resultsPer-task results of a job.GET /job/{id}/results
crawlStart a crawl. attributes = crawl config plus unlocker options; returns job_id.POST /crawl
get_crawlCrawl status, page counters, stop reason.GET /crawl/{id}
get_crawl_resultsPage through crawled pages; pass next_cursor back as cursor.GET /crawl/{id}/results
get_balanceRemaining credits.GET /users/@me/balance
Long calls. scrape and map block until the result is ready (up to 10 minutes); the job and crawl tools return immediately and are polled.

Errors

Errors return a consistent envelope:

application/json

                        
StatusMeaning
400Malformed body, unknown task type, or attributes that don’t match it
401Missing or invalid X-API-Key
402Not enough credits
404Task or job not found (also returned for ids you don’t own)
422Idempotency-Key reused for a different request
500INTERNAL_ERROR — retry, then contact us with the timestamp

Pricing

Credits deducted per completed task. Unlocker cost depends on the proxy plan (proxy_type) and whether the page is fetched with a plain request or rendered in a real browser (js_rendering: true).

UnlockerBasicPremium
Request (js_rendering off)1 credit10 credits
Browser (js_rendering on)5 credits20 credits
Map & crawlBasicPremium
Map (per call, any number of links)1 credit10 credits
Crawl, request (per page, charged when queued; capped by max_pages)1 credit10 credits
Crawl, browser (js_rendering on)5 credits20 credits
LLM ScraperCost
Any engine100 credits per request