针对查询启动深度研究操作
curl --request POST \
--url https://api.firecrawl.dev/v1/deep-research \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"analysisPrompt": "<string>",
"formats": [
"markdown"
],
"jsonOptions": {
"prompt": "<string>",
"schema": {},
"systemPrompt": "<string>"
},
"maxDepth": 7,
"maxUrls": 20,
"systemPrompt": "<string>",
"timeLimit": 300
}
'import requests
url = "https://api.firecrawl.dev/v1/deep-research"
payload = {
"query": "<string>",
"analysisPrompt": "<string>",
"formats": ["markdown"],
"jsonOptions": {
"prompt": "<string>",
"schema": {},
"systemPrompt": "<string>"
},
"maxDepth": 7,
"maxUrls": 20,
"systemPrompt": "<string>",
"timeLimit": 300
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: '<string>',
analysisPrompt: '<string>',
formats: ['markdown'],
jsonOptions: {prompt: '<string>', schema: {}, systemPrompt: '<string>'},
maxDepth: 7,
maxUrls: 20,
systemPrompt: '<string>',
timeLimit: 300
})
};
fetch('https://api.firecrawl.dev/v1/deep-research', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.firecrawl.dev/v1/deep-research",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => '<string>',
'analysisPrompt' => '<string>',
'formats' => [
'markdown'
],
'jsonOptions' => [
'prompt' => '<string>',
'schema' => [
],
'systemPrompt' => '<string>'
],
'maxDepth' => 7,
'maxUrls' => 20,
'systemPrompt' => '<string>',
'timeLimit' => 300
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.firecrawl.dev/v1/deep-research"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"analysisPrompt\": \"<string>\",\n \"formats\": [\n \"markdown\"\n ],\n \"jsonOptions\": {\n \"prompt\": \"<string>\",\n \"schema\": {},\n \"systemPrompt\": \"<string>\"\n },\n \"maxDepth\": 7,\n \"maxUrls\": 20,\n \"systemPrompt\": \"<string>\",\n \"timeLimit\": 300\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.firecrawl.dev/v1/deep-research")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"analysisPrompt\": \"<string>\",\n \"formats\": [\n \"markdown\"\n ],\n \"jsonOptions\": {\n \"prompt\": \"<string>\",\n \"schema\": {},\n \"systemPrompt\": \"<string>\"\n },\n \"maxDepth\": 7,\n \"maxUrls\": 20,\n \"systemPrompt\": \"<string>\",\n \"timeLimit\": 300\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v1/deep-research")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"<string>\",\n \"analysisPrompt\": \"<string>\",\n \"formats\": [\n \"markdown\"\n ],\n \"jsonOptions\": {\n \"prompt\": \"<string>\",\n \"schema\": {},\n \"systemPrompt\": \"<string>\"\n },\n \"maxDepth\": 7,\n \"maxUrls\": 20,\n \"systemPrompt\": \"<string>\",\n \"timeLimit\": 300\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"success": true
}{
"error": "Invalid parameters provided",
"success": false
}Deep Research
POST
/
deep-research
针对查询启动深度研究操作
curl --request POST \
--url https://api.firecrawl.dev/v1/deep-research \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"analysisPrompt": "<string>",
"formats": [
"markdown"
],
"jsonOptions": {
"prompt": "<string>",
"schema": {},
"systemPrompt": "<string>"
},
"maxDepth": 7,
"maxUrls": 20,
"systemPrompt": "<string>",
"timeLimit": 300
}
'import requests
url = "https://api.firecrawl.dev/v1/deep-research"
payload = {
"query": "<string>",
"analysisPrompt": "<string>",
"formats": ["markdown"],
"jsonOptions": {
"prompt": "<string>",
"schema": {},
"systemPrompt": "<string>"
},
"maxDepth": 7,
"maxUrls": 20,
"systemPrompt": "<string>",
"timeLimit": 300
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: '<string>',
analysisPrompt: '<string>',
formats: ['markdown'],
jsonOptions: {prompt: '<string>', schema: {}, systemPrompt: '<string>'},
maxDepth: 7,
maxUrls: 20,
systemPrompt: '<string>',
timeLimit: 300
})
};
fetch('https://api.firecrawl.dev/v1/deep-research', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.firecrawl.dev/v1/deep-research",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => '<string>',
'analysisPrompt' => '<string>',
'formats' => [
'markdown'
],
'jsonOptions' => [
'prompt' => '<string>',
'schema' => [
],
'systemPrompt' => '<string>'
],
'maxDepth' => 7,
'maxUrls' => 20,
'systemPrompt' => '<string>',
'timeLimit' => 300
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.firecrawl.dev/v1/deep-research"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"analysisPrompt\": \"<string>\",\n \"formats\": [\n \"markdown\"\n ],\n \"jsonOptions\": {\n \"prompt\": \"<string>\",\n \"schema\": {},\n \"systemPrompt\": \"<string>\"\n },\n \"maxDepth\": 7,\n \"maxUrls\": 20,\n \"systemPrompt\": \"<string>\",\n \"timeLimit\": 300\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.firecrawl.dev/v1/deep-research")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"analysisPrompt\": \"<string>\",\n \"formats\": [\n \"markdown\"\n ],\n \"jsonOptions\": {\n \"prompt\": \"<string>\",\n \"schema\": {},\n \"systemPrompt\": \"<string>\"\n },\n \"maxDepth\": 7,\n \"maxUrls\": 20,\n \"systemPrompt\": \"<string>\",\n \"timeLimit\": 300\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v1/deep-research")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"<string>\",\n \"analysisPrompt\": \"<string>\",\n \"formats\": [\n \"markdown\"\n ],\n \"jsonOptions\": {\n \"prompt\": \"<string>\",\n \"schema\": {},\n \"systemPrompt\": \"<string>\"\n },\n \"maxDepth\": 7,\n \"maxUrls\": 20,\n \"systemPrompt\": \"<string>\",\n \"timeLimit\": 300\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"success": true
}{
"error": "Invalid parameters provided",
"success": false
}Deep Research 端点可对任意主题进行 AI 驱动的深度研究与分析。您只需提供研究查询,Firecrawl 将自主探索全网、收集相关信息,并将结果整合为全面的洞察。
在找状态端点?请查看 Deep Research Status 端点。
响应包括:
计费根据已分析的 URL 数量计算:
这是旧版 v1 Deep Research API。对于新的研究代理,请使用当前的 Deep Research use case,它基于 Search 和 Scrape 构建。
响应结构
-
activities:研究活动列表,包含:
type:活动类型 (‘search’,‘extract’,‘analyze’,‘reasoning’,‘synthesis’,‘thought’)status:状态 (‘processing’,‘complete’,‘error’)message:活动/发现的说明timestamp:ISO 时间戳depth:研究深度级别
-
sources:被引用的 URL,包含:
title:来源标题description:来源描述url:来源 URLicon:来源网站图标
- finalAnalysis:综合分析 (完成时提供)
- status:总体状态 (‘processing’,‘completed’,‘failed’)
- currentDepth:当前研究深度
- maxDepth:最大研究深度
- totalUrls:已分析的 URL 数量
- expiresAt:结果到期的 ISO 时间戳
限制
- 最适用于公开信息的主题
- 研究任务最长为 10 分钟
- 关键信息建议人工核验
- Alpha 功能——方法论与输出可能会调整
计费
- 每个 URL = 1 个积分
- 使用
maxUrls参数控制用量
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
需要研究的查询
用于最终分析的提示词。可用于按特定方式格式化最终分析的 Markdown。
Available options:
markdown, json JSON 输出选项
Show child attributes
Show child attributes
研究迭代最大深度
Required range:
1 <= x <= 12要分析的 URL 数量上限
Required range:
1 <= x <= 1000供研究代理使用的系统提示词,可用于将其引导到特定的研究方向。
时间限制(秒)
Required range:
30 <= x <= 600⌘I

