Googleは1ページあたり約10件のオーガニック結果を返します。最大100件を収集するには、pageパラメータで結果をページ送りします。serp.cheapで効率的に行う方法を紹介します。
基本
pageは1始まり(1= 最初のページ)です。- 各ページは約10件のオーガニック結果を返します。
- 各ページは個別に課金されるリクエストです — つまり100件 ≈ 10リクエストです。
Python: 最大100件を収集する
import requests
def fetch_results(q, gl="us", max_results=100):
out, page = [], 1
while len(out) < max_results:
r = requests.post(
"https://api.serp.cheap/v1/search",
headers={"X-API-Key": "YOUR_KEY"},
json={"q": q, "gl": gl, "page": page},
timeout=30,
)
r.raise_for_status()
batch = r.json()["organic"]
if not batch:
break # no more results
out += batch
page += 1
return out[:max_results]
results = fetch_results("best project management software")
print(len(results), "results")
Node.js
async function fetchResults(q, max = 100) {
const out = [];
for (let page = 1; out.length < max; page++) {
const res = await fetch("https://api.serp.cheap/v1/search", {
method: "POST",
headers: { "X-API-Key": process.env.SERP_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ q, gl: "us", page }),
});
const { organic } = await res.json();
if (!organic.length) break;
out.push(...organic);
}
return out.slice(0, max);
}
ヒント
- ページを結合する場合はリンクで重複除去しましょう — まれに重複が起こり得ます。
- ページが結果を返さなくなったら早めに停止しましょう。
- 遅延取得しましょう — 10件しか表示しないなら100件を引っ張らないこと。コストはページ数に比例します。