- Timeout
- 30s
- Cost ceiling
- 6 credits
RunHarvester Data API
Difficultpages.Clean data.
Send one URL through HTTP, browser, or residential infrastructure and receive usable HTML, text, or structured data. One request contract.
- HTTP
- Browser
- Residential
- JSON
- 200
- DONE
- 01
One request contract
One API. All modes. All paths.
- 02
Four execution paths
Route per target complexity.
- 03
Trackable lifecycle
Observable from start to finish.
- 04
Controlled cost
Predictable credits model.
URL in.
Evidence out.
Targets are not equally difficult. Pick a route explicitly or let auto mode choose the acquisition path while your integration keeps the same request contract.
Request Router
Routes to the optimal adapter for chosen path.
Auto selects the best path
- Status
- DONE
- Credits
- 4
Four execution
paths. One contract.
Pick the path that matches the target. The request contract and response shape stay the same.
HTTP
1credit
Direct HTTP requests for simple HTML pages and static content.
- Fastest latency
- Low headers
- Low cost
Browser
4credits
Headless browser for JavaScript, SPAs, and dynamic rendering.
- JS execution
- Wait for network idle
- Rendered document
Residential
8credits
Real residential IPs for access controls and anti-bot systems.
- Real IP pool
- Geo targeting
- Sticky sessions
Residential + Browser
16credits
Browser execution behind residential IPs for the toughest targets.
- JS + Real IPs
- Max compatibility
- Best success rate
Three calls.
One traceable job.
The API accepts work asynchronously. Your backend gets a stable request ID instead of holding a fragile connection.
- 01POST /requests
Create the job
Send the target and options. The API validates and returns a request ID.
202 Accepted - 02GET /requests/{id}
Follow its state
Poll the request endpoint. You'll see pending, running, and terminal states.
RUNNING - 03GET /requests/{id}/result
Read the result
Retrieve the validated output when the job completes successfully.
DONE
curl -X POST "https://api.runharvester.com/api/v1/data/requests" \
-H "X-API-Key: $RUNHARVESTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/products",
"mode": "auto",
"formats": ["html"],
"extract": {
"schema": "products.json",
"wait_for": "network-idle"
}
}'Everything the request
needs. Built in.
Everything you need to collect, shape, and deliver data at scale—built into the request lifecycle.
Inside every job
- Stable request ID
- Request status
- Lifecycle events
- Tenant isolation
- Encrypted inputs
- Idempotent creation
- Usage settlement
- Result retention
Activate when needed
- Browser execution
- Residential route
- Country targeting
- Headers & cookies
- Timeouts
- Cost ceiling
- HTML, Text, JSON
- Batch requests
- Scoped API keys
HTML in.
Structured data out.
Extract exactly what you need. Define a schema, route the request, and receive validated JSON.
Field schema
{
"product": {
"name": "string",
"price": "number",
"availability": "string",
"rating": "number"
}
}Extraction recipe
- RouterAdaptive
- ExtractCSS selectors
- ValidateSchema
Validated JSON
{
"product": {
"name": "Trail Runner",
"price": 129.00,
"availability": "in stock",
"rating": 4.6
}
}The collection stack,
connected.
RunHarvester fits cleanly into your data infrastructure. Reliable primitives. Clear boundaries. Predictable costs.
Acquire
Reach any web resource reliably.
Routes, retries, anti-bot handling
HTTP · Browser · Residential
Shape
Turn raw pages into useful data.
Extraction, validation, formatting
HTML · Text · JSON
Operate
Run at scale with observability.
Events, metrics, alerts, logs
Lifecycle · Webhooks
Control
Govern access, cost, and safety.
Auth, limits, budgets, retention
Tenants · Quotas · Keys
Built for production.
Not demos.
Engineered for reliability, security, and scale from day one.
Scoped API keys
Least-privilege access per integration.
SSRF-aware
Safe request handling and network egress.
Encrypted at rest
Sensitive data protected in transit and at rest.
Idempotent creation
Retry safe by default. No duplicate work.
Observable lifecycle
Every state change is recorded.
Recoverable jobs
Resume and rehandle execution built in.
Tenant boundaries
Isolation by tenant and environment.
Retention & cleanup
Automatic retention and secure cleanup.
Resources for builders
Before your first request
Frequently asked questions
Clear answers for choosing a route, handling results, and running the API in production.
What does a request return?
Every accepted request returns a stable request ID. Use it to follow the lifecycle and retrieve HTML, text, or validated JSON.
Which mode should I use?
Start with Adaptive. Choose HTTP for static pages, Browser for JavaScript, and Residential when the target requires a real-user network route.
Is JavaScript supported?
Yes. Browser mode renders JavaScript applications, supports network-idle waits, and can return the rendered document.
Is the API async?
Yes. Creation returns immediately with a request ID while acquisition, extraction, and validation continue in the background.
Can I limit cost?
Yes. Set an execution path or cost ceiling so the router cannot exceed the credits you allow for a request.
Can I send headers and cookies?
Yes. Scoped request options can include headers, cookies, sessions, country targeting, and browser-specific controls.
Can I receive structured JSON?
Yes. Provide a field schema or extraction recipe and RunHarvester returns a validated JSON result with explicit terminal status.
The complete data infrastructure
Build the first request.
docs.runharvester.comAuthentication, endpoints, lifecycle states, examples, and the API playground live in the docs.
- POST /requests202 Accepted
- GET /requests/{id}RUNNING
- GET /requests/{id}/resultDONE