mcpField
S
scraping-google-search-results

scraping-google-search-results

github.com/apidojo-ioデータ・データベース1794 回インストール24 週間前に更新
リポジトリ

scraping-google-search-results について

Google 検索結果を SERP データセットとして収集するスキルです。検索語、国、言語、ページ数、モバイル表示を指定でき、通常の検索結果と SERP 機能を取得します。

主な機能

  1. 01複数の検索語を検索
  2. 02国と言語の指定
  3. 03検索語ごとのページ数制限
  4. 04モバイル SERP レイアウトの取得
  5. 05強調スニペットと PAA の収録

活用シーン

  1. 01キーワード調査用の検索結果収集
  2. 02国ごとの検索結果の比較
  3. 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 サーバーがインストールされていること

入力

パラメーター型必須デフォルト備考
startUrlsarray任意[]Google 検索 URL
searchTermsarray任意[]Google で検索するキーワード
countryCodestring任意USGoogle 検索の国(例:US、GB、TR)
languageCodestring任意—結果の言語(例:en)
maxItemsnumber任意無制限すべてのクエリで返す結果の最大数
maxPagesPerQueryinteger任意1クエリあたりの結果ページの最大数
mobileResultsboolean任意falseモバイル版の SERP レイアウトを取得
customMapFunctionstring任意—各出力オブジェクトを変換する 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 を指定してください。

コメント