C#からGoogleをスクレイピングするのは、たいてい HttpClient + HtmlAgilityPack で始まり、プロキシ料金の請求書とヘッドレスブラウザで終わります。ここでは安い方法を紹介します。リクエスト1回で、Googleの結果を構造化JSONとして取得できます。プロキシもパースも不要です。
.NETでの自前スクレイピングが高くつく理由
- IPブロック — GoogleはデータセンターのIPを素早くブロックします。ローテーションするレジデンシャルプロキシを借りることになります。
- CAPTCHA — 量によってトリガーされ、解くのにコストがかかります。
- ヘッドレスブラウザ — JSでレンダリングされる結果によってPlaywright/Seleniumに追いやられ、負荷がかかると重くなります。
- セレクタの劣化 — GoogleのDOMが変化し、HtmlAgilityPackのXPathが壊れます。
安い方法: リクエスト1回
HttpClient と System.Text.Json だけ — 追加パッケージなし:
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-API-Key",
Environment.GetEnvironmentVariable("SERP_CHEAP_API_KEY"));
var res = await http.PostAsJsonAsync("https://api.serp.cheap/v1/search",
new { q = "best crm software", gl = "us" });
var doc = await res.Content.ReadFromJsonAsync<JsonElement>();
foreach (var r in doc.GetProperty("organic").EnumerateArray())
{
Console.WriteLine($"{r.GetProperty("position")}. {r.GetProperty("title")}");
Console.WriteLine($" {r.GetProperty("link")}");
}
プロキシも、ブラウザも、メンテナンスするパーサーもありません。
または公式SDKを使う
dotnet add package SerpCheap
var client = new SerpCheap.Client(
Environment.GetEnvironmentVariable("SERP_CHEAP_API_KEY"));
var res = await client.SearchAsync(new SearchParams { Q = "best crm software", Gl = "us" });
Console.WriteLine(res.Organic[0].Title);
Webアプリを作っていますか? dotnet add package SerpCheap.AspNetCore がクライアントをDIに登録し、コントローラーに注入できるようにします。
料金
| 1クエリあたりの料金 | |
|---|---|
| フレッシュ結果 | $0.0006 |
| キャッシュ結果 | $0.0003 |
| 登録時の無料枠 | 100件の検索 |
従量課金は$0.75/1kから、クレジットは12か月間有効 — レジデンシャルプロキシの帯域幅だけよりも安いです。最も安いSERP APIの比較をご覧ください。
よく使うパラメータ
次のステップ
serp.cheapを試す
スニペットをコピーし、キーを追加すれば、C#からGoogleをスクレイピングできます。登録時に100件の無料検索 — カード不要。以降は$0.75/1kからの従量課金で、クレジットは12か月間有効です。
- 無料APIキーを取得する →
- カード払いがお好みですか? serp.cheapはRapidAPI(約$0.90/1k)とApify(約$1.50/1k)でもご利用いただけます。