scraping-google-search-results について
Google 検索結果を SERP データセットとして収集するスキルです。検索語、国、言語、ページ数、モバイル表示を指定でき、通常の検索結果と SERP 機能を取得します。
主な機能
- 01複数の検索語を検索
- 02国と言語の指定
- 03検索語ごとのページ数制限
- 04モバイル SERP レイアウトの取得
- 05強調スニペットと PAA の収録
活用シーン
- 01キーワード調査用の検索結果収集
- 02国ごとの検索結果の比較
- 03強調スニペットと PAA ボックスの記録
MCP 対応
Apify MCP が利用可能な場合、`apify:run-actor` から `apidojo~google-search-scraper` Actor を実行します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill scraping-google-search-resultsインストール後、Claude Code で/scraping-google-search-resultsを入力して読み込まれたか確認します。
詳細
Google 検索結果のスクレイピング
あらゆる検索クエリの生の SERP データセットです。オーガニック検索結果、注目のスニペット、「他の人はこちらも質問」ボックスなど、さまざまな SERP 機能を返します。
前提条件
APIFY_TOKEN環境変数が設定されていること- オプション:Apify MCP サーバーがインストールされていること
入力
| パラメーター | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
startUrls | array | 任意 | [] | Google 検索 URL |
searchTerms | array | 任意 | [] | Google で検索するキーワード |
countryCode | string | 任意 | US | Google 検索の国(例:US、GB、TR) |
languageCode | string | 任意 | — | 結果の言語(例:en) |
maxItems | number | 任意 | 無制限 | すべてのクエリで返す結果の最大数 |
maxPagesPerQuery | integer | 任意 | 1 | クエリあたりの結果ページの最大数 |
mobileResults | boolean | 任意 | false | モバイル版の SERP レイアウトを取得 |
customMapFunction | string | 任意 | — | 各出力オブジェクトを変換する JavaScript 関数 |
ワークフロー
Progress:
- [ ] Step 1: Normalize query list
- [ ] Step 2: Run google-search-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver SERP dataset
ステップ 2:アクターを実行する
推奨 — run_actor.js(待機、出力、ファイル保存を自動処理します):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
APIFY_TOKENは環境変数または.envファイルに設定する必要があります。
Apify MCP を利用できる場合:
Tool: apify:run-actor
Actor: "apidojo~google-search-scraper"
Input:
{
"queries": ["query1", "query2"],
"maxPagesPerQuery": 1,
"countryCode": "us",
"languageCode": "en"
}
REST API の代替手段:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["query1", "query2"], "maxPagesPerQuery": 1}'
id を RUN_ID として保存します。status = SUCCEEDED になるまでポーリングします:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'
結果を取得します:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"
ステップ 3:エッジケースに対応する
- オーガニック検索結果が 0 件:クエリによって広告またはナレッジパネルのみが表示されている可能性があります。ユーザーに伝えてください。
- SERP 機能が存在する(PAA、スニペット):これらは個別の結果タイプとして返されます。
typeフィールドを含めて出力してください。 - 国によって結果が異なる:地域固有の結果が必要な場合は、
countryCodeを明示的に指定してください。
出力形式
# Google SERP Dataset: "<query>"
Query: <query> | Country: <cc> | Pages: N | Results: N
| Position | URL | Title | Snippet (truncated) | Type |
|----------|-----|-------|---------------------|------|
| 1 | ... | ... | ... | organic |
| — | ... | ... | ... | featured_snippet |
| — | ... | ... | ... | paa |
Available fields: query, position, url, title, description, type (organic/
featured_snippet/paa/local_pack/image/video), sitelinks, rating, reviewsCount
トラブルシューティング
Google CAPTCHA/ブロック: アクターが自動的に処理します。問題が続く場合は、クエリのバッチサイズを小さくしてください。
掲載順位に一貫性がない: SERP の掲載順位は場所やパーソナライズによって異なります。一貫性を保つには countryCode を指定してください。
コメント
Markdown 対応