error 消息的 JSON 响应体,绝不是零匹配的成功搜索。HTTP 200 且 documents 为空数组表示搜索已执行但没有结果。
Business Search 会返回哪些状态码
有上限的退避重试指固定次数、延迟逐次增加的重试,绝不是无限循环。只有 HTTP 200 响应会计费,因为计费以搜索完成为前提。计费与不计费的请求清单参见 Business Search 定价。
部分响应还会包含
error_code,即机器可读的错误类别,例如 invalid_query 或 backend_search_failed。存在 error_code 时可据此分支处理,不存在时请回退到 HTTP 状态码,因为通用错误不包含该字段。
请在自己的日志中区分 HTTP 400、HTTP 401 或 403、HTTP 429、HTTP 500 到 504,以及 HTTP 200 且 documents 为空这几种情况。把它们合并成单一的“搜索失败”分支,会掩盖查询错误与服务故障之间的区别。响应返回 req_id 时请记录下来,并在提交支持工单时连同状态码和 error 消息一起提供。
请求为什么被拒绝
Business Search 以 HTTP 400 拒绝无效请求体,并在error 中说明被拒绝的内容。触发原因包括:
- 未知类目
- 无效的
mode、query、view、offset或limit - 未知的视图配置名,或
view中包含未知字段名 - 自然语言查询超过 200 个字符
- 字段类型不支持所用的运算符,例如对文本字段使用
equals - 账户无法发送的调试属性,例如
explain
industry、current_title 等文本字段只接受 text 运算符。各字段类型接受的运算符参见 Business Search 查询语法。
校验失败时请修正请求。速率限制检查在校验之后执行,因此被拒绝的请求不会消耗速率限制配额,也不会计费,但重复发送无效请求体同样无法成功。
速率限制是多少
Business Search 默认允许每分钟 60 次请求,按账户、类目和模式分别计算。因此公司搜索与人物搜索各有独立配额,每个类目下的 Ludicrous、Instant 和 Smart 也各有独立配额,公司搜索被限流不会影响人物搜索。如需为您的账户、某个类目或某个模式提高限制,请联系 Bright Data。 配额会持续恢复,而不是在每分钟开始时一次性重置,因此短时间内略高于速率的突发请求会被平滑处理,不会导致该分钟剩余时间都被阻塞。 超出限制的请求会返回 HTTP 429,并在Retry-After 标头中给出需要等待的秒数。该请求不会执行搜索,不会排队,也不会计费。请等待该时长后重新发送请求。
常见问题
返回 200 是否表示查询被正确理解
不是。200 表示搜索已执行。在 Instant 和 Smart 模式下,自然语言意图和结果相关性不会因为 HTTP 请求成功而得到保证,因此使用记录前请先审阅结果。如何区分字段缺失与空结果
返回记录中缺少某个字段,表示数据源对该记录没有存储值。documents 数组为空,表示没有记录匹配条件。前者按记录处理,后者按请求处理。