AnswerLineStart free

, Fundamentals · SERP API · Google

What is a SERP? Anatomy of a Google results page in 2026, block by block

A SERP (search engine results page) is the page a search engine returns for a query. On Google in 2026 it is a stack of distinct blocks: ads, sometimes an AI Overview, organic results, People Also Ask, a local pack for local queries, shopping grids for product queries, a knowledge panel for entities, discussion threads, and related searches at the bottom. Which blocks appear, and in what order, depends on the query, market and device.

Below is each block, what it is for, and the field POST /v1/monitor/google returns for it, followed by the blocks that are not returned as fields.

Two kinds of result

Google’s own visual elements gallery (checked 2026-09-17) names the parts of a result. It distinguishes a text result, “based on the textual content of the page”, from a rich result, which “typically relies on structured data in the markup of your page”, and names the pieces of a result: title link, snippet, attribution (site name, favicon, visible URL, breadcrumb), byline date and sitelinks. The same gallery names two page-level groups: a related searches group, “a cluster of related searches that other people have done”, and a related questions group, “a cluster of questions related to the user’s initial search”, which is the block most SEOs call People Also Ask.

Everything else on the page is a SERP feature: a block that is not a plain organic listing.

The blocks

The order below is for reading convenience. Google changes which blocks appear and where per query, market and device, so treat it as a map, not a rule.

Ads

Text ads appear above and below the organic results; product-style sponsored cards appear in carousels at the top or on the right. In the response, ads[] holds both, with type (RESULT for text ads, SHOPPING_CARD for sponsored product cards), blockPosition (top, bottom, middle, rhs), position within the block, page, title, url, domain, displayedUrl, description and ad sitelinks[]. Shopping cards add price, oldPrice, store, category and imageUrl.

AI Overview

An AI Overview is a generated answer on the results page with links to supporting sources. Google’s documentation on AI features says AI Overviews “are only shown when our systems determine that it is additive to classic Search, and as such, often don’t trigger” (AI features and your website, checked 2026-09-17). The same page says pages need to be indexed and eligible to be shown with a snippet, and that there are no additional requirements.

The API returns it as aioverview when you send include.aioverview (for example {} or {"markdown": true}). The object carries text, markdown (when requested), sources[] (position, url, label, description), citationPills[] (the inline chips, grouped by citationPillId), relatedLinks[], videos[] and ads[] shown inside the overview. It is null when no overview was available. For how the overview relates to the older featured snippet, see featured snippets and AI Overviews.

Organic results

The classic “ten blue links”. Each item in organicResults[] has position (1-indexed, counted across all pages you requested), page, title, link, displayedLink, snippet, date and sitelinks.inline[]. The pages field fetches 1 to 10 pages. Positions here are organic only; ads and features are not counted. Rank tracking on a SERP API explains what that means for position reporting.

People Also Ask

An expandable list of related questions. Each item in peopleAlsoAsk[] has question and type:

The content-strategy use of this block is in People Also Ask for SEO; extraction and expansion mechanics are in PAA keyword research.

Local pack

For local-intent queries, a map with a short list of businesses. localResults[] returns each place with position, title, placeId, rating, reviews, price, type, yearsInBusiness, address, phone, hours, description and links (website, directions). localResultsMoreLink is the URL of the expanded list. It is returned for desktop searches only and omitted when there is no pack. Set location (a Google canonical name such as "Denver,Colorado,United States") or uule to see the pack a searcher in that city sees; see local rank tracking.

Shopping grids

Organic product grids such as “Popular products”. shoppingCards[] returns title, position, category (the grid’s header), price, oldPrice, promoLabel, store, rating, reviews, thumbnail and productLink, which is usually an empty string. Sponsored product cards are in ads[], not here.

Knowledge panel

A panel about an entity (a company, person, place or work). knowledgeGraph returns title, type, kgmid, description, source, website, imageUrl, attributes[] (key, value), profiles[] and peopleAlsoSearchFor[] (name, link), plus entity-specific arrays such as ratings[] for films or webRatings[] for local businesses. It is omitted when no panel appears. People also search for covers the related-entity list.

Discussions and forums

Google’s “What people are saying” or “Trending posts and discussions” module, often linking to Reddit or forum threads. peopleAreSaying[] returns position, title, link and date (Google’s relative text, such as “5 days ago”). Omitted when absent.

Query suggestions at the bottom of the page. relatedSearches[] returns query and link (a Google search URL for that query).

Field map

Block Field in result Notes
Ads (text and sponsored products) ads[] type, blockPosition, position per block
AI Overview aioverview Only with include.aioverview; +2 credits; null if unavailable
Organic results organicResults[] position across pages, page, sitelinks
People Also Ask peopleAlsoAsk[] type LINK, AIOVERVIEW, UNKNOWN
Local pack localResults[], localResultsMoreLink Desktop only; omitted when absent
Shopping grid shoppingCards[] Omitted when absent
Knowledge panel knowledgeGraph Omitted when absent
Discussions peopleAreSaying[] Omitted when absent
Related searches relatedSearches[] query, link
Raw page html[] URLs of the raw HTML, with include.html

Blocks with no structured field

These blocks are not returned as structured fields:

Block Structured field How to get it
Featured snippet None include.html, then parse the raw page
Top stories None include.html; for news results use the Google News endpoint
Image pack None include.html
Video carousel on the results page None (only videos inside an AI Overview, in aioverview.videos[]) include.html
Total result count, search time None Not returned
“People also search for” box shown after a back-click None Not returned; see people also search for

