Custom Search JSON API

Google Custom Search JSON APIの代替:2027年1月1日までに移行を

GoogleはCustom Search JSON APIの新規受付を終了し、2027年1月1日にすべてのユーザーへの提供を終了します。Semscraperは、実際のブラウザでレンダリングしたGoogleの検索結果ページをそのまま取得します。1キーワードにつき最大10ページ、クエリにより約100件の結果を、サブスクリプションなしのプリペイドクレジットによる従量課金で利用できます。

  • 縮小されたインデックスではなく実際のGoogle SERP
  • 1キーワードにつき最大10ページ
  • 1ページの検索1,000件で€0.30
  • 1,000件の無料SERP
  • クレジットカードなし

Googleの発表内容とその時期

Googleのドキュメント(developers.google.com/custom-search/v1/overview およびProgrammable Search Engineのヘルプセンター)に基づく内容です。2026年10月10日に確認しました。

2026年1月20日以降

新しいProgrammable Search Engineは、指定した50ドメインまでに制限されます。「ウェブ全体を検索」オプションは提供されなくなりました。このオプションを使っている既存の検索エンジンは、2027年1月1日まで引き続き利用できます。

新規受付の終了

新しいプロジェクトでCustom Search JSON APIを有効にすることはできなくなりました。50ドメインまでの検索には、GoogleはVertex AI Searchを案内しています。ウェブ全体の検索はGoogleへの申請が必要です。

2027年1月1日

既存ユーザー向けのCustom Search JSON APIも終了します。まだこのAPIを呼び出しているアプリケーションは、それまでに移行を済ませる必要があります。

Semscraperが適している用途

SemscraperはCustom Searchをそのまま置き換える互換品ではありません。検索ユーザーが見るGoogleのページを取得するAPIです。置き換えに向いている用途もあれば、向いていない用途もあります。

向いている:Googleの監視

順位追跡、競合調査、SERP分析、AI Overviews。google.co.jp、google.comをはじめ、あらゆる国の実際の検索結果を、都市やデバイスを指定して取得できます。

向いている:ツールやエージェントへのデータ供給

Googleが実際に表示する内容を必要とするデータセット、データ拡充、エージェント、RAGパイプライン。処理は非同期のため、即時の応答ではなく、1回の検索につき収集時間として約20秒をお見込みください。

向いていない:自社サイト内の検索

自社ページを対象に一瞬で応答する必要がある検索ボックスには、サイト内検索エンジン、またはGoogleが50ドメインまで提供するVertex AI Searchが適しています。

Custom Search JSON APIとSemscraperの違い

項目Custom Search JSON APISemscraper
結果の取得元ご自身のProgrammable Search Engineです。ウェブ全体を対象に設定しても、Googleのインデックスの一部しか対象にならず、ご自身のサイトが優先されるとGoogleは説明しています。実際のブラウザでレンダリングした、Googleの実際の検索結果ページです。
内容ウェブ検索結果のリストです。Google検索の機能(Onebox、ユニバーサル検索)は含まれません。ページ上のすべてのブロック:自然検索結果、広告、ローカルパック、People Also Ask、ソース付きのAI Overviewsなど。
結果の件数1リクエストにつき10件、ページ送りで最大100件です(start + num は100を超えられません)。1回の呼び出しで最大10ページ、クエリにより約100件です。
国、言語、都市、デバイスglは特定の国の結果を優先し、hlはインターフェースの言語を設定し、lrとcrはドキュメントを絞り込みます。Googleのバージョン(国と言語)、都市またはGPS座標、デスクトップまたはモバイルを指定できます。
処理方式同期型:呼び出しの中で応答が返ります。非同期型:検索を作成し(1回の呼び出しで最大1,000件)、その後IDで結果を取得するか、コールバックURLで受け取ります。収集時間の中央値は1ページで約20秒、10ページで約50秒で、これにアカウントのキュー待ち時間が加わります(2026年9月12日から10月10日までの1,200万件のSERPで測定、うち1ページ530万件、10ページ26万件)。
料金1日100クエリまで無料、それ以降は1,000件あたり5ドル、1日10,000件までです。1ページの検索1,000件で€0.30、10ページの検索1,000件で€2.10です。サブスクリプションも1日の上限もなく、残高に有効期限はありません。
特定ドメインの検索対応しています。新しい検索エンジンではこれが唯一のモードです(50ドメインまで)。ドメインのリストを保存する機能はありません。キーワードにsite:演算子を入れると、1つのドメインに絞って検索できます。
画像検索対応しています(searchType=image)。対応していません。Googleが検索結果ページに画像ブロックを表示した場合に、そのブロックのみが返されます。

パラメータの置き換え

パラメータはそのまま入れ替えられるわけではありません。呼び出しの置き換え方を以下にまとめます。Googleの検索演算子は、キーワードに含めればそのまま使えます。

Custom SearchSemscraper
qkeyword
gllocation:国コードではなくGoogleのバージョンです。gl=jpはlocation=jpでgoogle.co.jp、gl=usはlocation=enでgoogle.comになります
hllanguage:locationと有効な組み合わせにします(jp/ja、en/en、fr/frなど)
num, startdepth:Googleの1〜10ページを指定し、同じ呼び出しですべて返されます
siteSearchキーワードにsite:example.com
exactTermsキーワードを引用符で囲む
excludeTermsキーワードに-単語
fileTypeキーワードにfiletype:pdf
lr, cr直接の対応はありません。Googleのバージョンと言語を選んでください
searchType=image対応なし
key, cxAPIキー1つを、Authorization: Bearerヘッダーで送信します

