# SERP APIリファレンス: GET /search と GET /credits

> SerpCrypto SERP APIリファレンス: GET /search のパラメータ、エンジン、デフォルト、レスポンスブロック、エラーコード、GET /creditsをcurl、Python、Node.jsで解説。

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

SerpCrypto APIバージョン1の全パラメータ、デフォルト、エラーコード。ベースURL: `https://serpcrypto.com/api/v1`。すべてのリクエストはHTTPSを使用し、すべてのレスポンスはUTF-8のJSONです。

**簡潔な回答 — SerpCryptoの検索エンドポイントはどのパラメータを受け付けますか？**

`GET https://serpcrypto.com/api/v1/search`は必須パラメータが1つ、`q`のみで、オプションが9つあります: `engine`、`gl`、`hl`、`location`、`google_domain`、`device`、`page`、`safe`、`period`です。**SerpCrypto**はJSONを返し、全6エンジンで検索が成功するごとに1クレジットを消費します。エラーは無料です。パックは10,000検索で$7.50から、暗号資産で支払い、KYC不要です。

## 認証はどう行いますか？

APIキーは2つの方法のいずれかで送信します。推奨はヘッダー`Authorization: Bearer YOUR_KEY`です。もう1つはクエリパラメータ`api_key=YOUR_KEY`で、ブラウザのタブで手軽に試すときに便利です。

キーが無い、間違っている、または失効している場合は`401 invalid_api_key`を返し、料金はかかりません。ダッシュボードからいつでも作成・失効できるAPIキーので、スクリプトやサーバーごとに専用のAPIキーを発行し、他に影響を与えずに1つだけ失効させられます。

## 検索を実行

`GET /api/v1/search`

選択したエンジンで1回検索し、結果ページをJSONで返します。検索が成功すると、どのエンジンでも1クレジットを消費し、エラーはクレジットを消費しません。パラメータはクエリ文字列にURLエンコードして指定します。例はGoogleでテキサス州オースティンのコーヒー焙煎店を検索するもので、ID、件数、結果は説明用の例です。

認証: `Authorization: Bearer API_KEY`ヘッダーのAPIキー。

**パラメータ**