include.html returns result.html[], one URL per results page with its raw HTML. Your own parsing of that HTML breaks when Google changes its markup, so use it for inspection and occasional analysis, not as a daily metric source.

AI Mode is a separate surface

Google AI Mode is not a block on the regular results page; it is its own conversational search experience. Google describes it as “particularly helpful for queries where further exploration, reasoning, or complex comparisons are needed” (AI features and your website, checked 2026-09-17). The API has a separate endpoint for it, POST /v1/monitor/aimode, which takes a prompt (not query) with country, location or uule, and device, and returns text, sources[], citationPills[] and, for some prompts, places[]. It is priced separately (4 credits per async task). See AI Mode and the AI Mode API post.

Why two people see different SERPs

The same query can produce different pages depending on:

When you collect SERPs for analysis, fix all of these per series. Google search parameters covers the targeting fields in more depth.

Request a SERP and list its blocks

curl -X POST https://api.answerline.dev/v1/monitor/google \
  -H "Authorization: Bearer $ANSWERLINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "coffee roasters denver",
    "country": "US",
    "hl": "en",
    "location": "Denver,Colorado,United States",
    "device": "desktop",
    "include": { "aioverview": {} }
  }'
import os
import requests

res = requests.post(
    "https://api.answerline.dev/v1/monitor/google",
    json={
        "query": "coffee roasters denver",
        "country": "US",
        "hl": "en",
        "location": "Denver,Colorado,United States",
        "device": "desktop",
        "include": {"aioverview": {}},
    },
    headers={"Authorization": f"Bearer {os.environ['ANSWERLINE_API_KEY']}"},
    timeout=(10, 330),
)
res.raise_for_status()
result = res.json()["result"]

blocks = {
    "ads": len(result.get("ads") or []),
    "aioverview": result.get("aioverview") is not None,
    "organic": len(result.get("organicResults") or []),
    "people_also_ask": len(result.get("peopleAlsoAsk") or []),
    "local_pack": len(result["localResults"]) if "localResults" in result else None,
    "shopping_grid": len(result["shoppingCards"]) if "shoppingCards" in result else None,
    "knowledge_panel": "knowledgeGraph" in result,
    "discussions": len(result["peopleAreSaying"]) if "peopleAreSaying" in result else None,
    "related_searches": len(result.get("relatedSearches") or []),
}
print(blocks)
const res = await fetch("https://api.answerline.dev/v1/monitor/google", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ANSWERLINE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    query: "coffee roasters denver",
    country: "US",
    hl: "en",
    location: "Denver,Colorado,United States",
    device: "desktop",
    include: { aioverview: {} },
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const { result } = await res.json();

const present = [
  ["ads", (result.ads ?? []).length > 0],
  ["aioverview", result.aioverview != null],
  ["peopleAlsoAsk", (result.peopleAlsoAsk ?? []).length > 0],
  ["localResults", "localResults" in result],
  ["shoppingCards", "shoppingCards" in result],
  ["knowledgeGraph", "knowledgeGraph" in result],
  ["peopleAreSaying", "peopleAreSaying" in result],
].filter(([, on]) => on).map(([name]) => name);
console.log(present);

This synchronous call costs 3 credits base, +2 for the AI Overview and +2 for running synchronously: 7 credits. The same payload as an async GOOGLE task costs 5.

Two things to note in code:

What each block is useful for

Block Typical question it answers
Organic results Where do we rank, and who ranks above us?
AI Overview Is there a generated answer, and does it cite us?
People Also Ask What do searchers ask next, and who answers?
Local pack Which businesses does Google show for this city?
Ads Who bids on this query, and where do their ads sit?
Shopping grid Which products and stores appear, at what prices?
Knowledge panel Has Google resolved the query to an entity, and is it ours?
Discussions Which forum threads shape opinion on this topic?
Related searches Which adjacent queries should we cover?

Tracking how these blocks change over time is covered in SERP feature change tracking, and the data model behind the response in structured SERP data. If you are choosing a provider, best SERP APIs compares options.

Glossary

More terms are in the glossary. To request your first results page, see the Google Search engine page.

Questions

What does SERP stand for?

SERP stands for search engine results page: the page a search engine returns for a query. On Google it combines organic results with blocks such as ads, an AI Overview, People Also Ask, a local pack and a knowledge panel.

Which SERP blocks does the Google Search endpoint return as structured fields?

organicResults, ads, aioverview (when requested), peopleAlsoAsk, relatedSearches, localResults, shoppingCards, knowledgeGraph and peopleAreSaying. localResults, shoppingCards, knowledgeGraph and peopleAreSaying are omitted when the block is not on the page.

Does the API return featured snippets, top stories, image packs or video carousels?

No. Featured snippets, top stories, image packs and video carousels on the results page are not returned as structured fields. Request include.html to get the raw page HTML if you need to inspect those blocks yourself.

Is Google AI Mode part of the SERP?

AI Mode is a separate Google surface with its own conversational answer, not a block on the regular results page. This API covers it with its own endpoint, POST /v1/monitor/aimode, which returns text, sources and citation pills.

Why does the same query show different SERPs to different people?

Results depend on country, language, location and device, among other things. The Google Search request lets you fix country or gl, hl, location or uule, and device so that runs are comparable.

Try it on your own prompts

500 free credits a month, no card. One POST returns the answer, sources and citations as JSON.

Keep reading