いまや多くのチームはスタックを二分して運用している。ログインの裏側やJavaScriptを多用する対象には、レジデンシャルプロキシとステルス型のヘッドレスブラウザを組んだ自前スクレイパー。公開済みでインデックスされた対象には、ホスト型の検索/SERP API。2026年に「これ一つで全部うまくいく」ツールは存在せず、最近のr/dataengineeringのスレッド(「数年スクレイピングから離れていた、今はみんな何を使ってる?」60票)もそれを裏づける。あるコメント。「Google検索のスクレイピングは本当に難しい……SERPを使うか、Googleのエンジニアに勝つかだ。」別のコメント。「自分で回すには脆すぎる。職場ではSERPサービスを使っている。」三つ目が本当の理由を言い当てた。「AIのせいでCloudflareのアンチボットが激増した。誰も自分のデータをタダで持っていかれたくない。」
最後の一文が全てだ。自前スクレイピングのコストが上がった。AIの学習データを巡るゴールドラッシュで誰もが守りに入り、Cloudflare、DataDome、PerimeterXはフィンガープリントによるヘッドレス検出を強化した。だから問いは「どのスクレイピングライブラリか」ではなく「この対象はスタックのどの層に属するか」に変わった。
第1層:自前スクレイパー+レジデンシャルプロキシ
ログインの裏側や完全にクライアントレンダリングされる対象には、これがいまも必要だ。ログイン済みのダッシュボード、社内SaaSのレポート、空の<div id="root">だけを返すReactアプリを思い浮かべてほしい。ここではPlaywrightかステルスフォークを動かし、レジデンシャルプロキシをローテーションし、面倒を見続けることを受け入れる。最も柔軟で、最も壊れやすい層だ。Cloudflareのチャレンジが更新されるたびに半日が消える。SearXNGもこの近くにある。無料・自己ホスト型だが、上流エンジンがHTMLを変えると壊れ、規模が出ると自前のプロキシが要る。
第2層:ホスト型のスクレイピング/クロールAPI
任意のサイトのページ内容が要るがブラウザを自分で回したくないなら、クロールAPIは料金分の働きをする。定番はFirecrawl。無料1,000クレジット/月、Hobbyプランは月16ドルで約3,000クレジット、AI抽出は1回5クレジット、クレジットは繰り越し不可。Jina AIのr.jina.aiリーダーはクリーンなテキストを返し、非商用ならキーごとに無料1,000万トークン。これらは雑なHTMLをLLM向けのテキストに変換する。ただしAI抽出パスに課金しない限り、「価格」や「評価」といった型付きフィールドは得られない。
第3層:構造化された検索/SERP API
ここが最も使われていない層だ。対象が公開済みでインデックスされているなら——Googleの結果、Amazonの商品ページ、Redditのスレッド、YouTube——検索APIは構造化JSONを渡し、Cloudflareと戦うことは一切ない。サイトをクロールしているのではなく、すでにクロール済みのAPIに問い合わせているからだ。Serperは1,000クレジット1.00ドルから、規模が出れば0.30ドル/1kまで下がり、6か月有効の無料2,500クレジット付き。SerpApiは無料で月250検索、その後は月25ドルで1,000。Scavioはクレジット制で0.005ドル/クレジット。フル機能のGoogle SERPは2クレジット、ライトリクエストは1、そして1本のキーでGoogle、Reddit、YouTube、Amazon、Walmart、TikTokをまかなえる。
判断ルール
対象は公開済みでインデックスされているか。ならば検索APIを使い、アンチボットと戦わずに型付きJSONを得る。ログインの裏か、JSレンダリングか。なら第1層に逆戻りで、そこではどのAPIも救ってくれない。はっきり言う。SERP APIは認証済みページやクライアントレンダリングのページのスクレイピングを置き換えない。置き換えるのは、公開SERPやマーケットプレイスの商品ページをスクレイピングするという、あの具体的で苦しい作業——まさにRedditのスレッドが「本当に難しい」と呼んだものだ。
以下はScavioに対するフル機能のGoogleクエリで、構造化JSONを返す。
import requests
resp = requests.post(
"https://api.scavio.dev/api/v1/google",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"query": "best web scraping stack 2026", "light_request": False},
)
data = resp.json()
for result in data["organic"]:
print(result["position"], result["title"], result["link"])
# full_request は people_also_ask、knowledge_graph、related_searches も返す
for q in data.get("people_also_ask", []):
print("PAA:", q["question"])ヘッドレスブラウザなし、プロキシプールなし、Cloudflareなし。Google、Reddit、Amazon、YouTubeに関しては、これが多くのチームの行き着いた2026年の答えだ。ゲート付きでJSの重い対象には、Playwrightの仕掛けを温めたままにしておこう。
それぞれが負ける場面
どのツールもすべてで勝つわけではない。Googleを月に数百回しか叩かないなら、SerpApiの無料250やSerperの無料2,500クレジットでコストゼロになり、どの有料プランより有利になり得る。ランダムなブログからクリーンな本文が欲しいなら、SERP APIがそもそも取得を想定していないページをFirecrawlやJinaが読む。そして対象がすべてログインの裏なら、第2層も第3層も役に立たない。自己ホストしてプロキシを組め。誇張ではなく、層を対象に合わせよ。