---
title: "Web search"
method: POST
path: "/search"
---

# Web search

`POST /search`

## Request

- Base URL: `https://fastcrawl.net/api/v1`
- URL: `https://fastcrawl.net/api/v1/search`
- Auth: HTTP bearer

Ranked web results. Add include_content to also get the first N results' page markdown in the same call: 1 credit for the search, 1 credit per content page (a scrape-cache hit is free), and a page that fails comes back content: null + content_error while the request still returns 200. REST only - the MCP search tool stays one credit per call.

## Request body

- object
  - `query` string, required: Search query.
  - `limit` integer: Max results (default 5).
  - `include_content` integer: Also return page markdown for the first N results (0 or absent = results only; 400 above 5). The whole request - search plus fetches - has a 60s budget; on budget the unfetched rows come back content: null + content_error: budget exceeded.

## Response `200`

Results; with include_content the first N rows carry page markdown in content.

- object
  - `success` boolean
  - `query` string
  - `results` object[]
    - `title` string
    - `url` string
    - `snippet` string
    - `content` string, nullable: Page markdown for the rows include_content covered; null for rows past N and when the fetch failed.
    - `content_error` string, nullable: Why content is null (target_not_found, scrape_empty_content, target_blocked, budget exceeded, ...). null on success.

## Other responses

- `400`: query missing, or include_content above 5 (invalid_request)
- `401`: missing_api_key / invalid_api_key - body carries remediation hint + WWW-Authenticate header
- `422`: search failed (search backend down)
- `429`: plan limit (error_code monthly_limit|daily_limit|rate_limit)

---

[API](https://skmtc.dev/fastcrawl/apis/fastcrawl-api.md) · [All operations](https://skmtc.dev/fastcrawl/apis/fastcrawl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fastcrawl/apis/fastcrawl-api/revisions/83951a14d005?raw)
