POST
/deep-research
Firecrawl APIStart a deep research operation on a query
- Base URL
- https://api.firecrawl.dev/v1
- Auth
- Authorization: Bearer <FIRECRAWL_API_KEY>
- Last verified
- 2026-09-03 · upstream hash matched
Actions
Agents: curl -H "Accept: text/markdown" this URL
→ 219 tokens · Vary: Accept
→ 219 tokens · Vary: Accept
Critical gotchas
The formats field controls the output shape and defaults to ["markdown"]. Omitting it does not return HTML — request ["markdown","html"] explicitly.
/crawl is asynchronous: it returns a job id, and results are collected by polling /crawl/{id} until status is completed.
cURL
curl -X POST 'https://api.firecrawl.dev/v1/deep-research' \ -H "Authorization: Bearer $FIRECRAWL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "query": "string", "maxDepth": 7, "timeLimit": 300, "maxUrls": 20, "analysisPrompt": "string", "systemPrompt": "string", "formats": [ [ "markdown" ] ], "jsonOptions": { "schema": {}, "systemPrompt": "string", "prompt": "string" }}'Get a free Firecrawl API key → sponsored
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| query | body | string | Yes | The query to research |
| maxDepth | body | integer | No | Maximum depth of research iterations |
| timeLimit | body | integer | No | Time limit in seconds |
| maxUrls | body | integer | No | Maximum number of URLs to analyze |
| analysisPrompt | body | string | No | The prompt to use for the final analysis. Useful to format the final analysis markdown in a specific way. |
| systemPrompt | body | string | No | The system prompt to use for the research agent. Useful to steer the research agent to a specific direction. |
| formats | body | string[] | No | Request body field formats. |
| jsonOptions | body | object | No | Options for JSON output |
Response 200 OK
{
"success": true,
"id": "00000000-0000-4000-8000-000000000000"
}