# curlとjqで使うSERP API：1行レシピ

> curlとjqを使った1行のSerpCrypto SERP APIレシピ：上位10件のリンク、People Also Ask、AI Overviewのソース、ローカルパックとMaps、さらにPowerShell版。

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

APIが何を返すかを確認する最速の方法はターミナルです。これらのレシピはそれぞれ1種類だけを出力します：リンク、質問、ソース、またはローカルビジネスです。bashとzshで動作します。PowerShell版はページの最後にあります。

**簡潔な回答 — curlでSERP APIにクエリを送るにはどうすればよいですか？**

`curl -sG "https://serpcrypto.com/api/v1/search" -H "Authorization: Bearer $KEY" --data-urlencode "q=your query"`を実行し、JSONを`jq`にパイプします。**SerpCrypto**では、成功した検索1回につき1クレジット（$0.30/1K検索から）、エラーは無料です。`-G`はデータフラグをクエリ文字列に変換します。クレジットは暗号資産で支払い、KYC不要です。

## ここで重要なcurlフラグはどれですか？

キーはシェルごとに一度`export SERPCRYPTO_API_KEY=…`で設定します。`jq`が無い場合はパッケージマネージャーからインストールしてください。

| フラグ | 理由 |
| --- | --- |
| `-s` | サイレント：JSONにプログレスバーが混ざらないようにします。 |
| `-G` | `-d`と`--data-urlencode`の値をGETリクエストのクエリ文字列として送信します。 |
| `--data-urlencode` | `q`と`location`のスペース、引用符、アクセント文字をエンコードします。 |
| `-H "Authorization: Bearer …"` | あなたのAPIキー。環境変数に保管してください。 |
| `-w '%{http_code}'` | HTTPステータスを出力します。呼び出しが失敗したときに便利です。 |

## キーワードの上位10件のリンクを出力するにはどうすればいいですか？

オーガニック結果を取得し、`jq`で各結果の順位とリンクをタブ区切りで出力します。`[]?`形式では、ブロックが存在しない場合に失敗せず何も出力しないため、特殊なページでもスクリプトが静かに動作します。

*上位10件のリンク*

```bash
# Top 10 organic links, one per line
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=kubernetes cost monitoring" -d gl=us -d hl=en \
  | jq -r '.organic_results[]? | "\(.position)\t\(.link)"'
```

## People Also Askの質問を一覧表示するにはどうすればいいですか？

`people_also_ask[].question`を読み取ります。質問は`hl`の言語に従い、`gl`の国によって変わります。そのため、執筆対象の各市場で同じ検索クエリを実行してください。コンテンツチームはこのリストをそのままブリーフに貼り付けます。

*People Also Ask*

```bash
# People Also Ask questions, ready for a content brief
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=how to brew cold brew" -d gl=gb -d hl=en \
  | jq -r '.people_also_ask[]?.question'
```

## AI Overviewが引用しているソースを確認するにはどうすればいいですか？

`ai_overview.references`を読み取ります。このブロックは、Googleがその検索クエリと地域でAI Overviewを表示する場合にのみ存在するため、それ以外の場合はレシピが明確なメッセージを出力します。これらのソースを継続的に追跡することで、Googleの生成回答で自身のページが引用されているかがわかります。

*AI Overviewのソース*

```bash
# Sources cited by the AI Overview, if the page shows one
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=what is a heat pump" -d gl=us -d hl=en \
  | jq -r 'if .ai_overview then .ai_overview.references[] | "\(.index)\t\(.source)\t\(.link)" else "no AI Overview for this query" end'
```

## ローカルパックとMapsのリストを取得するにはどうすればいいですか？

`location`を使ったWeb検索は、検索結果ページに表示されるローカルパック（通常は数件のビジネス）を返します。`engine=google_maps`は、住所・評価・レビュー数を含むより長いMapsのリストを返し、`@tsv`がそれをスプレッドシート用の行に変換します。どちらも1クレジットです。

