POST
/search
Firecrawl APISearch and optionally scrape search results
- 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
→ 234 tokens · Vary: Accept
→ 234 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/search' \ -H "Authorization: Bearer $FIRECRAWL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "query": "string", "limit": 5, "tbs": "string", "location": "string", "timeout": 60000, "ignoreInvalidURLs": false, "scrapeOptions": {}}'Get a free Firecrawl API key → sponsored
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| query | body | string | Yes | The search query |
| limit | body | integer | No | Maximum number of results to return |
| tbs | body | string | No | Time-based search parameter |
| location | body | string | No | Location parameter for search results |
| timeout | body | integer | No | Timeout in milliseconds |
| ignoreInvalidURLs | body | boolean | No | Excludes URLs from the search results that are invalid for other Firecrawl endpoints. This helps reduce errors if you are piping data from search into other Firecrawl API endpoints. |
| scrapeOptions | body | object | No | Options for scraping search results |
Response 200 OK
{
"success": true,
"data": [
{
"title": "string",
"description": "string",
"url": "string",
"markdown": "string",
"html": "string",
"rawHtml": "string",
"links": [
"string"
],
"screenshot": "string",
"metadata": {
"title": "string",
"description": "string",
"sourceURL": "string",
"statusCode": 0,
"error": "string"
}
}
],
"warning": "string"
}