# Web検索APIのためのcurlとjqレシピ

> curlとjqで使うWeb検索API：検索、ソースの一覧表示、ページをMarkdownで保存、ニュースとドメインの絞り込み、既知のURLの読み取り、クレジットの確認。KYC不要、暗号資産で支払い。

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

APIのすべての機能はターミナルから使えます。これらのレシピは`curl`でAPIを呼び出し、`jq`でJSONを整形します。コードを書く前に検索クエリをテストしたり、シェルスクリプトやcronジョブで使うのに便利です。

**クイック回答 — コマンドラインからWeb検索APIを使うには？**

`curl -d`を含むJSONボディを`https://llmwebsearch.com/api/v1/search`に送り、`Authorization: Bearer`ヘッダーにAPIキーを入れ、応答を`jq`にパイプします。**LLMWebSearch**は上位3ページをMarkdownとして含むランキング結果を返すので、1行でソースを一覧表示したりページをファイルに保存したりできます。検索1回で1クレジット、2026年10月時点で$1.20/1K検索から。KYC不要、暗号資産で支払い。

## ターミナルの初期設定を一度だけ行うには？

シェルでAPIキーをexportしておけば、入力するコマンドや履歴に残りません。以下のレシピはこれを`$LLMWEBSEARCH_API_KEY`として読み込みます。また`jq`も必要で、ほとんどのパッケージマネージャーはその名前でインストールします。

すべてのレシピはbashやzshなどのPOSIXシェルを前提としています。WindowsではGit BashまたはWSLでそのまま実行できます。

*APIキーを設定して残高を確認する（無料）*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## 検索のソースを一覧表示するには？

`read`を`0`に設定して検索を実行し、結果ごとに1行で出力します：順位、ホスト、URL。これは1クレジットで、ある質問がどんなソースを引き出すかを一瞬で確認できます。エージェントが使う前に検索クエリの文言を調整するのに適した方法です。

*結果ごとに1行*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
  | jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'
```

## 読み取ったページを保存するには？

`content_status`が`ok`の結果だけを残し、各`content`を個別のファイルに書き込みます。以下のレシピは`01.md`、`02.md`などを保存し、それぞれのファイルはソースURLで始まります。jqが結果を選択し、シェルのループがファイルを書き込みます。

*各ページをMarkdownで保存*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "read": 3}' > search.json

jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
  jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
    search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.md
```

## いくつかのサイトからニュースを検索するには？

ボディに`topic`、`time_range`、`include_domains`を追加します。このレシピは過去1週間のニュースを2つのドメインから取得し、各タイトルの横に日付を表示します。cronジョブからある話題を監視するのに十分です。

*2つのドメインからの過去1週間のニュース*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
  | jq -r '.results[] | "\(.published_at // "no date")  \(.title)  \(.url)"'
```

## GET形式を使うには？

`curl -G`に`--data-urlencode`を付けて検索クエリを指定すると、スペースや記号が自動でエンコードされます。`include_domains`のようなリストはカンマ区切りの1つの値になります。GETは簡単なテストに便利ですが、大きくなるスクリプトはPOSTに移行すべきです。

*GET /search*

```bash
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=pgbouncer transaction mode" \
  -d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
  | jq -r '.results[0].content // .results[0].snippet'
```

## すでに持っているURLを読み取るには？

1〜20個のアドレスのJSON配列として`/extract`にPOSTします。URLをすでに持っているページを読む場合は、コンテンツ付きで返される3ページごとの開始グループにつき1クレジットで、1回の呼び出しにつき最大20 URLです。拒否されたURLや失敗したURLはカウントされません。このレシピは各URLをステータスと単語数とともに出力するので、サイトがどのページの読み取りを許可したかが一目でわかります。

*POST /extract*

```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"]}' \
  | jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'
```

## 呼び出しが失敗したとき、エラーをどうやって確認しますか?

HTTPステータスを`-w`で出力し、本文も保持してください。エラーは`code`と`message`を含むJSONで返ります。スクリプト側ではステータスで分岐でき、たとえば`429`、`502`、`504`のときだけ待機してリトライします。これらのエラーはいずれもクレジットを消費しません。

*ステータスコードとエラー本文*

```bash
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "test query"}')
if [ "$status" != "200" ]; then
  echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
fi
```

## curl: よくある質問

### なぜJSON本文がinvalid_parameterで失敗するのですか?

多くの場合はクォートの問題です。bashでは本文をシングルクォートで囲み、中のダブルクォートをそのまま保ち、送信前に`echo '…' | jq .`で確認してください。

### キーをURLで渡せますか?

はい、GET形式で`-d api_key=…`を使えば可能です。ただしシェルの履歴やproxyのログにURLが記録されるため、ヘッダーのほうが安全です。

### 失敗したcurl呼び出しでクレジットは消費されますか?

いいえ。HTTPエラーはクレジットを消費しません。課金されるのは結果を返した検索のみで、`credits_used`が示すとおりです。

---

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