PHPから直接Googleをスクレイピングするのは、たった5行のcURLスクリプトに見えます。IPのBAN、CAPTCHA、壊れたセレクタが始まるまでは。ここでは安くて確実な方法を紹介します。APIコール1回で、Googleの結果を構造化JSONとして取得できます。
PHPでの自前スクレイピングが高くつく理由
- IPブロック — GoogleはデータセンターのIPをすぐにブロックするため、ローテーションするレジデンシャルプロキシ(多くの場合$3〜5/GB)を借りることになります。
- CAPTCHA — 量によってトリガーされ、解くのにコストと時間がかかります。
- ヘッドレスブラウザ — GoogleはますますJS実行を必要とし、PHPからヘッドレスChromeを走らせる羽目になります。
- パーサーの劣化 — GoogleのHTMLは変化し、DOMDocumentのセレクタが静かに壊れます。
これらを合計すると、「無料」のスクレイピングはプロキシ・サーバー・メンテナンスの面で、安いSERP APIよりも高くつきます。
安い方法: HTTPコール1回
依存ゼロ — ネイティブcURLで、JSONボディをPOSTし、JSONを受け取ります:
<?php
$ch = curl_init("https://api.serp.cheap/v1/search");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . getenv("SERP_CHEAP_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"q" => "best crm software",
"gl" => "us",
]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
foreach ($data["organic"] as $r) {
printf("%d. %s\n %s\n", $r["position"], $r["title"], $r["link"]);
}
これがスクレイパーのすべてです。プロキシも、ヘッドレスブラウザも、メンテナンスするパーサーもありません。
または公式SDKを使う
composer require serpcheap/serpcheap
$client = new SerpCheap\Client(getenv("SERP_CHEAP_API_KEY"));
$res = $client->search(q: "best crm software", gl: "us");
Laravelアプリなら? composer require serpcheap/laravel がファサードと設定を用意します。詳しい手順はPHPチュートリアルをご覧ください。
料金
| 1クエリあたりの料金 | |
|---|---|
| フレッシュ結果 | $0.0006 |
| キャッシュ結果 | $0.0003 |
| 登録時の無料枠 | 100件の検索 |
従量課金は$0.75/1kから、クレジットは12か月間有効 — プロキシの帯域幅だけよりも安上がりです。最も安いSERP APIまとめで比較してください。
よく使うパラメータ
gl— 結果の対象国(us、de、br、…)。ローカルSEOを参照。hl— インターフェース言語。page— 1始まり。各ページが個別のリクエストです。ページネーションを参照。tbs— 最新の結果を取得する期間フィルター。
次のステップ
serp.cheapを試す
cURLスニペットをコピーし、キーを追加すれば、PHPからGoogleをスクレイピングできます。登録時に100件の無料検索 — カード不要。以降は$0.75/1kからの従量課金で、クレジットは12か月間有効です。
- 無料APIキーを取得する →
- カード払いがお好みですか? serp.cheapはRapidAPI(約$0.90/1k)とApify(約$1.50/1k)でもご利用いただけます。