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
  • Async lifecycle
HTTP, browser, and residential acquisition paths route through RunHarvester and return structured data with a trackable request lifecycle.
  • HTTP
  • Browser
  • Residential
RunHarvesterAgent cluster
  • JSON
  • 200
  • DONE
  1. 01

    One request contract

    One API. All modes. All paths.

  2. 02

    Four execution paths

    Route per target complexity.

  3. 03

    Trackable lifecycle

    Observable from start to finish.

  4. 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.

Learn more
Select a route mode
Target URLexample.com/products
Timeout
30s
Cost ceiling
6 credits
Acquisition path
Adaptive mode

Auto selects the best path

Validated resultHTML · Text · JSON
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.

  1. 01POST /requests

    Create the job

    Send the target and options. The API validates and returns a request ID.

    202 Accepted
  2. 02GET /requests/{id}

    Follow its state

    Poll the request endpoint. You'll see pending, running, and terminal states.

    RUNNING
  3. 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

  1. RouterAdaptive
  2. ExtractCSS selectors
  3. 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.com

Authentication, endpoints, lifecycle states, examples, and the API playground live in the docs.

  1. POST /requests202 Accepted
  2. GET /requests/{id}RUNNING
  3. GET /requests/{id}/resultDONE