cURL
curl --request GET \
--url https://api.brightdata.com/dca/log/{job_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.brightdata.com/dca/log/{job_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.brightdata.com/dca/log/{job_id}', 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.brightdata.com/dca/log/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.brightdata.com/dca/log/{job_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.brightdata.com/dca/log/{job_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brightdata.com/dca/log/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"Id": "j_ma13y9ay1piehrso8r",
"Status": "done",
"Collector": "c_m9im5n7v82p2y35la",
"Template": "t_m9jty150kxgwtzcgi.3",
"Inputs": 1,
"dup_inputs": 0,
"Lines": 60,
"Fails": 0,
"Pages": 1,
"Pages_left": 0,
"Success": 1,
"Navigations": 2,
"created": "2025-04-28T13:22:16.857Z",
"started": "2025-04-28T13:22:17.502Z",
"finished": "2025-04-28T13:23:28.961Z",
"trigger": "amite@brightdata.com",
"Success_rate": 1,
"Job_time": 71459,
"Queue_time": 645
}管理作业
获取作业元数据
GET /dca/log/ 返回 Bright Data Scraper Studio 作业的元数据:状态、输入数量、输出行数、失败数量和运行时间戳。
GET
/
dca
/
log
/
{job_id}
cURL
curl --request GET \
--url https://api.brightdata.com/dca/log/{job_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.brightdata.com/dca/log/{job_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.brightdata.com/dca/log/{job_id}', 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.brightdata.com/dca/log/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.brightdata.com/dca/log/{job_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.brightdata.com/dca/log/{job_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brightdata.com/dca/log/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"Id": "j_ma13y9ay1piehrso8r",
"Status": "done",
"Collector": "c_m9im5n7v82p2y35la",
"Template": "t_m9jty150kxgwtzcgi.3",
"Inputs": 1,
"dup_inputs": 0,
"Lines": 60,
"Fails": 0,
"Pages": 1,
"Pages_left": 0,
"Success": 1,
"Navigations": 2,
"created": "2025-04-28T13:22:16.857Z",
"started": "2025-04-28T13:22:17.502Z",
"finished": "2025-04-28T13:23:28.961Z",
"trigger": "amite@brightdata.com",
"Success_rate": 1,
"Job_time": 71459,
"Queue_time": 645
}获取已触发的 Bright Data Scraper Studio 作业的元数据:状态、输入数量、成功与失败数量、页面数量和运行时间戳。当您需要观察作业情况时使用该端点,例如跟踪有多少输入成功、有多少失败,或作业耗时多久。
该端点只返回元数据。如需下载实际抓取的数据,请使用接收批处理数据。
常见的
请求
job_id 是 POST /dca/trigger 返回的 collection_id。
curl "https://api.brightdata.com/dca/log/$JOB_ID" \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY"
response = requests.get(
f"https://api.brightdata.com/dca/log/{job_id}",
headers={"Authorization": f"Bearer {API_TOKEN}"},
)
metadata = response.json()
const response = await fetch(
`https://api.brightdata.com/dca/log/${jobId}`,
{ headers: { Authorization: `Bearer ${process.env.BRIGHTDATA_API_KEY}` } }
);
const metadata = await response.json();
响应
{
"id": "j_ma13y9ay1piehrso8r",
"status": "done",
"collector": "c_m9im5n7v82p2y35la",
"template": "t_m9jty150kxgwtzcgi.3",
"inputs": 1,
"dup_inputs": 0,
"lines": 60,
"fails": 0,
"pages": 1,
"pages_left": 0,
"success": 1,
"navigations": 2,
"created": "2025-04-28T13:22:16.857Z",
"started": "2025-04-28T13:22:17.502Z",
"finished": "2025-04-28T13:23:28.961Z",
"trigger": "user@example.com",
"success_rate": 1,
"job_time": 71459,
"queue_time": 645
}
status 值:building、running、done、failed、cancelled。
何时使用该端点
- 为仪表板或监控跟踪作业进度
- 直接从
success_rate读取成功率 - 找出对输入做了去重的作业(
dup_inputs > 0) - 直接从
job_time(毫秒)读取作业耗时,从queue_time读取排队等待时间
错误
| 状态 | 原因 | 解决方法 |
|---|---|---|
401 Unauthorized | 令牌缺失、格式错误或已被撤销 | 从账户设置 → API 令牌重新复制 |
404 Not Found | 作业 ID 不存在或已过期 | 确认该 ID 与 /dca/trigger 最近返回的 collection_id 一致 |
5xx | Bright Data API 临时错误 | 使用指数退避重试,例如 1 秒、2 秒、4 秒 |
相关内容
授权
在 Authorization 头中使用您的 Bright Data API Key 作为 Bearer token。
认证方法:
- 从 Bright Data 账户设置获取您的 API Key: https://brightdata.com/cp/setting/users
- 在请求的 Authorization 头中包含 API Key
- 格式:
Authorization: Bearer YOUR_API_KEY
示例:
Authorization: Bearer b5648e1096c6442f60a6c4bbbe73f8d2234d3d8324554bd6a7ec8f3f251f07df
了解如何获取 Bright Data API Key: https://docs.brightdata.com/cn/api-reference/authentication#如何生成新的-api-key?
路径参数
要获取的任务 ID。
响应
200 - application/json
OK
此页面对您有帮助吗?