# 検索エンドポイントリファレンス：POSTとGET /search

> 検索エンドポイントリファレンス：readやmax_charsからtopic、time_range、ドメインフィルターまで、POSTとGET /searchの全パラメーター。KYC不要、暗号資産で支払い。

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

`/search`はライブのWeb検索を実行し、最大20件の結果をランク付けし、上位の結果の背後にあるページの本文抽出を行います。このページでは、すべてのパラメーター、デフォルト値、制限、価格への影響を説明します。

**クイック回答 — LLMWebSearchの検索エンドポイントはどのようなパラメーターを取りますか？**

**LLMWebSearch**の`/search`エンドポイントに必要なのは`q`だけです。オプションのパラメーターで、返す結果数（`max_results`）、読み取るページ数（`read`）、コンテンツの形式と長さ、ニュースかWebか、期間、国と言語、保持または除外するドメインを設定できます。最大3ページの読み取りで1クレジット、2026年10月時点では$1.20/1K検索からです。KYC不要、暗号資産で支払い。

## /search at a glance

| 属性 | 値 |
| --- | --- |
| メソッド | JSONボディ付きの`POST`、または同じ名前をクエリ文字列に指定する`GET` |
| URL | `https://llmwebsearch.com/api/v1/search` |
| 必須 | `q`：1〜400文字。検索演算子は書かれたとおりに渡されます |
| デフォルト | 結果5件、最初の3件を読み取り、Markdownで1ページあたり最大6,000文字 |
| 課金 | 1クレジットで検索1回分です。最大20件のランク付けされた結果を取得でき、上位3ページは本文抽出されてMarkdownで返されます。4〜10ページを読む場合は2クレジットです。エラーで終わった呼び出しは無料です |
| 結果 | 結果は呼び出しの時点で実行されるライブのWeb検索から、検索エンジンがランク付けした順で返されます。古いインデックスから提供されるものはありません |
| フィルター | 結果の国と言語、期間（過去1日、1週間、1か月、1年）、Webまたはニュースの結果、含める／除外するドメインを選択できます |
| ページリーダー | `LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)` |

## Webを検索して上位結果を読み取る（POST）

`POST /api/v1/search`

ライブのWeb検索を実行し、ランク付けされた結果を返します。最初の`read`件の結果のページは並列に取得され、その本文が`content`で返されます。例ではAPIキーのローテーション方法を問い合わせており、タイトル、日付、値は例示です。

認証：`Authorization: Bearer API_KEY`ヘッダーにAPIキーを指定します。

**リクエストボディ**

| フィールド | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `q` | string | はい | 検索クエリ、1〜400文字。引用符や`site:`などの演算子は書かれたとおりに保持されます。 |
| `max_results` | integer | いいえ | ランク付けされた結果の件数、1〜20。デフォルトは5。 |
| `read` | integer | いいえ | 最初の結果のうち何件を読み取り、その内容とともに返すか、0〜10。デフォルトは3。4以上の場合、呼び出しは2クレジットになります。 |
| `format` | string | いいえ | `markdown`（デフォルト）、またはページ内容に`text`。 |
| `max_chars` | integer | いいえ | 各ページの内容の長さ上限で、500〜50,000文字。デフォルトは6,000。 |
| `topic` | string | いいえ | `web`（デフォルト）、または`news`。 |
| `time_range` | string | いいえ | `day`、`week`、`month`、`year`。デフォルトなし：任意の日付。 |
| `country` | string | いいえ | 検索を実行する国を指定する2文字の国コード（ISO 3166-1 alpha-2）。デフォルトは`us`。 |
| `language` | string | いいえ | 結果の言語（`en`、`de`、`pt-BR`など）。デフォルトは`en`。 |
| `include_domains` | string[] | いいえ | 最大20ドメイン。これらのドメインとそのサブドメインの結果のみが保持されます。 |
| `exclude_domains` | string[] | いいえ | 結果を除外するドメイン、最大20件。 |

*例: five results, the top three read as Markdown*

```json
{
  "q": "how to rotate api keys without downtime",
  "max_results": 5,
  "read": 3,
  "max_chars": 6000
}
```

*例: news of the past week from two sites, nothing read*

```json
{
  "q": "open source license change",
  "topic": "news",
  "time_range": "week",
  "include_domains": [
    "news.example.com",
    "example.org"
  ],
  "read": 0
}
```

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

