# Google Search Results Scraper (`myagizm/google-search-results-scraper`) Actor

Scrape Google Search results by query, country and language. Returns organic listings, sponsored links, People Also Ask, related searches and featured snippets when Google provides them.

- **URL**: https://apify.com/myagizm/google-search-results-scraper.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** SEO tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 successful serp pages

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Search Results Scraper — SERP, ads, PAA (No API Key, No Login)

<p align="center">
  <a href="https://apify.com/myagizm/google-search-results-scraper"><img src="https://img.shields.io/badge/Apify-Actor-00b96b?logo=apify&logoColor=white" alt="Apify Actor"></a>
  <img src="https://img.shields.io/badge/No%20Google%20API%20Key-required-blue" alt="No API key required">
  <img src="https://img.shields.io/badge/No%20Login-needed-blue" alt="No login needed">
  <img src="https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-orange" alt="Export formats">
  <img src="https://img.shields.io/badge/Pricing-pay%20per%20search%20page-success" alt="Pay per search page">
</p>

**Collect Google Search results as structured data.** Search by keyword, country, language, and page; export organic listings with titles, destination URLs, domains, and snippets. When Google includes them in the response, the dataset also contains sponsored listings, People Also Ask questions, related searches, and featured snippets. No Google Cloud project or Google API key is required.

> Start with one query and one page. You pay once for each successful search page, not for every row returned from that page.

### Table of contents