呼び出しの移行をステップごとに

同じ処理をPythonで書いた例です。google.co.jpでのクエリについて、自然検索の上位10件を取得します。主な違いは、作成してから取得する2段階の流れです。

移行前:Custom Search JSON API
import requests

r = requests.get("https://www.googleapis.com/customsearch/v1", params={
    "key": "GOOGLE_API_KEY",
    "cx": "SEARCH_ENGINE_ID",
    "q": "ランニングシューズ",
    "gl": "jp",
    "hl": "ja",
    "num": 10,
})
for item in r.json().get("items", []):
    print(item["link"], item["title"], item["snippet"])
移行後:Semscraper
import time
import requests

API = "https://api.semscraper.com/v1/serp"
HEADERS = {"Authorization": "Bearer API_KEY"}

# 1. create the search (up to 1,000 keywords per call)
r = requests.post(API, headers=HEADERS, timeout=60, json=[{
    "search_engine": "google_search",
    "keyword": "ランニングシューズ",
    "location": "jp",
    "language": "ja",
    "device": "desktop",
    "depth": 1,
}])
r.raise_for_status()
ids = [row["id"] for row in r.json()["data"]]

# 2. fetch the results once ready (about 20 s of collection for a depth-1 search,
#    plus queue time), 10 minutes at most
deadline = time.time() + 600
while ids and time.time() < deadline:
    time.sleep(10)
    r = requests.get(API, headers=HEADERS, timeout=60,
                     params={"ids": ",".join(ids[:100]), "output": "json"})  # 100 IDs per call
    r.raise_for_status()
    for row in r.json()["data"]:
        if row["status"] != "done":
            continue
        ids.remove(row["id"])
        for block in row["results"]:
            if block["type"] == "organic":
                for item in block["items"]:
                    print(item["url"], item["title"], item["description"])

if ids:
    print("Still pending, fetch them later by ID:", ids)

linkフィールドはurlに、snippetはdescriptionになります。各結果には、ブロック内の順位(rank_type)、ページ内の順位(rank_serp)、Googleのページ番号、ピクセル位置も含まれます。数千件のキーワードを扱う場合は、1,000件ずつ作成し、100件のIDごとに結果を取得するか、コールバックURLで受け取ってください。詳しくはBulk SERP APIをご覧ください。

4つのステップで切り替え

移行には準備が必要です。旧APIを停止する前に、数日間のテスト期間を設けてください。

1. テスト

登録時に付与される無料の1,000 SERPで、代表的なクエリを実行します。

2. 置き換え

パラメータ(glはlocationに)、非同期呼び出しへの移行、レスポンスのフィールド(linkはurlに、snippetはdescriptionに)を置き換えます。

3. 比較

実際のクエリのサンプルで、関連性、結果の網羅性、処理時間、消費量を比較します。

4. 切り替え

結果を確認できたら、2027年1月1日より十分前にアプリケーションをSemscraperへ切り替えます。

同じ量での費用

公開料金に基づく比較です。Googleは2026年10月10日に確認した料金、Semscraperはチャージ割引前の標準料金です。

用途Custom Search JSON APISemscraper
1,000キーワード、1ページ(約10件)5ドル(1日の無料枠を除く有料クエリ1,000件)€0.30
1,000キーワード、10ページ(約100件)50ドル(1キーワードにつき有料クエリ10件、1日の無料枠を除く)€2.10
1日10,000クエリを超える場合不可:1日10,000件が上限1日の上限なし

その日の無料枠100クエリをまだ使っていない場合は、4.50ドルと49.50ドルになります。Custom Search JSON APIは新規ユーザーには提供されていないため、これらの料金は2027年1月1日までの既存アカウントにのみ適用されます。Semscraperの料金の詳細。

FAQ

よくある質問

Custom Search JSON APIはいつ終了しますか?
新規受付はすでに終了しています。既存ユーザーは2027年1月1日までに別のソリューションへ移行する必要があるとGoogleは説明しています。
SemscraperはCustom Searchと同じ結果を返しますか?
いいえ。そこが多くの場合の利点です。Custom Searchはご自身のProgrammable Search Engineに問い合わせるもので、Googleのインデックスの一部しか対象にしていません。Semscraperは、指定した国、言語、都市、デバイスで、すべてのブロックを含むGoogleの実際の検索結果ページを返します。
検索を自社ドメインに限定できますか?
1つのドメインであれば、キーワードにsite:yourdomain.comを追加してください。Programmable Search Engineのようにドメインのリストを保存する機能はありません。自社サイト内の検索には、サイト内検索エンジンまたはVertex AI Searchが適しています。
応答はすぐに返りますか?
いいえ。各ページを実際のブラウザでレンダリングするため、収集時間の中央値は1ページで約20秒、10ページで約50秒です。2026年9月12日から10月10日までの1,200万件のSERP(うち1ページ530万件、10ページ26万件)で測定した収集時間の中央値で、これに送信量に応じたアカウントのキュー待ち時間が加わります。結果はIDで取得するか、コールバックURLへ送信されます。
移行後のSemscraperの料金は?
サブスクリプションも初期費用もありません。作成した検索ごとに料金が発生し、1ページ目は1,000件あたり€0.30です。結果の取得は無料です。登録時に1,000 SERPが無料で付与されるので、クエリをテストできます。

期限までにクエリをテストしましょう

1,000 SERPまで無料、クレジットカード登録は不要です。