SerpBase

レスポンスとエラー

すべての応答は同じ外枠の JSON です。成否は HTTP ステータスではなく status フィールドで判断し、その後に結果を読みます。

共通レスポンス構造

成功レスポンスは同じトップレベルメタデータを返します。エンドポイント固有のデータは organic、images、news、videos、places、place などに入ります。

status
必須
number

必須

ビジネスステータスコード。0 は成功です。

request_id
必須
string

必須

サポート、リトライ、ログ照合に使うリクエスト ID。

elapsed_ms
必須
number

必須

ゲートウェイが観測した実行所要時間。単位はミリ秒。

credits_charged
必須
number | null

必須

返金ロジック適用後に課金されたクレジット数。

search_type
任意
string

任意

製品が返す場合の、製品固有のレスポンス型。

エラー
error
必須
string

必須

人が読めるエラーメッセージ。

0
SUCCESS

リクエストは成功しました。製品固有の結果を確認してください。no_results だけでは HTTP 404 を証明しません。

課金あり

1000
INVALID_REQUEST

本文やパラメーターが欠落または無効です。

課金なしリクエストを修正してから

1001
UNAUTHORIZED

API キーが欠落、無効、または失効しています。

課金なしリクエストを修正してから

1004
NOT_FOUND

ゲートウェイのルートまたはカタログにリソースがありません。

課金なしリクエストを修正してから

1020
INSUFFICIENT_CREDITS

アカウント残高が不足しています。

課金なしリクエストを修正してから

1029
RATE_LIMITED

QPS または同時実行数の上限を超えました。

課金なし再試行可

1500
INTERNAL_ERROR

予期しない内部サーバーエラー。

課金なし再試行可

1502
UPSTREAM_FAILED

ワーカーが取得元の取得・解析エラーを返しました。

課金なし再試行可

1503
SERVICE_UNAVAILABLE

利用可能なワーカーセッションがありません。

課金なし再試行可

1504
UPSTREAM_TIMEOUT

ゲートウェイがワーカーの結果待ちでタイムアウトしました。

課金なし再試行可

JSON
{
  "status": 1001,
  "error": "unauthorized",
  "request_id": "0f3576b2-6e2e-4f1e-bb0e-8cb0d4a60195",
  "elapsed_ms": 0,
  "credits_charged": 0
}
レスポンスヘッダー

すべての製品レスポンスにこれらのヘッダーが含まれ、メッセージを解析せずに送信間隔の調整や再試行の判断ができます。

X-RateLimit-Limit
アカウントが許可する毎秒のリクエスト数。
X-RateLimit-Remaining
現在の 1 秒間に残っているリクエスト数。
Retry-After
拒否時に再送まで待つ秒数。
X-SerpBase-Retryable
true なら同じリクエストの再送で成功し得ます。false ならリクエスト自体の修正が必要です。
サポートへの連絡時
レスポンスの request_id(成功・失敗どちらにもあります)と呼び出し時刻を添えてください。それがあれば該当リクエストを数秒で特定できます。
プライバシーと保持
検索クエリは課金、デバッグ、不正利用防止、アカウントログのために記録される場合があります。保持期間はプライバシーページをご確認ください。

タイムアウト

HTTP クライアントのタイムアウトは 60 秒に設定してください(このドキュメントのコード例は設定済みです)。各リクエストはこちら側で 30 秒以内に結果かエラーを返して終わるため、60 秒あればネットワークの余裕も十分です。

  • ほとんどのリクエストは数秒で返りますが、15~20 秒かかるものもあります。Google の応答が遅いときや確認を求められたときは、この 30 秒の中で別の経路で再試行しているためです。タイムアウトを短くすると、まさに成功しかけていたリクエストを打ち切ってしまいます。
  • クライアントが先に打ち切った場合、リクエストは停止され返金されますが、結果も対処できるエラーも受け取れません。クライアントのタイムアウトは 30 秒未満にしないでください。
  • より速い応答が必要なら、Google 検索エンドポイントで timeout パラメーター(1~30 秒)を指定してください。再試行が予算に合わせて早く始まり、予算を使い切ると即座に status 1504 が返り、課金されません。HTTP クライアントのタイムアウトはそれより長くしてください。
  • それでも失敗またはタイムアウトした場合は、もう一度送ってください。課金されるのは成功した 1 回だけです。