- [What it collects](#what-it-collects)
- [Who uses it](#who-uses-it)
- [Output fields](#output-fields)
- [How to run it](#how-to-run-it)
- [Input example](#input-example)
- [Output example](#output-example)
- [Coverage and limits](#coverage-and-limits)
- [Pricing](#pricing)
- [Tips](#tips)
- [Other Google data](#other-google-data)
- [AI agents and MCP](#ai-agents-and-mcp)
- [Integrations and API](#integrations-and-api)
- [Support](#support)
- [FAQ](#faq)
- [Related searches](#related-searches)
- [Disclaimer](#disclaimer)
- [Resources](#resources)
- [中文说明](#中文说明)

### What it collects

- 🔎 **Organic results** — title, destination URL, domain, rank, and the snippet Google displays when available.
- 💰 **Sponsored listings** — ad title, advertiser/domain, display URL, destination and click-through URL when exposed.
- 🙋 **People Also Ask** — question rows and an answer when the returned page exposes one.
- 🔗 **Related searches** — the query suggestions Google shows near the results.
- ⭐ **Featured snippets** — answer text when Google marks a featured answer in the response.
- 🌍 **Country and language controls** — request a Google country edition and language code.
- 📄 **Multiple pages** — request more than one page per query within the run-wide limit.
- 📊 **Dataset views** — browse the combined output or sponsored listings separately.

Search features depend on the query, market, device and page Google returns. An absent ad, PAA block or featured snippet means Google did not expose a parseable item for that request; it does not mean the feature exists for every query.

### Who uses it

- **SEO and content teams** checking keyword rankings and search snippets.
- **Market researchers** comparing search visibility between markets.
- **Advertisers** reviewing sponsored-result copy and visible destinations.
- **Product teams** collecting related queries for content and product discovery.
- **Analysts and developers** building a reproducible SERP dataset for dashboards and research.

### Output fields

Each dataset row has a `type`. Organic listings and SERP features are separate rows so you can filter, export, and join them by `query` and `page`.

| Field | Type | Description |
|---|---|---|
| `type` | string | `organic`, `ad`, `peopleAlsoAsk`, `relatedSearch`, or `featuredSnippet`. |
| `query` | string | Search term used for the page. |
| `page` | integer | One-based page number. |
| `language` | string | Requested two-letter language code. |
| `country` | string | Requested two-letter country code. |
| `position` | integer | Position within that result type and page. |
| `title` | string | Organic or sponsored result title, when applicable. |
| `url` | string | Destination URL for an organic result or sponsored listing. |
| `domain` | string | Destination hostname without `www`, when available. |
| `snippet` | string | Organic result description shown by Google, when available. |
| `clickUrl` | string | Sponsored click-through URL, if exposed. |
| `displayUrl` | string | Advertiser display URL, if exposed. |
| `question` | string | People Also Ask question. |
| `answer` | string | PAA answer when Google exposes it in the page. |
| `term` | string | Related-search query. |
| `text` | string | Featured snippet text, when detected. |

Titles, URLs and snippets reflect the response Google returned at run time. Google can rewrite a page title, omit snippets, reorder results or show different features in another location or at another time. Optional fields are not present on row types that do not use them.

### How to run it

1. Open **Google Search Results Scraper** on [Apify](https://apify.com/myagizm/google-search-results-scraper).
2. Add one or more phrases to **Search queries**. Keep the initial test to one query.
3. Choose the language and country edition you want to inspect.
4. Set **Pages per query**. The run is capped at 20 total query-pages.
5. Choose whether to include PAA, related searches, sponsored listings, and featured snippets.
6. Optionally add a site or recent-results filter.
7. Start the Actor and inspect the dataset. Use the **Sponsored results** view for ad rows.

Rows from the same search page share `query` and `page`. The Actor bills one `serp-page` event for each successfully returned query-page, regardless of whether that page yields several rows. An invalid request, blocked/challenge page, or page with no usable result rows is not billed as a successful page.

### Input example

```json
{
  "queries": ["what is photosynthesis", "photosynthesis education"],
  "language": "en",
  "country": "US",
  "maxPagesPerQuery": 1,
  "includePeopleAlsoAsk": true,
  "includeRelatedSearches": true,
  "includeAds": true,
  "includeFeaturedSnippets": true,
  "site": "",
  "dateRange": ""
}
```

- `queries`: 1–10 search phrases, up to 256 characters each.
- `language`: two-letter language code, for example `en`, `de`, or `tr`.
- `country`: two-letter country code, for example `US`, `GB`, `DE`, or `TR`.
- `maxPagesPerQuery`: 1–10 pages per query; no more than 20 pages across the run.
- `includePeopleAlsoAsk`: include PAA question rows when Google exposes them.
- `includeRelatedSearches`: include related-search rows when available.
- `includeAds`: include sponsored-result rows when present.
- `includeFeaturedSnippets`: include a detected featured answer when available.
- `site`: optional site filter, such as `example.com`; leave blank to search the open web.
- `dateRange`: optional Google time filter such as `d7` (seven days), `w1` (one week), `m1` (one month), or `h24` (24 hours).

Invalid language/country codes, blank queries, oversized inputs, invalid time filters, and requests exceeding the run-wide page cap fail validation before any search page is billed.

### Output example

This organic row is from a live one-query Windmill core run on 2026-09-29. The query was `what is photosynthesis`; the source URL returned HTTP 200, and its live page title matched the SERP title. The full run returned 22 rows: 9 organic results and 13 related-search rows. Counts and available SERP features vary by response.

```json
{
  "type": "organic",
  "query": "what is photosynthesis",
  "page": 1,
  "language": "en",
  "country": "US",
  "position": 1,
  "title": "What is Photosynthesis | Smithsonian Science Education Center",
  "url": "https://ssec.si.edu/stemvisions-blog/what-photosynthesis",
  "domain": "ssec.si.edu",
  "snippet": "Apr 12, 2017 · The whole process of photosynthesis is a transfer of energy from the Sun to a plant. In each sugar molecule created, there is a little bit of ..."
}
```

### Coverage and limits

- Google decides which result features appear. Ads, PAA, answer text and featured snippets are conditional; they are not guaranteed for every query or market.
- A country/language setting requests a Google edition. Search rankings can still vary by time, location, personalization signals and Google's own experiments.
- Each query can request up to 10 pages, with a hard cap of 20 query-pages in one run. This keeps run duration and spend bounded.
- Results are public search-page data, not full-page article text. Follow a returned URL separately if you need the destination page's contents.
- Position is the extracted position among that page's organic results or within the corresponding feature type; ad positions are separate from organic positions.
- Snippets and titles are Google's presentation, not a promise that the destination page currently contains the same wording.
- Pages with no usable business rows or a challenge response fail instead of returning an empty successful dataset. Successful pages from a partial run remain in the dataset, with the remaining errors recorded in the run log.
- The Actor does not sign in to Google, create accounts, or solve CAPTCHAs. Availability can change as Google changes its result-page markup and access controls.

### Pricing

Pricing is **$0.0015 per successful query-page** ($1.50 per 1,000 pages). A page with 9 organic rows and 13 related-search rows is still one billable page, not 22 result charges. Pages that fail validation or return no usable data are not charged. The Apify platform's share is reflected in the Actor's PAY\_PER\_EVENT setup; your run's usage panel shows the actual event count and cost.

A live Geofast proxy probe transferred 16,021 response bytes for one successful search page. At the stated planning rate of $0.31/GB, that is about $0.00000497 per page, or $0.00497 per 1,000 pages for proxy traffic alone. A direct successful request has no per-GB proxy charge. These measurements describe observed proxy traffic, not a guarantee of future route availability or total compute cost. The Actor uses the lowest-cost route that returns usable SERP data and keeps the paid Google SERP option behind a monthly quota guard.

### Tips

- Begin with one phrase, one country, and one page. Confirm the output shape before scaling up.
- Run the same query with different country codes to compare editions; treat them as separate observations, not a ranking guarantee.
- Use a specific phrase or a `site:` filter for narrower research.
- Schedule recurring runs and compare `query`, `country`, `page`, and `position` over time; rankings are snapshots.
- De-duplicate repeated runs with a key such as `query + country + page + type + position + url`.
- Filter on `type` before analysing rows. Related queries and PAA questions are not organic listings.
- Export the dataset to JSON for nested downstream workflows, or CSV/Excel for review.
- Use a run spending limit if you have a strict budget, and keep the 20-page cap in mind.

### Want other Google data?

- [Google News Scraper](https://apify.com/myagizm/google-news-scraper) — headlines, publisher, publish date and links.
- [Google Maps Scraper](https://apify.com/myagizm/google-maps-scraper) — local places and business details.
- [Google Maps Reviews Scraper](https://apify.com/myagizm/google-maps-reviews-scraper) — public review data.
- [Google Trends Scraper](https://apify.com/myagizm/google-trends-scraper) — search interest by region and time.
- [Google Play Scraper](https://apify.com/myagizm/google-play-scraper) — app listings and reviews.

Browse the rest of the [myagizm Apify profile](https://apify.com/myagizm) for other public data tools.

### AI agents and MCP

Use the Apify MCP server to start the Actor from supported AI clients, pass the input JSON, and read the resulting dataset. Keep the query list and total page count bounded; one page is a sensible first call. A typical agent workflow is: search a few phrases, read the organic rows, compare the visible result snippets, and use PAA or related-search rows to expand a research outline. The Actor returns the structured data; your client chooses how to interpret it.

### Integrations and API

Connect with Apify Schedules, webhooks, Make, Zapier, n8n, Airbyte, Google Sheets, Slack, or your own service. The API token belongs to your account and is not part of the Actor input.

Run synchronously and receive dataset items:

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~google-search-results-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries":["electric cars"],"language":"en","country":"US","maxPagesPerQuery":1}'
```

Start an asynchronous run:

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~google-search-results-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries":["electric cars"],"language":"en","country":"US","maxPagesPerQuery":1}'
```

Fetch the latest run's dataset later:

```bash
curl "https://api.apify.com/v2/acts/myagizm~google-search-results-scraper/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=json"
```

Replace `YOUR_APIFY_TOKEN` with your own Apify API token. Do not paste it into a public issue or share it in an Actor input.

### Support

For a reproducible issue, open the Actor's [Issues tab](https://apify.com/myagizm/google-search-results-scraper/issues). Include the query, country, language, page count, run ID and the row type you expected. Do not include private API tokens or sensitive personal data.

### FAQ

#### Do I need a Google API key?

No Google API key or Google Cloud project is required. You do need an Apify account to run Actors on Apify.

#### Does it require a Google login?

No. The scraper does not sign in to Google or use your Google account.

#### Does it return organic results?

Yes, when the requested search page contains parseable organic listings. Organic results are stored as individual dataset rows.

#### Does it collect ads?

It returns sponsored listings when the Google page exposes them and the ad rows can be parsed. Queries without ads produce no ad rows.

#### Does it collect People Also Ask?

It can return PAA questions when they are present in the response. PAA availability and answer text vary by query and country.

#### Does it return related searches?

Related-search suggestions are included when Google shows them in the page and they can be identified.

#### Does it include featured snippets?

It includes detectable featured-snippet text when present. Google may change the layout or omit this feature.

#### Can I choose a country and language?

Yes. Use two-letter codes such as `US` and `en`, or `DE` and `de`. These request an edition; they do not guarantee identical results on every run.

#### How many pages can I run?

Up to 10 pages per query and 20 total query-pages per run. The Actor rejects requests that exceed the total cap.

#### How is pricing calculated?

One successful query-page costs $0.0015. All returned rows from that page share that single page charge.

#### Are empty or blocked pages billed?

No successful page is charged unless usable business rows pass validation. A run with no usable results fails instead of billing an empty page.

#### Why do some queries return fewer rows?

Google controls the result count and can omit features, snippets, or listings. The parser also avoids treating a consent or challenge page as search data.

#### Does the Actor return the full text of destination websites?

No. It returns search-result fields such as title, URL, domain and snippet. Use a separate website crawler for full page text.

#### Are rankings stable?

No. Search results can change with time, country, language, Google experiments and other signals. Treat each run as a point-in-time observation.

#### Can I filter to one website?

Yes. Put a domain such as `example.com` in **Limit to a site**. Google applies its `site:` search operator.

#### Can I filter by date?

Yes. Use a supported Google time filter such as `d7`, `w1`, `m1`, or `h24`; leave the field blank for no date filter.

#### Can I export results?

Yes. Use the Apify dataset export options or retrieve JSON, CSV, Excel or XML with the API.

#### Can I schedule it?

Yes. Use Apify Schedules, the API, or a webhook-triggered run. Each run is separately billed by successful page.

#### Can I use it from an AI agent?

Yes. Start it through Apify MCP or the API, then read the dataset.

#### What if the results look incomplete?

Check that you selected the intended country and language, verify the query in a browser, and compare the row `type` values. Google does not show every feature for every query. Include the run ID when contacting support.

#### Does it solve CAPTCHAs or bypass Google accounts?

No. It does not log in, create or rotate Google accounts, or use a third-party CAPTCHA-solving service.

#### Is this an official Google product?

No. It is an independent third-party tool and is not affiliated with Google.

### Related searches

Google search results scraper · Google SERP scraper · Google organic results API · scrape Google search results · Google sponsored results scraper · Google Ads SERP data · People Also Ask scraper · PAA questions export · Google related searches scraper · Google featured snippet scraper · localized Google search results · Google search by country · Google search by language · multi-page SERP scraper · search rankings dataset · keyword SERP checker · SEO search results export · Google result snippets · search engine results page data · Google search API alternative · organic search listing dataset · Google ads preview data · local search edition comparison · search visibility monitoring · keyword research dataset · Google search CSV export · search results JSON API · site operator search data · scheduled SERP collection

### Disclaimer

This Actor provides an independent interface to publicly visible search-result information. Google and other names are trademarks of their respective owners. You are responsible for complying with applicable laws, terms, privacy requirements and data-protection obligations. Do not use collected data to make decisions about individuals without an appropriate legal basis. Destination websites may impose separate terms and access restrictions.

### Resources

- [Apify API documentation](https://docs.apify.com/api/v2)
- [Apify dataset export](https://docs.apify.com/platform/storage/dataset)
- [Apify Schedules](https://docs.apify.com/platform/schedules)
- [Apify MCP server](https://docs.apify.com/platform/integrations/mcp)
- [myagizm Apify profile](https://apify.com/myagizm)

### Free plan limits

Free Apify plan users may request up to 5 SERP pages per Apify user ID per UTC day. Requested pages count even when a page is blocked or returns no usable rows. Paid Apify plans are unlimited. At the limit, the Actor exits successfully with a clear note and does not request or charge another page.

### 免费计划限制

Apify 免费计划用户每个 UTC 日、每个 Apify 用户 ID 最多可请求 5 个 SERP 搜索页；页面被拦截或没有可用行时仍按请求页计数。付费 Apify 套餐不受此限制。达到上限时，Actor 会正常成功退出并说明限制，不再请求或收取额外搜索页费用。

### 中文说明

## Google 搜索结果抓取器 — SERP、广告与 PAA（无需 API 密钥、无需登录）

<p align="center">
  <img src="https://img.shields.io/badge/Apify-Actor-00b96b?logo=apify&logoColor=white" alt="Apify Actor">
  <img src="https://img.shields.io/badge/无需-Google%20API%20密钥-blue" alt="无需 API 密钥">
  <img src="https://img.shields.io/badge/无需-登录-green" alt="无需登录">
  <img src="https://img.shields.io/badge/导出-JSON%20%7C%20CSV%20%7C%20Excel-orange" alt="导出格式">
</p>

**将 Google 搜索结果整理为结构化数据。** 按关键词、国家、语言和页码搜索，并提取自然搜索结果的标题、目标网址、域名、排名及可用摘要。Google 页面中出现相应模块时，还会返回赞助广告、People Also Ask（大家还在问）、相关搜索和精选摘要。无需 Google Cloud 项目或 Google API 密钥。

> 建议先用一个关键词和一页测试。每个成功返回数据的搜索页只收费一次，不会按该页的每条数据重复收费。

### 目录

- [可抓取的数据](#可抓取的数据)
- [适用对象](#适用对象)
- [输出字段](#输出字段)
- [运行步骤](#运行步骤)
- [输入示例](#输入示例)
- [输出示例](#输出示例)
- [覆盖范围与限制](#覆盖范围与限制)
- [价格](#价格)
- [使用建议](#使用建议)
- [其他 Google 数据工具](#其他-google-数据工具)
- [AI 智能体与 MCP](#ai-智能体与-mcp)
- [集成与 API](#集成与-api)
- [支持](#支持)
- [常见问题](#常见问题)
- [相关搜索](#相关搜索)
- [免责声明](#免责声明)
- [资源](#资源)

### 可抓取的数据

- 🔎 **自然搜索结果**：标题、目标网址、域名、排名，以及 Google 提供时显示的摘要。
- 💰 **赞助广告**：广告标题、广告主域名、展示网址、目标网址和可用的点击网址。
- 🙋 **People Also Ask**：Google 页面中出现的问题；若页面提供答案，也会一并返回。
- 🔗 **相关搜索**：Google 在搜索结果附近展示的建议词。
- ⭐ **精选摘要**：Google 标记精选答案时提取其文本。
- 🌍 **国家与语言**：指定 Google 国家版本和界面/结果语言代码。
- 📄 **多页查询**：为关键词请求多页结果，同时受单次运行总页数上限约束。
- 📊 **数据集视图**：查看全部记录，或单独浏览赞助广告。

是否出现广告、PAA、精选摘要和相关搜索取决于关键词、市场、设备和 Google 实际返回的页面。某次查询没有这些记录，只表示该响应中没有可解析的对应模块，并不代表每个关键词都会出现这些模块。

### 适用对象

- **SEO 与内容团队**：检查关键词搜索结果、排名和摘要。
- **市场研究人员**：比较不同国家/地区的搜索展示情况。
- **广告团队**：查看搜索结果中展示的广告文案和目标网址。
- **产品团队**：收集相关搜索词，拓展内容和产品研究方向。
- **分析师与开发者**：为报表、监控和研究建立可复用的 SERP 数据集。

### 输出字段

每条数据都有 `type` 类型。自然结果和 SERP 功能模块分别存为独立记录，便于筛选、导出，并通过 `query` 与 `page` 关联。

| 字段 | 类型 | 描述 |
|---|---|---|
| `type` | string | `organic`、`ad`、`peopleAlsoAsk`、`relatedSearch` 或 `featuredSnippet`。 |
| `query` | string | 本页使用的搜索词。 |
| `page` | integer | 从 1 开始的结果页码。 |
| `language` | string | 请求的两位语言代码。 |
| `country` | string | 请求的两位国家代码。 |
| `position` | integer | 对应结果类型和页面内的位置。 |
| `title` | string | 自然结果或赞助广告标题（适用时）。 |
| `url` | string | 自然结果或广告的目标网址。 |
| `domain` | string | 可用时返回不含 `www` 的目标主机名。 |
| `snippet` | string | Google 为自然结果显示的摘要（适用时）。 |
| `clickUrl` | string | Google 广告点击网址（可用时）。 |
| `displayUrl` | string | 广告展示网址（可用时）。 |
| `question` | string | People Also Ask 问题。 |
| `answer` | string | 页面提供时返回的 PAA 答案。 |
| `term` | string | 相关搜索词。 |
| `text` | string | 可识别的精选摘要文本。 |

标题、网址和摘要以运行时 Google 返回内容为准。Google 可能改写网页标题、隐藏摘要、调整排序，或在不同地点和时间显示不同功能。与某种记录无关的字段不会出现在该类型的行中。

### 运行步骤

1. 在 [Apify](https://apify.com/myagizm/google-search-results-scraper) 打开 **Google Search Results Scraper**。
2. 在 **Search queries** 中添加一个或多个关键词。首次建议只填一个。
3. 选择要查询的语言和国家版本。
4. 设置 **Pages per query**。一次运行最多处理 20 个“查询 × 页面”。
5. 选择是否包含 PAA、相关搜索、赞助广告和精选摘要。
6. 可选填写站点过滤条件或时间过滤条件。
7. 启动 Actor 并查看数据集；广告记录可在 **Sponsored results** 视图中单独查看。

同一搜索页的所有记录会共享 `query` 和 `page`。每个成功返回可用数据的查询页只收取一个 `serp-page` 事件，不会按该页的多条记录重复收费。无效输入、挑战页面或没有可用结果的页面不会按成功页面计费。

### 输入示例

```json
{
  "queries": ["what is photosynthesis", "photosynthesis education"],
  "language": "en",
  "country": "US",
  "maxPagesPerQuery": 1,
  "includePeopleAlsoAsk": true,
  "includeRelatedSearches": true,
  "includeAds": true,
  "includeFeaturedSnippets": true,
  "site": "",
  "dateRange": ""
}
```

- `queries`：1–10 个搜索词，每个最多 256 个字符。
- `language`：两位语言代码，例如 `en`、`de` 或 `tr`。
- `country`：两位国家代码，例如 `US`、`GB`、`DE` 或 `TR`。
- `maxPagesPerQuery`：每个关键词 1–10 页；整次运行最多 20 页。
- `includePeopleAlsoAsk`：页面提供时收集 PAA 问题。
- `includeRelatedSearches`：页面提供时收集相关搜索词。
- `includeAds`：页面提供时收集赞助广告。
- `includeFeaturedSnippets`：页面提供且可识别时收集精选答案。
- `site`：可选站点过滤，例如 `example.com`；留空则搜索整个网络。
- `dateRange`：可选 Google 时间条件，例如 `d7`（7 天）、`w1`（1 周）、`m1`（1 个月）或 `h24`（24 小时）。

空关键词、过长输入、无效国家/语言代码、无效时间条件或超过单次运行页数上限的请求，会在搜索和收费前被拒绝。

### 输出示例

以下自然结果记录来自 2026-09-29 的一次真实单关键词 Windmill core 运行。关键词为 `what is photosynthesis`；目标页面返回 HTTP 200，网页标题与 SERP 标题一致。该次运行共返回 22 条记录：9 条自然结果和 13 条相关搜索。实际数量和 SERP 功能会随 Google 响应变化。

```json
{
  "type": "organic",
  "query": "what is photosynthesis",
  "page": 1,
  "language": "en",
  "country": "US",
  "position": 1,
  "title": "What is Photosynthesis | Smithsonian Science Education Center",
  "url": "https://ssec.si.edu/stemvisions-blog/what-photosynthesis",
  "domain": "ssec.si.edu",
  "snippet": "Apr 12, 2017 · The whole process of photosynthesis is a transfer of energy from the Sun to a plant. In each sugar molecule created, there is a little bit of ..."
}
```

### 覆盖范围与限制

- Google 决定每次响应中出现哪些功能。广告、PAA、答案文本和精选摘要并不保证每个关键词都有。
- 国家和语言设置用于请求相应 Google 版本；排名仍可能随时间、位置、Google 实验和其他信号而变化。
- 每个关键词最多请求 10 页，单次运行硬上限为 20 个查询页，以控制时长和支出。
- 返回的是公开搜索页数据，不是目标网页全文。如需网页正文，请另行访问目标网址。
- `position` 表示当前页中解析出的自然结果位置或功能记录位置；广告位置与自然结果分开。
- 标题和摘要是 Google 的展示内容，不保证目标网页当前正文含有完全相同的文字。
- 没有可用业务数据或返回挑战页时，运行会失败，不会伪装成空结果成功。部分页面成功时，已获取记录会保留，其他错误记入运行日志。
- Actor 不登录 Google、不创建或轮换账号，也不使用第三方 CAPTCHA 求解服务。Google 页面结构和访问策略变化可能影响可用性。

### 价格

价格为**每个成功查询页 $0.0015**（每 1,000 页 $1.50）。一页即使返回 9 条自然结果和 13 条相关搜索，也只按一个页面事件收费，而不是收取 22 次结果费用。验证失败或没有可用数据的页面不收费。Apify PAY\_PER\_EVENT 价格配置会计入平台分成；请以运行的 usage 面板查看实际事件数和金额。

一次成功的 Geofast 代理探测记录了 16,021 个响应字节。按 $0.31/GB 的估算费率，代理流量约为每页 $0.00000497，或每 1,000 页 $0.00497；成功直连不产生按 GB 计费的代理流量。这是观测到的代理流量，不代表未来路线一定可用，也不包括所有计算成本。Actor 优先使用成本较低且返回有效 SERP 数据的路线，并对付费 Google SERP 备用路线设置月度配额保护。

### 使用建议

- 先用一个关键词、一个国家和一页确认输出结构，再扩大查询范围。
- 改变国家代码重复运行同一关键词，可比较 Google 版本；请将其视为不同时间的观察值，而非固定排名保证。
- 使用具体短语或 `site:` 过滤器缩小范围。
- 定期运行并比较 `query`、`country`、`page` 和 `position`；排名是时间点快照。
- 可用 `query + country + page + type + position + url` 作为去重键。
- 分析前先按 `type` 筛选；相关词和 PAA 问题不是自然搜索结果。
- 可导出为 JSON 供下游程序处理，也可导出 CSV/Excel 供人工检查。
- 若有严格预算，可设置 Apify 运行支出上限，并留意 20 页总上限。

### 其他 Google 数据工具

- [Google News Scraper](https://apify.com/myagizm/google-news-scraper)：新闻标题、来源、日期和链接。
- [Google Maps Scraper](https://apify.com/myagizm/google-maps-scraper)：本地地点和商家信息。
- [Google Maps Reviews Scraper](https://apify.com/myagizm/google-maps-reviews-scraper)：公开评论数据。
- [Google Trends Scraper](https://apify.com/myagizm/google-trends-scraper)：按地区和时间查看搜索热度。
- [Google Play Scraper](https://apify.com/myagizm/google-play-scraper)：应用信息和评论。

更多公开数据工具请浏览 [myagizm 的 Apify 主页](https://apify.com/myagizm)。

### AI 智能体与 MCP

通过 Apify MCP 服务，在支持的 AI 客户端中启动 Actor、传入 JSON 并读取结果数据集。请限制关键词数量和总页数；首次调用建议只跑一页。典型流程是搜索若干短语、阅读自然结果、比较摘要，再用 PAA 和相关搜索扩展研究提纲。Actor 负责返回结构化数据，具体解释由你的客户端完成。

### 集成与 API

可接入 Apify Schedules、Webhook、Make、Zapier、n8n、Airbyte、Google Sheets、Slack 或自有服务。API token 属于你的 Apify 账号，不应作为 Actor 输入提交。

同步运行并返回数据集：

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~google-search-results-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries":["electric cars"],"language":"en","country":"US","maxPagesPerQuery":1}'
```

异步启动运行：

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~google-search-results-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries":["electric cars"],"language":"en","country":"US","maxPagesPerQuery":1}'
```

稍后获取最近运行的数据集：

```bash
curl "https://api.apify.com/v2/acts/myagizm~google-search-results-scraper/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=json"
```

将 `YOUR_APIFY_TOKEN` 替换为你自己的 Apify API token。不要把 token 粘贴到公开 issue 或 Actor 输入中。

### 支持

遇到可复现问题，请在 Actor 的 [Issues 页面](https://apify.com/myagizm/google-search-results-scraper/issues)提交。请提供查询词、国家、语言、页数、运行 ID 和预期记录类型。不要提交私有 API token 或敏感个人数据。

### 常见问题

#### 需要 Google API 密钥吗？

不需要 Google API 密钥或 Google Cloud 项目。你仍需要 Apify 账号来运行 Apify Actor。

#### 需要登录 Google 吗？

不需要。本工具不会登录 Google 或使用你的 Google 账号。

#### 会返回自然搜索结果吗？

会。只要请求的搜索页包含可解析的自然结果，就会将每条自然结果存成独立数据行。

#### 会采集广告吗？

Google 页面展示赞助广告且广告记录可解析时会返回广告行。没有广告的查询不会产生广告记录。

#### 会采集 People Also Ask 吗？

页面包含 PAA 时可返回问题。不同查询和国家的 PAA 及答案可用性不同。

#### 会采集相关搜索吗？

Google 页面展示且可以识别相关搜索时会返回相应词条。

#### 会返回精选摘要吗？

页面出现可识别的精选答案时会提取文本。Google 可能改变页面布局或不展示该功能。

#### 可以选择国家和语言吗？

可以。使用 `US`、`en` 或 `DE`、`de` 等两位代码。它们用于请求对应版本，但不能保证每次结果相同。

#### 一次最多抓取几页？

每个关键词最多 10 页，单次运行总计最多 20 个查询页。超出总上限的请求会被拒绝。

#### 如何计费？

每个成功查询页 $0.0015。该页的所有输出行共用一次页面收费。

#### 空页或被拦截页面会收费吗？

不会。只有通过数据验证且返回可用业务数据的页面才会收费。没有可用结果时运行会失败，不会把空页面当作成功计费。

#### 为什么某些查询记录较少？

结果数量由 Google 决定；Google 可能不显示某些功能、摘要或列表。解析器也不会把同意页或挑战页误当成搜索结果。

#### 会返回目标网站全文吗？

不会。输出是标题、网址、域名和摘要等搜索结果字段。获取正文请使用单独的网站抓取工具。

#### 排名会保持不变吗？

不会。结果可能随时间、国家、语言、Google 实验和其他信号变化。请将每次运行视为当时的快照。

#### 能只搜索某个网站吗？

可以。在 **Limit to a site** 中填入 `example.com` 等域名，Google 会使用 `site:` 运算符。

#### 可以限制日期吗？

可以。输入 `d7`、`w1`、`m1` 或 `h24` 等 Google 时间过滤条件；留空则不加时间限制。

#### 可以导出吗？

可以。使用 Apify 数据集导出功能，或通过 API 获取 JSON、CSV、Excel、XML。

#### 可以定时运行吗？

可以。使用 Apify Schedules、API 或 Webhook 启动。每次运行按照成功页面分别计费。

#### 可以从 AI 智能体调用吗？

可以。通过 Apify MCP 或 API 启动后读取数据集。

#### 结果看起来不完整怎么办？

确认国家和语言设置正确，在浏览器中检查查询词，并查看记录的 `type`。Google 并非每个查询都会显示所有功能。联系支持时请附上运行 ID。

#### 会解验证码或绕过 Google 账号吗？

不会。本工具不登录、不创建或轮换 Google 账号，也不使用第三方验证码求解服务。

#### 这是 Google 官方产品吗？

不是。这是独立的第三方工具，与 Google 没有隶属关系。

### 相关搜索

Google 搜索结果抓取器 · Google SERP 抓取 · Google 自然结果 API · 抓取 Google 搜索结果 · Google 赞助结果抓取 · Google 搜索广告数据 · People Also Ask 抓取 · PAA 问题导出 · Google 相关搜索词 · Google 精选摘要抓取 · 本地化 Google 搜索结果 · 按国家抓取 Google 搜索 · 按语言抓取 Google 搜索 · 多页 SERP 抓取 · 搜索排名数据集 · 关键词 SERP 检查器 · SEO 搜索结果导出 · Google 结果摘要 · 搜索引擎结果页数据 · Google 搜索 API 替代方案 · 自然搜索列表数据 · Google 广告预览数据 · 地区搜索版本比较 · 搜索可见度监控 · 关键词研究数据集 · Google 搜索 CSV 导出 · 搜索结果 JSON API · site 运算符搜索 · 定时 SERP 数据采集

### 免责声明

本 Actor 提供公开可见搜索结果信息的独立访问方式。Google 等名称属于各自所有者的商标。本工具与 Google 无关。你有责任遵守适用法律、服务条款、隐私和数据保护要求。未经适当法律依据，不要使用采集数据对个人作出决定。目标网站可能另有服务条款和访问限制。

### 资源

- [Apify API 文档](https://docs.apify.com/api/v2)
- [Apify 数据集导出](https://docs.apify.com/platform/storage/dataset)
- [Apify Schedules](https://docs.apify.com/platform/schedules)
- [Apify MCP 服务](https://docs.apify.com/platform/integrations/mcp)
- [myagizm 的 Apify 主页](https://apify.com/myagizm)

# Actor input Schema

## `queries` (type: `array`):

Search terms to run separately. Use 1–10 queries, up to 256 characters each. The total run is capped at 20 query-pages.

## `language` (type: `string`):

Two-letter Google interface/results language code, such as en, de, or tr.

## `country` (type: `string`):

Two-letter country code for the Google country edition, such as US, GB, DE, or TR.

## `maxPagesPerQuery` (type: `integer`):

Maximum search-result pages for each query. The whole run is limited to 20 pages; each page is billed once only when usable data is returned.

## `includePeopleAlsoAsk` (type: `boolean`):

Include People Also Ask questions when Google includes them in the returned page.

## `includeRelatedSearches` (type: `boolean`):

Include related search terms shown by Google when available.

## `includeAds` (type: `boolean`):

Include Google sponsored listings when they appear in the response.

## `includeFeaturedSnippets` (type: `boolean`):

Include featured snippet text when Google provides a detectable featured answer.

## `site` (type: `string`):

Optional domain or site expression, for example example.com. The query is prefixed with Google's site: filter.

## `dateRange` (type: `string`):

Optional Google time filter: d7 (last 7 days), w1 (last week), m1 (last month), or h24 (last 24 hours). Leave blank for no date filter.

## Actor input object example

```json
{
  "queries": [
    "electric cars",
    "site:example.com product launch"
  ],
  "language": "en",
  "country": "US",
  "maxPagesPerQuery": 1,
  "includePeopleAlsoAsk": true,
  "includeRelatedSearches": true,
  "includeAds": true,
  "includeFeaturedSnippets": true,
  "site": "",
  "dateRange": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Organic and sponsored results, People Also Ask questions, related queries, and featured snippets when present.

## `ads` (type: `string`):

Sponsored listings when returned by Google.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "what is photosynthesis"
    ],
    "language": "en",
    "country": "US",
    "maxPagesPerQuery": 1,
    "includePeopleAlsoAsk": true,
    "includeRelatedSearches": true,
    "includeAds": true,
    "includeFeaturedSnippets": true,
    "site": "",
    "dateRange": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/google-search-results-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["what is photosynthesis"],
    "language": "en",
    "country": "US",
    "maxPagesPerQuery": 1,
    "includePeopleAlsoAsk": True,
    "includeRelatedSearches": True,
    "includeAds": True,
    "includeFeaturedSnippets": True,
    "site": "",
    "dateRange": "",
}

# Run the Actor and wait for it to finish
run = client.actor("myagizm/google-search-results-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "what is photosynthesis"
  ],
  "language": "en",
  "country": "US",
  "maxPagesPerQuery": 1,
  "includePeopleAlsoAsk": true,
  "includeRelatedSearches": true,
  "includeAds": true,
  "includeFeaturedSnippets": true,
  "site": "",
  "dateRange": ""
}' |
apify call myagizm/google-search-results-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,myagizm/google-search-results-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/FK76Tcij95kFjQOgC/builds/lfsRdsx0aEQhf2ExL/openapi.json