```json
{
  "query": "how to rotate api keys without downtime",
  "created_at": "2026-10-22T10:15:04Z",
  "credits_used": 1,
  "results": [
    {
      "position": 1,
      "title": "Rotating API keys",
      "url": "https://docs.example.com/security/key-rotation",
      "host": "docs.example.com",
      "snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
      "published_at": "2026-09-30",
      "content_status": "ok",
      "content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
      "word_count": 948
    },
    {
      "position": 2,
      "title": "Key rotation checklist",
      "url": "https://blog.example.org/key-rotation-checklist",
      "host": "blog.example.org",
      "snippet": "Keep two keys active during the switch and alert on the old one.",
      "content_status": "blocked_by_robots"
    },
    {
      "position": 3,
      "title": "Secrets management basics",
      "url": "https://security.example.net/secrets-basics",
      "host": "security.example.net",
      "snippet": "Never commit keys to a repository.",
      "published_at": "2026-06-12",
      "content_status": "ok",
      "content": "# Secrets management basics\n\n**Never** commit keys to a repository...",
      "word_count": 1310
    },
    {
      "position": 4,
      "title": "API key best practices",
      "url": "https://dev.example.com/api-key-best-practices",
      "host": "dev.example.com",
      "snippet": "Scope each key to one service and one environment.",
      "content_status": "not_requested"
    }
  ]
}
```

*curl*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3}'
```

*Python*

```python
import os
import requests

resp = requests.post(
    "https://llmwebsearch.com/api/v1/search",
    headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
    json={"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3},
    timeout=60,
)
resp.raise_for_status()
for r in resp.json()["results"]:
    print(r["position"], r["content_status"], r["url"])
```

*Node.js*

```javascript
const res = await fetch('https://llmwebsearch.com/api/v1/search', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ q: 'how to rotate api keys without downtime', max_results: 5, read: 3 }),
});
const { results } = await res.json();
for (const r of results) console.log(r.position, r.content_status, r.url);
```

## Webを検索（GET）

`GET /api/v1/search`

パラメーターをクエリ文字列にURLエンコードして指定する同じ検索です。`include_domains`などのリストはカンマ区切りの1つの値として記述します。簡単なテストや、GETリクエストしか送信しないツールに便利です。例では結果のみ（`read=0`）を要求しています。

認証：`Authorization: Bearer API_KEY`ヘッダーにAPIキーを指定します。

**パラメータ**

| 名前 | 場所 | 型 | 必須 | 説明 |
| --- | --- | --- | --- | --- |
| `q` | query | string | はい | 検索クエリ。URLエンコード済み、1〜400文字。 |
| `max_results` | query | integer | いいえ | 1〜20。デフォルトは5。 |
| `read` | query | integer | いいえ | 0〜10。デフォルトは3。4以上は2クレジットかかります。 |
| `format` | query | string | いいえ | `markdown` (デフォルト) または `text`。 |
| `max_chars` | query | integer | いいえ | 1ページあたり500〜50,000。デフォルトは6,000。 |
| `topic` | query | string | いいえ | `web`（デフォルト）、または`news`。 |
| `time_range` | query | string | いいえ | `day`、`week`、`month`、または`year`。 |
| `country` | query | string | いいえ | ISO 3166-1 alpha-2コード。デフォルトは`us`。 |
| `language` | query | string | いいえ | 言語コード。デフォルトは`en`。 |
| `include_domains` | query | string | いいえ | カンマ区切りのリスト。最大20ドメイン。 |
| `exclude_domains` | query | string | いいえ | カンマ区切りのリスト。最大20ドメイン。 |
| `api_key` | query | string | いいえ | `Authorization`ヘッダーを送らない場合に使うあなたのAPIキー。 |

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

```json
{
  "query": "postgres connection pooling",
  "created_at": "2026-10-22T10:21:47Z",
  "credits_used": 1,
  "results": [
    {
      "position": 1,
      "title": "Connection pooling explained",
      "url": "https://docs.example.com/db/pooling",
      "host": "docs.example.com",
      "snippet": "A pool keeps a few database connections open and lends them to requests.",
      "content_status": "not_requested"
    },
    {
      "position": 2,
      "title": "Sizing a connection pool",
      "url": "https://blog.example.org/pool-size",
      "host": "blog.example.org",
      "snippet": "Start small: the right size depends on cores and disk, not on traffic.",
      "published_at": "2026-03-04",
      "content_status": "not_requested"
    }
  ]
}
```

*curl*

```bash
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=postgres connection pooling" \
  -d max_results=10 -d read=0
```

*Python*

```python
import os
import requests

