问答
view=compact 和 fields= 是做什么的,会影响价格吗?
简短回答
view 是预设档位:standard(默认)返回通用字段,compact 再去掉所有值为 null 的字段,full 会在 ext 里加上平台特有字段。fields 只保留你点名的路径。两者都不改变价格和条数:在 okdata 上,一页小红书搜索不管要什么形状都是 $0.02。
okdata 的每个接口都接受两个可选参数,只改变返回的形状,不改变抓取的内容:view 和 fields。有了它们,脚本或者 AI 智能体可以只要自己用得上的那几列。思路和 Google 的 YouTube Data API 里的 part、fields 一样,那边叫“部分资源”。
view:三个档位
view |
每个对象里有什么 | 以抖音搜索结果为例 |
|---|---|---|
standard(默认) |
这类对象的通用字段,null 也保留 | 有 title: null |
compact |
在 standard 基础上去掉所有为 null 的字段 | 没有 title 这一项 |
full |
在 standard 基础上加 ext,即平台特有字段 |
ext.duration_ms、ext.music、ext.region |
小红书笔记搜索的结果加了 full 后多出 ext.ip_location 和 ext.xsec_token;抖音视频搜索多出的是视频时长、背景音乐名和地区。通用字段见对象参考。
fields:只留你点名的
fields=id,title,metrics.likes,author.name 返回的对象里就只有这几个路径,嵌套关系不变,用点号进到对象内部。路径是在 view 之后才筛的,这带来一个实际影响:ext 只在 full 里才有,所以 fields=id,ext.duration_ms 必须同时加 view=full。点了一个什么都匹配不上的路径,调用照样成功,只是响应的 warnings 里会写明,比如 fields matched nothing: ext.duration_ms。
价格和条数
| 请求 | 条数 | 费用 |
|---|---|---|
query=露营装备 |
约 20 条 | $0.02 |
同样的请求加 view=compact |
约 20 条 | $0.02 |
同样的请求加 view=full&fields=id,metrics.likes,ext.duration_ms |
约 20 条 | $0.02 |
按次计费,瘦的一页和胖的一页价格相同。省下来的是带宽,以及模型读结果时的 token。
示例
import os, requests
URL = "https://api.okdata.online/v1/xiaohongshu/notes/search"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
body = requests.get(URL, headers=H, timeout=60, params={
"query": "防晒霜 推荐", "sort": "popular",
"view": "full",
"fields": "id,title,metrics.likes,metrics.favorites,author.name,ext.ip_location",
}).json()
if body["code"] != "ok":
raise SystemExit(body["message"])
print(body["warnings"]) # 每个路径都匹配上时为 []
print(body["meta"]["unavailable"]) # 字段为何为 null,例如 metrics.views: platform
for note in body["data"]["items"]:
print(note)
需要留意的地方
- **compact 只是把 null 藏起来,不解释原因。**compact 结果里没有
metrics.views,不等于播放量是 0。meta.unavailable依然会列出哪些字段为 null,以及原因是平台从不公开(platform)还是数据源暂时取不到(capability)。 - **翻页。**同一个列表翻页时可以换
view和fields,游标照样有效。 - **智能体。**通过 MCP 调用时,这两个参数放在
params里,比如{"query": "露营装备", "fields": "id,title,metrics.likes"}。
从省 token 的角度,以及常见任务该选哪些字段,见喂给大模型的社交数据怎么省 token。
资料来源
这个问题出现过的地方(读取于 2026-11-12)
更新于