Scraping Google Search Results
本技能用于抓取 Google 搜索结果,返回任意搜索查询的原始 SERP 数据集,包含自然结果、精选摘要、People Also Ask 框以及其他 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 函数 |
工作流程
进度:
- [ ] 步骤 1:规范化查询列表
- [ ] 步骤 2:运行 google-search-scraper
- [ ] 步骤 3:轮询至 SUCCEEDED
- [ ] 步骤 4:交付 SERP 数据集
步骤 2:运行 Actor
推荐方式 —— run_actor.js(自动处理等待、输出与文件保存):
# 快速回答(在对话中打印表格)
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}'
# 保存为 CSV
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# 保存为 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 可用:
工具:apify:run-actor Actor:"apidojo~google-search-scraper" 输入:
{
"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 |
可用字段:query、position、url、title、description、type(organic/featured_snippet/paa/local_pack/image/video)、sitelinks、rating、reviewsCount。
故障排查
- Google CAPTCHA/封锁:Actor 会自动处理;若持续出现,请减少查询批次大小。
- 位置不一致:SERP 位置会因地点和个性化而变化 —— 使用 countryCode 以保持一致性。