REFERENCE

API spec (live).

OpenAPI 3.1, rendered straight from /openapi.json. What you see is what the server is actually serving — no copy lag between code and docs.

Generating a client SDK? Point openapi-generator, openapi-generator-cli, or Swagger Codegen at the URL above. Importing into Postman / Stoplight / Insomnia works the same way.

What this page is — and isn't

Is: the machine-readable surface of the API, in the format SDK generators and tooling expect. Generated by the server, served at /openapi.json, rendered here by Redoc.

Isn't: a tutorial. If you want narrative explanations, end-to-end curl examples, and gotchas — read the API reference instead. The two pages serve different audiences on purpose: tools read the spec, humans read the narrative.

Why hand-built (and not generated from Rust types)?

The v1 spec covers the 15 highest-traffic endpoints with loose object body typing. A full Rust-type-derived spec would require ~40 #[derive(ToSchema)] annotations plus careful handling of #[serde(flatten)] structs — days of work for an MVP whose only consumers are SDK generators and MCP tools. The hand-built spec ships in hours and gives those consumers everything they need.

The migration path is intentional: once we annotate more than ~30 endpoints, we'll swap the hand-built module for a utoipa-derived spec. The /openapi.json URL stays the same; consumers see no change.

Firecrawl compatibility

If you're migrating from Firecrawl, the camelCase-shape aliases live at /v1/scrape, /v1/crawl (singular), /v1/map, /v1/search. Same paths, same body shapes. Change the base URL to https://api.crawlcrawl.com, swap the API key for a crk_ key, and the rest of your code keeps working.

Build against the real surface.

Mint a key on the free tier and start firing requests against production.

Get an API key — free