# Scrape the Google results page without proxies, CAPTCHAs or parsers

Scraping Google yourself means proxies, CAPTCHAs and a parser that breaks when the page changes. seo.serp does the fetch on a SERP provider and hands back the parsed page: positions, titles, URLs, snippets, the features present and the sources an AI Overview cited.

HTML page: https://www.routergrowth.com/tools/google-search/serp-scraping-api
Part of: [Google Search tools](https://www.routergrowth.com/tools/google-search.md)

## The call

[`seo.serp`](https://www.routergrowth.com/catalog/seo.serp): Live Google or Bing results for a keyword and location, with SERP features and AI Overview presence.

Price on this network: $0.0035 per results page. The exact quote is shown before every run.

## What a real run returned

Run on 2026-10-19: 8 records in 7.4 s for $0.0035. Personal fields are masked. Google in Boston for best running shoes: review sites on top, a forums block, and an AI Overview citing three sources that the response lists.

| position | domain | title |
|---|---|---|
| 2 | www.treelinereview.com | Best Road Running Shoes for Men of 2026 |
| 3 | www.runnersworld.com | The 7 Best Running Shoes for Beginners in 2026, Tested ... |
| 5 | health.yahoo.com | Best running shoes of 2026, tested by real runners and ... |

## How to do it

1. **No setup.** There is no proxy, browser or CAPTCHA service to configure. The call needs only a keyword.
2. **Set the place.** Use City,State,Country for city level results; the response confirms the resolved location.
3. **Get parsed results.** Organic results come with position, title, URL, domain and snippet, plus serp_features and ai_overview_sources.
4. **Scrape the pages behind.** Pass the top URLs to web.scrape to read their content.

## Ask it like this

- Scrape Google in Boston for best running shoes and tell me which review sites the AI Overview cites. (`seo.serp`)
- Scrape the top five results for this keyword and compare their headings with our page. (`seo.serp`, `web.scrape`)

## Connect

MCP server: `https://api.routergrowth.com/mcp`

```bash
claude mcp add --transport http routergrowth https://api.routergrowth.com/mcp
```

```bash
npm install -g routergrowth && routergrowth setup
routergrowth run -c seo.serp -i '{"keyword": "best running shoes", "location": "Boston,Massachusetts,United States"}'
```

```bash
curl -X POST https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{"capability": "seo.serp", "input": {"keyword": "best running shoes", "location": "Boston,Massachusetts,United States"}}'
```

## Worth knowing

- **Blocks are not your problem.** The fetch runs on the provider's side. A failed search moves to a fallback under your cap, or is not charged.
- **Parsed, not raw HTML.** You get fields, not the page source. Use web.scrape when you need the HTML of a result.
- **AI Overview sources.** When Google shows an AI Overview, the cited URLs come back in ai_overview_sources when the provider sees them.

## Questions

### Do I need proxies?

No. The scraping runs on the SERP provider.

### Can I get the raw HTML of the results page?

No. The call returns parsed results and features.

### How many results come back?

The first page of organic results, usually eight to ten after ads and blocks are set aside.

### Does it scrape Bing too?

Yes. Set engine to bing.

## Related

- [Track Google positions with a weekly SERP call and a diff](https://www.routergrowth.com/tools/google-search/serp-tracker-api.md)
- [What a SERP call costs on RouterGrowth and how it is billed](https://www.routergrowth.com/tools/google-search/serp-api-price.md)
- [Get Google results into a Python script with one POST request](https://www.routergrowth.com/tools/google-search/serp-api-python.md)
- [Give Claude, Cursor or Claude Code live Google results over MCP](https://www.routergrowth.com/tools/google-search/serp-api-mcp.md)
- [Fetch the live Bing results page for any keyword and location](https://www.routergrowth.com/tools/google-search/bing-serp-api.md)
- [A SERP API your agent calls: the live Google results page, as JSON](https://www.routergrowth.com/tools/google-search/serp-api.md)
