# Olostep Web Crawler - Start Crawl

> Olostep Web Crawler - Start Crawl is a paid API for AI agents from x402.orthogonal.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-13).

Initiates a multi-page web crawl starting from a given URL, returning a crawl ID to track the async job's progress.

## Facts

- Endpoint: POST https://x402.orthogonal.com/olostep/v1/crawls
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/olostep-web-crawler-start-crawl-c13a1959
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UNR3dUvr85zJmRPlOfB_l

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability olostep-web-crawler-start-crawl-c13a1959 -d '<json body>'
```

Example prompt: Start a crawl of https://docs.example.com, go up to 3 levels deep, limit it to 50 pages, only include URLs under /guides/**, and send a POST to https://myapp.com/webhook when it's done.

## When to prefer this

Choose this endpoint when you need to crawl multiple pages across a website asynchronously, especially when the full site has many pages or requires deep traversal. Prefer this over single-URL scraping endpoints when you need to index an entire site, a section of a site, or gather content matching a pattern. Ideal when you can tolerate a 1–10 minute wait and want webhook notification on completion. Use the include_urls and exclude_urls filters to target specific site sections precisely.

## Known failure modes

- Invalid or unreachable start_url returns an error immediately
- Timeout reached before crawl completes — partial results returned
- max_pages or max_depth set too low may return very limited content
- Webhook URL unreachable means results must be polled manually
- Rate limits or bot protection on target site may block crawl progress
- Missing start_url causes validation error on submission

## How this service works

Starts a new crawl. You receive a `id` to track the progress. The operation may take 1-10 mins depending upon the site and depth and pages parameters.

## Output

Returns a crawl ID that can be used to poll the status and retrieve results of the async crawl job. The actual crawl runs for 1–10 minutes depending on site size and configured depth/pages parameters. When a webhook_url is provided, the completed crawl results are POSTed there automatically.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "top_n": {
   "type": "number",
   "description": "An optional number to only crawl the top N most relevant links on every page as per search query."
  },
  "timeout": {
   "type": "number",
   "description": "End the crawl after n seconds with the pages completed until then. May take ~10s extra from provided timeout."
  },
  "max_depth": {
   "type": "number",
   "description": "Maximum depth of the crawl. Useful to extract only up to n-degree of links."
  },
  "max_pages": {
   "type": "number",
   "description": "Maximum number of pages to crawl. Recommended for most use cases like crawling an entire website."
  },
  "start_url": {
   "type": "string",
   "description": "The starting point of the crawl."
  },
  "webhook_url": {
   "type": "string",
   "description": "An optional POST request endpoint called when this crawl is completed. The body of the request will be same as the response of this [`v1/crawls/{crawl_id}`](./info#response-created) endpoint."
  },
  "exclude_urls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "URL path names in glob pattern to exclude. For example: `/careers/**`. Excluded URLs will supersede included URLs."
  },
  "include_urls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "URL path patterns to include in the crawl using glob syntax. Defaults to `/**` which includes all URLs. Use patterns like `/blog/**` to crawl specific sections (e.g., only blog pages), `/products/*.html` for product pages, or multiple patterns for different sections. Supports standard glob features like * (any characters) and ** (recursive matching)."
  },
  "search_query": {
   "type": "string",
   "description": "An optional search query to find specific links and also sort the results by relevance."
  },
  "include_external": {
   "type": "boolean",
   "description": "Crawl first-degree external links."
  },
  "include_subdomain": {
   "type": "boolean",
   "description": "Include subdomains of the website. `false` by default."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/olostep-web-crawler-start-crawl-c13a1959/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.orthogonal.com](https://www.zero.xyz/host/x402.orthogonal.com/llms.txt)
