响应格式

同一个搜索资源,六种响应格式。用 format= 选择;默认为 JSON,其他格式也都以 JSON 为参照来说明。

formatContent-Type结构
jsonapplication/json一个对象,结果放在数组中。
ndjsonapplication/x-ndjson每行一个 JSON 对象。第一行是元数据,标记为 "object":"meta"。
xmlapplication/xml以 XML 表示的同一文档,每行结果为一个 <result>。
csvtext/csv以分号分隔,无表头行。
tsvtext/tab-separated-values与 CSV 相同,以制表符分隔。
txttext/plain每行一个 URL。

jsonl 可作为 ndjson 的别名使用。

如何选择

数据量能放进内存时用 json,放不下时用 ndjson:它没有需要等待闭合的外层数组,元数据先于结果行到达,读取方可以在其余数据还在传输时就开始处理第一条结果。csv、tsv 和 txt 适用于电子表格、Shell 管道,以及在不修改解析器的前提下,把脚本从旧版导出 URL 迁移过来。

ndjson

{"object":"meta","query":"\"angular.min.js\"","page":1,"per_page":2,"total":278,"total_pages":139,"returned":2,"truncated":false,"took_ms":2}
{"domain":"imgbox.com","url":"https://imgbox.com/","rank":4187,"ranked":true}
{"domain":"angularjs.org","url":"https://angularjs.org/","rank":12376,"ranked":true}

选择列

json 和 xml 返回全部字段。扁平格式则默认只返回常用字段,因此从旧版导出 URL 迁移过来的脚本无需修改解析器:

请求输出
format=csvimgbox.com;4187
format=csv&columns=url,rankhttps://imgbox.com/;4187
format=csv&columns=domainimgbox.com
format=txthttps://imgbox.com/
format=csv&snippets=1imgbox.com;4187;the matching text
format=csv&header=1第一行为 domain;rank
format=csv&delimiter=,imgbox.com,4187

columns 适用于所有格式,因此 format=json 搭配 columns=domain 时,返回的对象只包含该字段。

扁平格式的细节

这些是新 API 自己的序列化格式,并非旧版导出的重新发布。结构刻意保持了熟悉的样子,但只有旧版 URL 才保证逐字节一致。

格式与错误

csv、tsv 和 txt 只用于表示结果行,因此在 /v1/account 上请求这些格式会返回 400 format_not_available。错误本身以 JSON 返回;如果请求的是 XML,则以 XML 返回。

下一篇 配额与速率限制