Google Search Results Scraper - SERP & Rankings
Pricing
from $0.000035 / actor start
Google Search Results Scraper - SERP & Rankings
Google SERP scraper that returns one clean row per result — keyword, position, title, URL, domain, description, organic vs paid, and a 0-100 SEO score. Track rankings for any keyword + country, dedup across queries, filter to your domain. No API key. Export CSV/JSON/Excel.
Pricing
from $0.000035 / actor start
Rating
5.0
(1)
Developer
Flash Scrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Google SERP Scraper — search results, AI Overviews & rank tracking as a flat table
Turn any keyword into a clean Google rank table. This Google search results scraper returns one flat row per result — position, title, URL, registrable domain, description, sitelinks count, and a 0–100 SEO score — and it also captures what most SERP tools skip: Google's AI Overview (full answer text plus the source URLs it cites), People Also Ask, related searches, and paid ads. Pass your targetDomain and every matching row is flagged, turning the run into a rank tracker. Built for SEO teams, keyword researchers, and growth marketers who want a spreadsheet of rankings, not a nested JSON blob. Pay-per-result ($1 per 1,000 rows) with no Google API key, no SERP-API subscription, and no login.
What it does
- Runs Google searches for your queries (or full Google search URLs) in any country and language — SERPs are fetched through Apify's own
apify/google-search-scraper, so you never manage proxies or keys. - Flattens each SERP into one row per result: keyword, country, language, page,
resultType(organic,paid,ai_overview,people_also_ask,related_query), position, title, URL, display URL, description, sitelinks count, emphasized keywords, and result date. - Captures Google's AI Overview as a row — the full generative answer text in
descriptionplus every cited source URL insources. If your SEO strategy cares whether the AI answer cites you, this is the field. - Extracts the registrable domain from every result (correctly handling
co.uk-style TLDs) and dedupes across queries and pages. - Tracks your rankings: set
targetDomainand matching rows getisTarget: true; setonlyTargetDomainfor a pure "where do I rank?" dataset. - Scores each result 0–100 (
seo_score) from rank position, sitelinks, description completeness, and target match, and sorts rows by keyword → page → type → position.
Use cases
- Rank tracking — schedule a daily or weekly run for your keyword set and chart
positionfor your domain over time in Google Sheets. - AI Overview monitoring — see which keywords trigger an AI Overview, what it says, and whose pages it cites (yours or a competitor's).
- Keyword research — mine People Also Ask questions and related searches as tagged rows for content-brief ideas.
- Competitor SERP analysis — who owns page 1 for your money keywords, with sitelinks and ad presence per domain.
- SERP data pipelines — a lightweight Google search results API for agents and automations: clean flat JSON via the Apify API, MCP, Make, n8n, or Zapier.
Input
| Field | Type | Default | Description |
|---|---|---|---|
queries | array | ["best crm software"] | Search terms or full Google search URLs — one per line. |
countryCode | string | "us" | Two-letter country code setting the Google domain/geo (e.g. gb, ma). Empty = default. |
languageCode | string | "en" | Interface language code (e.g. fr, es). |
maxPagesPerQuery | integer | 1 | SERP pages to scrape per query (1–20; 10 results ≈ 1 page). |
resultsPerPage | integer | 10 | Organic results to request per page (1–100). |
mobileResults | boolean | false | Return the mobile SERP instead of desktop. |
includePaidResults | boolean | false | Also emit ads as rows (resultType: "paid"). |
includeAiOverview | boolean | true | Emit Google's AI Overview (text + source URLs) as a row. |
includePeopleAlsoAsk | boolean | true | Emit People Also Ask questions/answers as rows. |
includeRelatedQueries | boolean | false | Emit related search suggestions as rows. |
targetDomain | string | — | Your domain (e.g. mysite.com); matching results get isTarget: true. |
onlyTargetDomain | boolean | false | Keep only rows matching the target domain (pure rank-tracking view). |
{"queries": ["best crm software"],"countryCode": "us","languageCode": "en","maxPagesPerQuery": 1,"includeAiOverview": true,"includePeopleAlsoAsk": true,"targetDomain": "hubspot.com"}
Output
One dataset row per SERP result. All rows share the same columns, so the CSV export stays rectangular. An organic result:
{"keyword": "best crm software","country": "US","language": "en","page": 1,"resultType": "organic","position": 2,"title": "Best CRM Software: Everything You Need to Know","resultUrl": "https://www.salesforce.com/crm/best-crm/","displayUrl": "Salesforce › crm","domain": "salesforce.com","description": "Compare the top CRM platforms for sales teams…","siteLinksCount": 0,"emphasizedKeywords": "CRM, software","resultDate": null,"websiteTitle": "Salesforce","sources": [],"isTarget": false,"resultsTotal": 1240000000,"serpUrl": "https://www.google.com/search?q=best+crm+software","seo_score": 100}
An AI Overview row uses the same shape with resultType: "ai_overview", title: "AI Overview", the full answer text in description, and the cited URLs in sources. People Also Ask rows carry the question in title and the answer in description.
Pricing
This actor uses Apify pay-per-event pricing: $1 per 1,000 result rows ($0.001 per row) — one of the cheapest ways to get structured Google search results without a SERP-API subscription. You're charged only for the rows delivered; control volume with maxPagesPerQuery, resultsPerPage, and the include-toggles. Tracking 100 keywords weekly at one page each costs roughly $1–2/month. The free Apify plan is enough to try it on a real keyword set first.
Tips / FAQ
Do I need a Google API key or proxies? No. There's no key, no login, and no proxy setup — SERPs are fetched via Apify's maintained Google Search Scraper and returned to you already flattened.
Why don't I always get an AI Overview row? Google only shows AI Overviews on some queries, geos, and devices, and it can't always be captured — the row appears when Google served one and the crawl retrieved it. Absence of the row usually means Google didn't show one for that query/location.
How do positions work across pages? Google's own position is used when present; otherwise it's computed from the page number and resultsPerPage, so page 2 of a 10-result SERP starts at position 11.
Do PAA and related rows count toward billing? Every delivered row is a result, so yes — turn off includePeopleAlsoAsk/includeRelatedQueries if you only want the organic rank table.
What if the search source is down? Results come via an upstream data provider; on a transient outage the run ends gracefully with a "temporarily unavailable — please retry" message and you're charged nothing.
Is scraping Google legal? This collects public search results only and never uses a logged-in or personalized session. Google restricts automated access in its terms and changes its SERP layout often, so treat occasional gaps as normal. Use the data for SEO research.
Related actors
- Company & Domain Enricher — turn ranking domains into full company records
- Email Pattern Finder — find work emails at the companies you discover in the SERP
- LinkedIn Leads Scraper — reach the people behind the ranking domains
Support: found a bug or need a feature? Open an Issue on this actor's Issues tab — typical response within 1 business day.

