---
title: "Start an asynchronous same-site crawl"
method: POST
path: "/v1/crawl"
tags: ["Scrape"]
---

# Start an asynchronous same-site crawl

`POST /v1/crawl`

## Request

- Base URL: `https://search.elixpo.com`
- URL: `https://search.elixpo.com/v1/crawl`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`
  - API key in query parameter `key`
- TypeScript: <https://skmtc.dev/elixpo/apis/lixsearch-api/docs/v1/crawl/post.ts> (a function with typed inputs; its response is checked against the schema)

Jobs are stored in Redis and expire after 24 hours.

## Request body

- object
  - `url` string, uri, required
  - `limit` integer
  - `maxDepth` integer
  - `includePaths` string[]
  - `excludePaths` string[]
  - `scrapeOptions` ScrapeOptions
    - `formats` ScrapeFormat[]
      - union
        - 'markdown' | 'html' | 'rawHtml' | 'links' | 'screenshot' | 'screenshot@fullPage' | 'json'
        - object
          - `type` 'json', required
          - `schema` object: JSON Schema the extracted object should follow
          - `prompt` string
    - `onlyMainContent` boolean
    - `waitFor` integer: Milliseconds to wait after load (forces browser rendering)
    - `timeout` integer

## Response `200`

Crawl started

- ScrapeJobStarted
  - `success` boolean
  - `id` string
  - `url` string: Status URL

## Other responses

- `400`: Invalid request or URL rejected by the SSRF guard
- `401`: API key required

## Changes

- **2026-10-27** `dee7777b8958`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elixpo/apis/lixsearch-api/changes/v1/crawl/post.md)

---

[API](https://skmtc.dev/elixpo/apis/lixsearch-api.md) - [All operations](https://skmtc.dev/elixpo/apis/lixsearch-api/llms.txt) - [OpenAPI document](https://skmtc.dev/elixpo/apis/lixsearch-api/revisions/dee7777b8958?raw)
