---
title: "Start a web crawl job"
method: POST
path: "/api/web/crawl"
---

# Start a web crawl job

`POST /api/web/crawl`

Starts an asynchronous crawl job that follows links from a starting URL and returns content from each page in the specified formats.

## Request body

- StartWebCrawlJobParams
  - `url` string, required
  - `stealth` 'none' | 'auto' | 'ultra'
  - `outputs` FetchOutputOptions
    - `formats` union[]
      - union
        - FetchOutputMarkdown
          - `type` 'markdown', required
        - FetchOutputHtml
          - `type` 'html', required
        - FetchOutputLinks
          - `type` 'links', required
        - FetchOutputScreenshot
          - `fullPage` boolean
          - `format` 'jpeg' | 'png' | 'webp'
          - `cropToContent` boolean
          - `cropToContentMaxHeight` integer
          - `cropToContentMinHeight` integer
          - `type` 'screenshot', required
        - FetchOutputJson
          - `schema` object
          - `prompt` string — Natural language prompt describing what data to extract. If only prompt is provided, a schema is auto-generated from it. If both prompt and schema are provided, the schema defines the output structure while the prompt provides additional guidance for the extraction.
          - `type` 'json', required
        - FetchOutputBranding
          - `type` 'branding', required
        - 'markdown' | 'html' | 'links' | 'screenshot' | 'branding'
    - `sanitize` 'none' | 'basic' | 'advanced'
    - `includeSelectors` string[]
    - `excludeSelectors` string[]
    - `storageState` FetchStorageStateOptions
      - `localStorage` object
      - `sessionStorage` object
  - `browser` FetchBrowserOptions
    - `screen` ScreenConfig
      - `width` number
      - `height` number
    - `profileId` string
    - `solveCaptchas` string
    - `location` FetchBrowserLocationOptions
      - `country` string
      - `state` string
      - `city` string
  - `navigation` FetchNavigationOptions
    - `waitUntil` 'load' | 'domcontentloaded' | 'networkidle'
    - `timeoutMs` integer
    - `waitFor` integer
  - `cache` FetchCacheOptions
    - `maxAgeSeconds` integer
  - `crawlOptions` WebCrawlOptions
    - `maxPages` integer
    - `followLinks` boolean
    - `ignoreSitemap` boolean
    - `excludePatterns` string[]
    - `includePatterns` string[]

## Response `200`

Crawl job started successfully

- object
  - `jobId` string, required

## Other responses

- `400` — Invalid request parameters
- `500` — Server error

---

[API](https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api.md) · [All operations](https://skmtc.dev/hyperbrowser/apis/hyperbrowser-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hyperbrowser/hyperbrowser-api/revisions/9d8b355ebbf2/schema)
