Google Search Results Scraper - SERP & Rankings avatar

Google Search Results Scraper - SERP & Rankings

Pricing

from $0.000035 / actor start

Go to Apify Store
Google Search Results Scraper - SERP & Rankings

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

Flash Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 description plus every cited source URL in sources. 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 targetDomain and matching rows get isTarget: true; set onlyTargetDomain for 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 position for 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

FieldTypeDefaultDescription
queriesarray["best crm software"]Search terms or full Google search URLs — one per line.
countryCodestring"us"Two-letter country code setting the Google domain/geo (e.g. gb, ma). Empty = default.
languageCodestring"en"Interface language code (e.g. fr, es).
maxPagesPerQueryinteger1SERP pages to scrape per query (1–20; 10 results ≈ 1 page).
resultsPerPageinteger10Organic results to request per page (1–100).
mobileResultsbooleanfalseReturn the mobile SERP instead of desktop.
includePaidResultsbooleanfalseAlso emit ads as rows (resultType: "paid").
includeAiOverviewbooleantrueEmit Google's AI Overview (text + source URLs) as a row.
includePeopleAlsoAskbooleantrueEmit People Also Ask questions/answers as rows.
includeRelatedQueriesbooleanfalseEmit related search suggestions as rows.
targetDomainstringYour domain (e.g. mysite.com); matching results get isTarget: true.
onlyTargetDomainbooleanfalseKeep 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.

Support: found a bug or need a feature? Open an Issue on this actor's Issues tab — typical response within 1 business day.