快速回答
如何读取我已经拥有 URL 的网页?
向 POST https://llmwebsearch.com/api/v1/extract 发送最多 20 个 URL。LLMWebSearch 读取每个公开页面,并以 Markdown 或纯文本返回其正文,每个 URL 附带状态。计费为每开始一组 3 个已读取页面消耗 1 积分,自 2026 年 10 月起,每次搜索积分低至 US$1.20/千次搜索。遵守 robots.txt。无需 KYC;加密货币支付。
/extract at a glance
| 方法 | POST,带 JSON 请求体 |
|---|---|
| URL | https://llmwebsearch.com/api/v1/extract |
| 输入 | urls:1 到 20 个 http 或 https 地址 |
| 输出 | 每个 URL 的正文,以 markdown(默认)或 text 返回 |
| 计费 | 读取你已持有 URL 的页面:每开始一组 3 个返回内容的页面计 1 积分,每次调用最多 20 个 URL;被拒绝或失败的 URL 不计入 |
| robots.txt | 我们的读取器遵守 robots.txt:它会以 LLMWebSearch 表明身份,遵守网站为它或为所有机器人写下的规则,并排除任何它无权读取的页面内容 |
| 网页阅读器 | LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/) |
读取 URL 列表
POST/api/v1/extract
并行抓取每个 URL,并按你发送的顺序返回其正文。每个条目有自己的 content_status,因此一个被拒绝的页面不会导致整个调用失败。示例读取三个页面;标题和数值仅作说明。
认证:API 密钥放在 Authorization: Bearer API_KEY 请求头中。
请求体
| 字段 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
urls | string[] | 是 | 1 到 20 个 http 或 https 地址。私有、本地和云元数据地址会被拒绝。 |
format | string | 否 | markdown(默认)或 text。 |
max_chars | integer | 否 | 每个页面内容的长度上限,500 到 50,000 个字符。默认 6,000。 |
{
"urls": [
"https://docs.example.com/security/key-rotation",
"https://blog.example.org/key-rotation-checklist",
"https://example.com/changelog"
],
"max_chars": 20000
}响应 200
{
"credits_used": 1,
"results": [
{
"url": "https://docs.example.com/security/key-rotation",
"title": "Rotating API keys",
"content_status": "ok",
"content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key...",
"word_count": 948
},
{
"url": "https://blog.example.org/key-rotation-checklist",
"content_status": "blocked_by_robots"
},
{
"url": "https://example.com/changelog",
"title": "Changelog",
"content_status": "ok",
"content": "# Changelog\n\n## 2026-10-20\n\n- New export format...",
"word_count": 2204
}
]
}代码示例
curl -s "https://llmwebsearch.com/api/v1/extract" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"], "max_chars": 20000}'import os
import requests
resp = requests.post(
"https://llmwebsearch.com/api/v1/extract",
headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
json={"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]},
timeout=60,
)
for page in resp.json()["results"]:
print(page["url"], page["content_status"], page.get("word_count", 0))const res = await fetch('https://llmwebsearch.com/api/v1/extract', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ urls: ['https://docs.example.com/security/key-rotation', 'https://example.com/changelog'] }),
});
for (const page of (await res.json()).results) console.log(page.url, page.content_status);何时应在搜索中使用 extract 而不是 read?
当 URL 不来自你正在运行的搜索时,使用 extract。用户粘贴了一个链接、文档引用了三个来源,或使用 read=0 的首次搜索让模型选择了哪些页面值得完整读取。
当你只想在同一次调用中读取顶部结果时,在 /search 内使用 read。这是一次请求而不是两次,并且最多 3 个页面包含在搜索的单个积分中。
extract 调用如何计费?
每开始一组 3 个已读取页面消耗 1 积分。计数使用返回内容的页面:被 robots.txt 或网站拒绝的 URL,或加载失败的 URL,不计入。
| 已读取页面 | 积分 |
|---|---|
| 1 到 3 | 1 |
| 4 到 6 | 2 |
| 7 到 9 | 3 |
| 19 或 20 | 7 |
响应始终在 credits_used 中说明总数。没有任何页面能读取的调用不消耗任何费用。
响应中的每个条目告诉我什么?
每个条目都会原样重复你发来的 url,并返回一个 content_status。使用 ok 时,你还会拿到页面 title、它的主要 content 和 word_count。否则,状态会说明原因:blocked_by_robots、blocked_by_site_policy、带站点 target_status 的 target_refused、fetch_failed、fetch_timeout 或 unsupported_content。
条目保持你 urls 列表的顺序,因此你既可以按索引匹配,也可以按 URL 匹配。response format 页面描述了每种状态。
哪些 URL 会在抓取前被拒绝?
指向私有网络、本机或云元数据服务的地址会被拒绝。这可以防止任何人利用我们的读取器访问内部系统。跳转到此类地址的重定向也会被拒绝,且最多跟随 5 次重定向。
地址必须使用 http 或 https。如果 urls 为空、超过 20 个条目或包含格式错误的地址,调用会返回 400 invalid_parameter,且不收费。
extract 和 search 遵循同样的规则吗?
是的。它使用同一个读取器,并以 LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/) 标识自己。在 robots.txt 中设置 Content-Signal: ai-input=no 的网站,其页面内容不会出现在你的结果中。当网站拒绝我们的读取器时,结果会不带内容返回,并附上该网站的状态:我们绝不破解 CAPTCHA、不登录账户,也不绕过封锁或付费墙。
需要登录或位于付费墙后的页面会返回无内容。请让 agent 改用其他来源,或改用你用自己的浏览器会话有权读取的页面。
Extract endpoint:常见问题
它可以读取哪些类型的文件?
它专为网页而建。指向视频、压缩包或其他无可见文本文件的链接会返回 unsupported_content,该 URL 不计入费用。
同一个 URL 发送两次会被读取两次吗?
每个 URL 只发送一次。如果列表可能包含重复项,请先在本地去重,这样结果就能与你的列表一一对应。
JavaScript 渲染需要额外付费吗?
不需要。当页面需要浏览器才能显示文本时,会进行渲染,不额外收费。
extract 能读取我已登录的页面吗?
不能。读取器从不登录账号,也不会发送你的任何 cookie。当网站拒绝我们的读取器时,结果会不带内容返回,并附上该网站的状态:我们绝不破解 CAPTCHA、不登录账户,也不绕过封锁或付费墙。