*ローカルパック、次にGoogle Maps*

```bash
# Local pack in a city, then the full Maps list for the same query
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=vegan restaurant" \
  --data-urlencode "location=Toronto, Ontario, Canada" -d gl=ca -d hl=en \
  | jq -r '.local_results[]? | "\(.position)\t\(.title)\t\(.rating // "-")"'

curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  -d engine=google_maps --data-urlencode "q=vegan restaurant Toronto" -d gl=ca -d hl=en \
  | jq -r '.local_results[]? | [.title, .address, .rating, .reviews] | @tsv'
```

## 呼び出しが失敗したときにエラーを確認するにはどうすればいいですか？

`-w '\nHTTP %{http_code}\n'`を追加すると、ボディの後にステータスを出力します。エラーボディは`code`と`message`を含む小さなJSONです。[エラーページ](https://serpcrypto.com/ja/docs/errors/)に6つのコードがすべて記載されています。2番目のコマンドはクレジットを読み取るもので、無料です。

*ステータスコードとクレジット*

```bash
# Print the body, then the HTTP status on its own line
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=test" -w '\nHTTP %{http_code}\n'

# Credits left (free call)
curl -s "https://serpcrypto.com/api/v1/credits" -H "Authorization: Bearer $SERPCRYPTO_API_KEY" | jq .
```

## WindowsでのPowerShellの同等の方法は何ですか？

`Invoke-RestMethod`はリクエストを送信し、JSONをオブジェクトに解析するため、`jq`は不要です。パラメータは`-Body`のハッシュテーブルとして渡します。GETリクエストの場合、PowerShellがそれらをクエリ文字列にエンコードします。その後`Format-Table`が順位、タイトル、リンクを出力します。

*PowerShell*

```powershell
# Windows PowerShell 5.1 or PowerShell 7
$headers = @{ Authorization = "Bearer $env:SERPCRYPTO_API_KEY" }
$query = @{ q = "kubernetes cost monitoring"; gl = "us"; hl = "en" }
$data = Invoke-RestMethod -Uri "https://serpcrypto.com/api/v1/search" -Headers $headers -Body $query -Method Get
$data.organic_results | Select-Object position, title, link | Format-Table -AutoSize
```

## curlからコードに移行すべきなのはいつですか？

キーワードのリストでコマンドを繰り返すようになったらすぐです。シェルループは数十件の検索には使えますが、リトライ、並列処理、保存は[Python](https://serpcrypto.com/ja/docs/python/)や[Node.js](https://serpcrypto.com/ja/docs/node/)の方が簡単です。リクエストは同じなので、ここでテストしたレシピはそのまま流用できます。各検索は1クレジットのままで、10,000検索パックでは$0.75/1K検索です。

## curlの質問

### curlで検索クエリが400エラーを返すのはなぜですか？

通常は、`q`が`-d`で送信され、エンコードが必要な文字が含まれているためです。クエリと`location`には`--data-urlencode "q=…"`を使用してください。`gl=us`のような単純なコードは`-d`のままで問題ありません。

### 完全なJSONをファイルに保存できますか？

はい。`jq`にパイプする代わりに`-o result.json`を追加します。生の回答を保存しておけば、検索に再度課金することなく後で再解析できます。

### Windowsのcurlも同じように動作しますか？

Windows 10と11には`curl.exe`が含まれており、フラグも同じです。`cmd.exe`ではクォートの扱いが異なるため、通常はPowerShellで`Invoke-RestMethod`を使う方が簡単です。

---

SerpCrypto: SerpCryptoは、開発者とAIエージェント向けのSERP APIで、GoogleとBingの検索結果をJSONで返し、身分証明書のアップロードなしで暗号資産で支払えます。前払いの検索クレジットは$0.30/1K検索から購入でき、有効期限はありません。KYC不要 — 身分証明書もセルフィーも書類も不要。暗号資産で支払い。