| 名前 | 場所 | 型 | 必須 | 説明 |
| --- | --- | --- | --- | --- |
| `q` | query | string | はい | 人が入力するのと同じ形式の検索クエリ。引用符や`site:`などの検索演算子はクエリの一部です。 |
| `engine` | query | string | いいえ | `google`（デフォルト）、`google_news`、`google_images`、`google_maps`、`google_shopping`、または`bing`。 |
| `gl` | query | string | いいえ | 結果の国: `us`、`de`、`br`などの小文字のISO 3166-1 alpha-2コード。デフォルトは`us`。 |
| `hl` | query | string | いいえ | インターフェース言語: `en`、`de`、`pt-BR`など。デフォルトは`en`。 |
| `location` | query | string | いいえ | 都市レベルの地名で、`City, Region, Country`の形式で記述します（例: `Austin, Texas, United States`）。[ロケーション](https://serpcrypto.com/ja/docs/locations/)をご覧ください。 |
| `google_domain` | query | string | いいえ | 検索するGoogleドメイン（例: `google.de`）。デフォルト: `gl`の国のドメイン。`engine=bing`の場合は無視されます。 |
| `device` | query | string | いいえ | `desktop`（デフォルト）または`mobile`。 |
| `page` | query | integer | いいえ | 結果ページは1（デフォルト）から10まで。各ページは個別の検索として扱われ、1クレジットを消費します。 |
| `safe` | query | string | いいえ | `active`は露骨な結果をフィルタリングします。`off`（デフォルト）はフィルタリングしません。 |
| `period` | query | string | いいえ | 過去1時間（`h`）、1日（`d`）、1週間（`w`）、1か月（`m`）、1年（`y`）以内の結果のみ。 |
| `api_key` | query | string | いいえ | `Authorization`ヘッダーを送信しない場合に使用するAPIキー。 |

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

```json
{
  "search_metadata": {
    "id": "srch_7f3a9c2e41b8",
    "status": "success",
    "engine": "google",
    "created_at": "2026-10-22T09:14:05Z",
    "credits_used": 1
  },
  "search_parameters": {
    "engine": "google",
    "q": "coffee roasters",
    "gl": "us",
    "hl": "en",
    "location": "Austin, Texas, United States",
    "google_domain": "google.com",
    "device": "desktop",
    "page": 1
  },
  "search_information": {
    "total_results": 18600000,
    "query_displayed": "coffee roasters"
  },
  "local_results": [
    {
      "position": 1,
      "title": "Example Coffee Roasters",
      "address": "123 Example St, Austin, TX",
      "rating": 4.7,
      "reviews": 312,
      "type": "Coffee roasters"
    }
  ],
  "organic_results": [
    {
      "position": 1,
      "title": "The 12 best coffee roasters in Austin",
      "link": "https://www.example.com/austin/coffee-roasters",
      "displayed_link": "www.example.com › austin › coffee",
      "snippet": "From light Nordic roasts to dark espresso blends, these local roasters…",
      "date": "Sep 30, 2026"
    },
    {
      "position": 2,
      "title": "Example Roasting Co. | Fresh beans, roasted in Austin",
      "link": "https://www.example.org/",
      "displayed_link": "www.example.org",
      "snippet": "Small-batch coffee roasted every weekday and shipped the same day…"
    }
  ],
  "people_also_ask": [
    {
      "question": "What is the oldest coffee roaster in Austin?",
      "snippet": "…",
      "title": "Austin coffee history",
      "link": "https://www.example.net/austin-coffee-history"
    }
  ],
  "related_searches": [
    {
      "query": "coffee roasters near me"
    },
    {
      "query": "coffee roasters austin wholesale"
    }
  ],
  "pagination": {
    "current": 1,
    "next_page": 2
  }
}
```

*curl*

```bash
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=coffee roasters" \
  --data-urlencode "location=Austin, Texas, United States" \
  -d gl=us -d hl=en -d device=desktop
```

*Python*

```python
import os

import requests

r = requests.get(
    "https://serpcrypto.com/api/v1/search",
    params={
        "q": "coffee roasters",
        "location": "Austin, Texas, United States",
        "gl": "us",
        "hl": "en",
    },
    headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
    timeout=60,
)
r.raise_for_status()
print(r.json()["organic_results"][0]["link"])
```

*Node.js*

```javascript
const params = new URLSearchParams({
  q: "coffee roasters",
  location: "Austin, Texas, United States",
  gl: "us",
  hl: "en",
});
const res = await fetch("https://serpcrypto.com/api/v1/search?" + params, {
  headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const data = await res.json();
console.log(data.organic_results?.[0]?.link);
```

## engineにはどのような値があり、それぞれ何を返しますか？

フレーム（`search_metadata`、`search_parameters`、`search_information`）はすべてのengineで共通です。ブロックはページに表示される場合にのみ含まれます。

| `engine` | ソース | 回答内の主なブロック |
| --- | --- | --- |
| `google` | Google検索 | `ai_overview`、`organic_results`、`ads`、`people_also_ask`、`local_results`、`knowledge_graph`、`top_stories`、`inline_videos`、`shopping_results`、`related_searches`、`pagination` |
| `google_news` | Googleニュース | `news_results`: タイトル、リンク、ソース、日付、スニペット、サムネイル |
| `google_images` | Google画像 | `images_results`: 元のURLとサイズ、サムネイル、ソースページ |
| `google_maps` | Googleマップ | `local_results`: 名前、住所、電話番号、ウェブサイト、評価、レビュー、カテゴリ、営業時間、座標 |
| `google_shopping` | Googleショッピング | `shopping_results`: タイトル、価格、抽出価格、通貨、販売店、配送、評価 |
| `bing` | Bing | `organic_results`、`related_searches` |

## クレジット残高を確認する

`GET /api/v1/credits`

アカウントの残高に残っているクレジット、UTCの0時以降に使用したクレジット、アカウントが同時に実行できる検索数を返します。この呼び出しは無料です。以下の値は例です。

認証: `Authorization: Bearer API_KEY`ヘッダーのAPIキー。

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

```json
{
  "credits_remaining": 84210,
  "credits_used_today": 1290,
  "concurrency_limit": 10
}
```

*curl*

```bash
curl -s "https://serpcrypto.com/api/v1/credits" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY"
```

*Python*

```python
import os

import requests

r = requests.get(
    "https://serpcrypto.com/api/v1/credits",
    headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["credits_remaining"])
```

*Node.js*

```javascript
const res = await fetch("https://serpcrypto.com/api/v1/credits", {
  headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const { credits_remaining } = await res.json();
console.log(credits_remaining);
```

## APIはどのようなエラーを返しますか？

すべてのエラーにはボディ`{"error": {"code": "…", "message": "…"}}`が付きます。[エラーページ](https://serpcrypto.com/ja/docs/errors/)で各エラーの説明とリトライコードを確認できます。

| HTTP | `code` | 発生条件 | 課金 |
| --- | --- | --- | --- |
| 400 | `invalid_parameter` | 必須パラメータが欠けている、または値が許可リスト外 | いいえ |
| 401 | `invalid_api_key` | APIキーが欠けている、誤っている、または無効化されている | いいえ |
| 402 | `insufficient_credits` | アカウントのクレジット残高がゼロ | いいえ |
| 429 | `concurrency_limit` | アカウントで同時に実行中の検索が多すぎる | いいえ |
| 502 | `search_failed` | このリクエストでengineまたは収集が失敗した。リトライしてください | いいえ |
| 504 | `search_timeout` | 時間内に応答がない。リトライしてください | いいえ |

## 正確には何が課金されますか？

- **検索1回の成功 = 1クレジット**、すべてのengineで、GoogleマップやGoogleショッピングも含みます。
- **各結果ページは検索1回分です。** 1ページあたり約10件のオーガニック結果です。Googleは2025年9月にnum=100を尊重しなくなって以降、この件数を返しています。追加の各ページにはさらに1クレジットが必要です。
- **エラーは無料:** HTTPステータスが200以外の応答はクレジットを消費しません。
- **クレジット残高の確認は無料。**

プリペイドの検索クレジットに有効期限はありません。未使用の検索は、使用するまでアカウントに残ります。クレジットパックは$7.50から10,000検索まで、最大のパックでは$0.30/1K検索です。[料金](https://serpcrypto.com/ja/pricing/)をご覧ください。

## 検索クエリはどのようにエンコードすればよいですか？

他のクエリ文字列の値と同様、`q`をURLエンコードして送信します。スペースは`%20`または`+`になり、アクセント付き文字はUTF-8でエンコードされます。curlでは`--data-urlencode`、Pythonの`requests`と`httpx`では`params=`、Node.jsでは`URLSearchParams`で行えます。

検索クエリは、人が検索ボックスに入力するのとまったく同じように記述します。引用符、マイナス記号、`site:`は`q`内にそのまま残します。engineが訪問者に対するのと同じように、それらの適用方法を判断します。

## APIにはバージョンがありますか？

はい。バージョンはパスの一部です: `/api/v1/`。バージョン1の応答に新しいフィールドやブロックが追加されることがあるため、コードは未知のキーを無視するようにしてください。フィールドの削除や名前変更は、`v1`への変更ではなく、パスに新しいバージョンを付けて行われます。

## APIリファレンスに関する質問

### JSONボディ付きのPOSTリクエストは送れますか？

バージョン1ではできません。両方のendpointはクエリ文字列にパラメータを付けたGETリクエストを受け付けます。これにより、すべての呼び出しをcurlやブラウザで簡単に再現でき、ボディなしで簡単にログに記録できます。

### 1回の検索で何件の結果が返りますか？

1ページあたり約10件のオーガニック結果です。Googleは2025年9月にnum=100を尊重しなくなって以降、この件数を返しています。追加の各ページにはさらに1クレジットが必要です件です。30件の結果を集めるには、`page=1`、`page=2`、`page=3`をリクエストします。3回の検索で、3クレジットです。

### クレジットがなくなるとどうなりますか？

次の検索は`402 insufficient_credits`を返し、クレジットは消費しません。[料金ページ](https://serpcrypto.com/ja/pricing/)で残高から別のパックを購入してください。APIキーはそのまま機能し、検索はすぐに再開されます。

### 同じAPIキーを複数のサーバーから使えますか？

はい。APIキーはIPアドレスに紐づきません。制限されるのは、アカウントで同時に実行される検索数です。`GET /credits`の`concurrency_limit`がその数値を示します。

---

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