クイック回答
すでにURLを持っているWebページを読み取るにはどうすればよいですか?
最大20件のURLを POST https://llmwebsearch.com/api/v1/extract に送信します。LLMWebSearch は各公開ページを読み取り、その本文をMarkdownまたはプレーンテキストで、URLごとのステータスとともに返します。課金は読み取った3ページごとに1クレジットで、2026年10月時点の検索1クレジットあたり$1.20/1K検索からです。robots.txt は尊重されます。KYC不要、暗号資産で支払い。
/extract at a glance
| メソッド | POST (JSONボディ付き) |
|---|---|
| URL | https://llmwebsearch.com/api/v1/extract |
| 入力 | urls: http または https のアドレス1〜20件 |
| 出力 | URLごとの本文、markdown (デフォルト) または text |
| 課金 | URLをすでに持っているページを読む場合は、コンテンツ付きで返される3ページごとの開始グループにつき1クレジットで、1回の呼び出しにつき最大20 URLです。拒否されたURLや失敗したURLはカウントされません |
| robots.txt | 当社のリーダーはrobots.txtを尊重します。LLMWebSearchとして名乗り、サイトが自身またはすべてのロボット向けに定めたルールに従い、読み取りを許可されていないページのコンテンツは除外します |
| ページリーダー | LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/) |
URLのリストを読み取る
POST/api/v1/extract
各URLを並列でフェッチし、送信した順に本文を返します。各項目はそれぞれ独自の content_status を持つため、1ページが拒否されても呼び出しは失敗しません。例では3ページを読み取ります。タイトルと値は例示です。
認証:Authorization: Bearer API_KEYヘッダーにAPIキーを指定します。
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
urls | string[] | はい | http または https のアドレス1〜20件。プライベート、ローカル、クラウドメタデータのアドレスは拒否されます。 |
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);検索内の read ではなく extract をいつ使うべきですか?
URLが実行中の検索に由来しない場合に extract を使ってください。ユーザーがリンクを貼り付けた、ドキュメントが3つの情報源を引用している、または read=0 を使った最初の検索で、どのページを全文読み取りする価値があるかをモデルに選ばせた場合です。
同じ呼び出しで上位の結果を読み取りたいだけなら、/search 内で read を使ってください。2回のリクエストではなく1回で済み、最大3ページが検索の1クレジットに含まれます。
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_refusedでサイトのtarget_status、fetch_failed、fetch_timeoutまたはunsupported_contentが付きます。
項目はurlsリストの順序を保つので、URLだけでなくインデックスでも照合できます。レスポンス形式ページに各ステータスの説明があります。
どの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を解いたり、アカウントにサインインしたり、ブロックやペイウォールを回避したりすることは一切ありません。
ログインが必要なページ、またはペイウォールの背後にあるページは、コンテンツなしで返されます。エージェントを別のソース、またはご自身のブラウザセッションで読むことが許可されているページに向けてください。
extractエンドポイント: よくある質問
どの種類のファイルを読めますか?
Webページが本来の用途です。動画、アーカイブ、または読み取り可能なテキストのないその他のファイルへのリンクはunsupported_contentとして返され、そのURLは料金にカウントされません。
同じURLを2回送ると2回読まれますか?
各URLは1回だけ送信してください。リストに重複が含まれる可能性がある場合は、先にご自身の側で削除してください。そうすることで、結果がリストと1対1で一致します。
JavaScriptレンダリングは追加料金ですか?
いいえ。ページがテキストを表示するためにブラウザを必要とする場合、追加コストなしでレンダリングされます。
ログイン中のページをextractで読めますか?
いいえ。リーダーはアカウントにサインインせず、お客様のCookieも送信しません。サイトが当社のリーダーを拒否した場合、結果はコンテンツなしで、サイトのステータスとともに返されます。当社がCAPTCHAを解いたり、アカウントにサインインしたり、ブロックやペイウォールを回避したりすることは一切ありません。