Availability checked November 4, 2026: Google SERP collection is available through ProtoScrape in early access for US English desktop requests. The google_serp engine returns ordered search-result observations. Google AI Mode and ChatGPT provide separate answer observations; keep those datasets clearly labeled.
A Google SERP is a search engine results page. For SEO analysis, the useful question is often which pages appeared for a defined query, in what order and with what accompanying text. Turning that observation into a dataset requires a clear definition of what you count as a result.
Google’s Visual Elements gallery distinguishes text, rich, image and video results and exploration features. It also explains that appearance can vary with device, country, query language and other factors. A report should preserve its observation settings rather than presenting one result list as universal.
Define what a position means
An organic position is an order within an explicitly defined result set. It should not silently include advertisements, an AI answer or every visual element displayed above a link. A page can be first in the organic list while other features occupy space above it.
Write your counting rule before comparing dates. For example, your study might count top-level organic text results and keep other features in separate fields. If a collection source cannot reliably distinguish those features, disclose that limitation rather than infer an exact visual layout from a list of links.
Keep the fields needed to review a result
A practical analysis record can contain:
| Field | Why it matters |
|---|---|
| Query and query-group identifier | Connect the observation to a stable research question |
| Collection timestamp | Separate observations taken at different times |
| Country, language and device | Explain the intended observation context |
| Result position | Preserve the ordering used by your counting rule |
| Title and URL | Identify the observed page and displayed title |
| Snippet, when present | Retain the accompanying description |
| Collection status and observed depth | Distinguish missing data from absence in the captured results |
ProtoScrape’s current SERP response provides position, title, url and snippet; snippets can be empty. Other search features are outside this response schema. Preserve original URLs alongside any normalized domain used for aggregation. A domain-level report and a page-level report answer different questions.
Distinguish absence from a failed observation
If your dataset contains ten valid organic results and a target page is absent, report “not observed in the captured top ten.” Do not assign position eleven unless you actually observed it there. If collection failed or produced no usable results, the page’s position is unknown.
The distinction matters in trend charts. Replacing every missing observation with a large numerical rank creates artificial drops during collection failures. Keep a missing-data state, report coverage and compare only observations with compatible counting rules and depth.
Build comparisons that answer a specific SEO question
Useful comparisons include whether the same URL remains visible, whether a different page from your domain replaces it, and whether the displayed title or snippet changes. Store those changes separately. A position movement and a URL replacement may need different follow-up work.
Group queries by intent so a large set of branded searches does not overwhelm a smaller group of category questions. When using illustrative scores such as “share of observed top-ten positions,” publish the formula and denominator. Do not label a custom dataset score as an official Google metric.
Compare organic search and AI answers carefully
An organic result position, an AI answer mention and an AI citation are separate measurements. A website appearing in one surface does not establish its presence in another. For a combined report, give each surface its own observation count, coverage and metrics.
The AI Mode, AI Overviews and SERP guide explains these distinctions. You can collect Google AI Mode answer text and available citations with ProtoScrape today; you cannot use those observations to reconstruct a SERP ranking.
Check availability before integrating
Use GET /v1/engines as the current availability reference. Submit a collection job with engine set to google_serp:
curl https://api.protoscrape.com/v1/jobs \
-H "Authorization: Bearer $PROTOSCRAPE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-serp-001" \
-d '{"engine":"google_serp","query":"solar energy benefits","country":"US"}'
Poll GET /v1/jobs/{job_id} until a terminal state. After success, read GET /v1/jobs/{job_id}/result and save the returned organic array with the query and collection timestamp. Each validated successful SERP job uses one credit. Failed jobs release their reservation; repeat submissions with the same idempotency key reuse the original job.
Result count and page composition can vary. Record the actual returned depth instead of assuming that every observation contains ten results.
For work you can run now, see the ProtoScrape product guide and API documentation. ProtoScrape is independent and is not affiliated with Google.