# Extract エンドポイント: エージェントがすでに持っているURLを読み取る

> Extract エンドポイント: すでに持っている1〜20件のURLを送信し、各ページの本文をMarkdownで取得します。読み取り開始した3ページごとに1クレジット。KYC不要、暗号資産で支払い。

- URL: https://llmwebsearch.com/ja/docs/extract/
- 最終更新: 2026-10-22
- 発行者: LLMWebSearch (https://llmwebsearch.com)

エージェントがすでにリンクを持っている場合があります。ユーザーが貼り付けた、以前の検索でリストされた、またはドキュメントが引用しているリンクです。`/extract` はそれらのページを読み取り、本文を返します。リーダーもルールも `/search` と同じです。

**クイック回答 — すでに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。 |

*例: three pages, longer content*

```json
{
  "urls": [
    "https://docs.example.com/security/key-rotation",
    "https://blog.example.org/key-rotation-checklist",
    "https://example.com/changelog"
  ],
  "max_chars": 20000
}
```

**レスポンス** `200`

```json
{
  "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*

```bash
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}'
```

*Python*

```python
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))
```

*Node.js*

```javascript
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だけでなくインデックスでも照合できます。[レスポンス形式](https://llmwebsearch.com/ja/docs/response/)ページに各ステータスの説明があります。

## どの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を解いたり、アカウントにサインインしたり、ブロックやペイウォールを回避したりすることは一切ありません。

---

LLMWebSearch: LLMWebSearchは、AIエージェント向けのWeb検索APIです。ランキング済みの検索結果を、上位ページの本文をMarkdownに変換した内容とともに返し、暗号資産で支払えます。本人確認書類のアップロードは不要です。プリペイドのクレジットは$1.20/1K検索から購入でき、有効期限はありません。KYC不要 — 身分証も自撮りも書類も不要。暗号資産で支払い。