resp = requests.get(
    "https://llmwebsearch.com/api/v1/search",
    headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
    params={"q": "postgres connection pooling", "max_results": 10, "read": 0},
    timeout=60,
)
print([r["url"] for r in resp.json()["results"]])
```

*Node.js*

```javascript
const params = new URLSearchParams({ q: 'postgres connection pooling', max_results: '10', read: '0' });
const res = await fetch(`https://llmwebsearch.com/api/v1/search?${params}`, {
  headers: { Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}` },
});
console.log((await res.json()).results.map((r) => r.url));
```

## ページ本文を含めずに結果を取得するには？

`read`を`0`に設定します。すると各結果はタイトル、URL、ホスト、スニペット、日付、そして`content_status: "not_requested"`を付けて返ります。レスポンスはずっと小さくなり、エージェントがどのリンクが重要かを選ぶだけでよい場合に役立ちます。

料金は1クレジットのままで、最大3ページを読む場合と同じです。よくあるパターンは、`read=0`検索で候補を絞り込み、モデルが選んだ2〜3個のURLに対して[本文抽出を呼び出す](https://llmwebsearch.com/ja/docs/extract/)ことです。

## 検索が2クレジットになるのはいつ？

`read`が4〜10のときです。より多くのページを読むとこちらの処理が増えるため、料金は一度だけ倍になり、最大10ページまで2クレジットのままです。

各レスポンスの`credits_used`に、その呼び出しのコストが表示されます。robots.txtのルールや拒否により読み取れなかったページがあっても、その料金が下がることも上がることもありません。通常は数ページの全文だけが必要なら、`read`を3のままにして、まれな追加ページには`/extract`を呼び出してください。

## 最近のニュースを検索するには？

`topic: "news"`と`time_range`を送ります。すると結果はニュース記事から返り、`time_range`で過去`day`、`week`、`month`、または`year`のものだけに絞り込めます。記事または検索結果に日付があれば、`published_at`が入ります。

同じ鮮度フィルターは`topic: "web"`でも機能します。最近のリリースや価格変更など、古いページだとモデルを誤らせるような質問に役立ちます。

*過去1週間のニュース、上位3件の記事を本文抽出*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database release security fix", "topic": "news", "time_range": "week", "read": 3}'
```

## 結果を特定のサイトに限定するには？

`include_domains`にリストします。最大20件まで。ホストがそのドメイン、またはそのサブドメインのいずれかである結果だけが保持されます。`example.com`は`docs.example.com`にも一致します。逆の用途には`exclude_domains`を使い、たとえば結果から自分のサイトを除外できます。

POSTのボディでは、どちらのフィールドもJSON配列です。GETリクエストでは、カンマ区切りの1つの値として書きます。検索クエリ自体に`site:`演算子を含めることもでき、そのまま検索に渡されます。

## 国と言語は何を変える？

`country`は検索を実行する場所を設定し、`us`、`de`、`br`などの2文字コードを使います。ランキングは国によって異なり、特に地域のサービス、価格、規制で差が出ます。`language`は結果の言語を設定し、`en`、`fr`、`pt-BR`などを指定します。

どちらもデフォルトはアメリカ合衆国と英語です。エージェントが1つの市場のユーザー向けに動く場合は、両方を一緒に設定してください。税のルールについて質問するドイツのユーザーには、`country: "de"`と`language: "de"`が適しています。

## 返ってくるページ本文の量は？

1ページあたり最大`max_chars`文字で、デフォルトは6,000、500〜50,000の範囲です。この上限はモデルのコンテキストウィンドウを守ります。6,000文字で3ページなら、おおよそ英語で4,500トークンです。

`word_count`は切り詰める前の抽出テキスト全体を数えるので、ページが切り詰められたかどうかが分かります。1つの長い文書が必要な回答では、まず低い上限で検索し、そのページだけをより高い上限で`/extract`経由で取得してください。遅いページを無期限に待つことはありません。15秒経過すると、本文なしで`fetch_timeout`として返ります。

## 検索エンドポイント：よくある質問

### POSTとGETのどちらを使うべき？

コードではPOSTを使ってください。JSON配列や長いクエリはボディの方が簡単です。GETはターミナルでの簡単なテストや、クエリ文字列しか送れないツールに適しています。どちらも同じレスポンスを返し、料金も同じです。

### 20件を超える結果を要求できますか？

いいえ。1回の呼び出しで最大20件です。エージェントがそれ以上を必要とすることはほとんどありません。言い換えたクエリで再検索する方が、長いリストよりも良い情報源を得られるのが普通です。

### ページは順番に読み取られますか？

いいえ、並列です。15秒以内に応答しないページは、`fetch_timeout`として本文なしで返るので、1つの遅いサイトがレスポンス全体を止めることはありません。

### どの検索エンジンが結果を生成しますか？

結果は呼び出しの時点で実行されるライブのWeb検索から、検索エンジンがランク付けした順で返されます。古いインデックスから提供されるものはありませんです。検索を実行する上流プロバイダーは公開していません。

---

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