hydrafetch-com Crawl & batch API

Whole sites rather than single pages. Map every URL, crawl with depth and path rules, batch a list you already have, and read the webhook deliveries for either.

Operations 7

POST /v1/web/map Map a site #
POST /v1/web/crawl Start a crawl #
POST /v1/web/batch Start a batch #
GET /v1/web/crawl/{id} Get crawl status #
GET /v1/web/batch/{id} Get batch status #
GET /v1/web/crawl/{id}/deliveries List webhook deliveries for a crawl #
GET /v1/web/batch/{id}/deliveries List webhook deliveries for a batch #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hydrafetch-com:hydrafetch-com-crawl-batch-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hydrafetch-com-crawl-batch-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hydrafetch Crawl & batch API
  description: 'Hydrafetch is a web data API for developers and agents. Send a URL and get back clean Markdown, the page''s own structured data, schema-shaped JSON, links, or a summary, with the navigation, banners and boilerplate stripped out. Scrape one page, crawl a whole site, run a search, or extract to a schema, all through one API with one response shape. Every call costs one credit a page whatever it took to fetch, and failures are never billed.


    Point us at a whole site and get every page. Ask a question and get answers with per-field

    confidence and the passage each value came from. You describe the outcome you want — the

    pipeline decides how to get it.


    ## Authentication


    Every request is authenticated with your API key in the `X-API-Key` header. Keys are scoped to a

    workspace and carry its credit balance.


    ## Credits


    Calls are billed in credits and charged only on success. A standard scrape is one credit; richer

    formats and the extraction tier cost more. Each response reports what it consumed.


    ## Conventions


    All timestamps are UTC ISO 8601. Long-running jobs (crawl, batch) return a job id you poll, or a

    webhook you register.


    ## Errors


    Every failure returns the same shape, whatever the status:


    ```json

    { "success": false, "error": { "code": "INSUFFICIENT_CREDITS", "message": "Insufficient credits" },

    "meta": { "requestId": "019e8a3c-9f0b-7c12-88ab-1d2e3f4a5b6c" } }

    ```


    Branch on `error.code`, which is stable. `error.message` is written for a person and may be

    reworded without notice. Validation failures add `error.details`. Quote `meta.requestId` when

    asking us about a specific failure. Every operation documents the codes it can return.


    ## Rate limits


    Limits are per workspace, not per key, over a 60 second window, and the ceiling comes from your

    plan. Every response carries the IETF RateLimit header fields so you can self-throttle rather

    than discovering the limit by hitting it:


    ```http

    RateLimit-Policy: "workspace";q=600;w=60

    RateLimit: "workspace";r=599;t=42

    ```


    `q` is the quota, `w` the window in seconds, `r` the requests remaining and `t` the seconds until

    the window resets. A 429 also carries `Retry-After` in seconds; wait that long rather than

    retrying immediately. The older `X-RateLimit-Limit`, `X-RateLimit-Remaining` and

    `X-RateLimit-Reset` headers are still sent and mean the same thing.


    ## Versioning and deprecation


    The version is in the path: every endpoint on this API lives under `/v1/`. Within a version we

    only make additive changes — new endpoints, new optional parameters, new fields in a response.

    Adding a field to a response is not a breaking change, so parse defensively and ignore what you

    do not recognise.


    Anything that would break an existing integration ships under a new version path instead. When an

    endpoint or a version is retired, the responses say so before it stops working:


    ```http

    Deprecation: @1780272000

    Sunset: Sat, 01 May 2027 00:00:00 GMT

    Link: ; rel="deprecation"

    ```


    `Deprecation` (RFC 9745) marks when the endpoint became deprecated, `Sunset` (RFC 8594) when it

    stops responding, and the `deprecation` link relation points at what to move to. Nothing on this

    API is deprecated today, so you will not see these headers yet. Watch for them rather than for an

    announcement: the headers are the notice, and the linked changelog carries what to move to.'
  version: '1.0'
  contact:
    name: Hydrafetch
    url: https://hydrafetch.com
    email: support@hydrafetch.com
servers:
- url: https://api.hydrafetch.com
  description: Production
security:
- apiKey: []
tags:


# --- truncated at 32 KB (73 KB total) ---
# Full source: https://artifacts.apis.io/hydrafetch-com/openapi/hydrafetch-com-crawl-batch-api-openapi.yml