Scraping Central is reader-supported. When you buy through links on our site, we may earn an affiliate commission.

3.23beginner5 min read

Organic Results vs Paid Ads vs Shopping Results

Three result types share the SERP. Each is a different data shape, a different scrape target, and a different question your scraper answers.

What you’ll learn

  • Distinguish organic results, text ads, and shopping ads on the page and in JSON.
  • Understand the metadata each carries (position, ad rank, price, merchant).
  • Pick which to scrape for which analytics use case.
  • Be aware of the ethical / ToS context around scraping paid ads.

Three different "result types" share the SERP, and they're solving three different problems for the user, and for the scraper.

Organic Results

The classic blue-link list. Algorithmically ranked, not paid. What SEO is about.

Shape in a SERP-API JSON:

{
  "organic_results": [
  {
  "position": 1,
  "title": "iPhone 15 - Apple",
  "link": "https://www.apple.com/iphone-15/",
  "displayed_link": "https://www.apple.com › iphone-15",
  "snippet": "iPhone 15. With the powerful A16 Bionic chip...",
  "sitelinks": [
  {"title": "Compare", "link": "..."},
  {"title": "Specs", "link": "..."}
  ],
  "rich_snippet": {"price": "$799", "rating": 4.8}
  }...
  ]
}

Key fields:

  • position, rank within the organic block (after ads).
  • title, link, snippet, the visible content.
  • sitelinks, sub-links Google bolts onto big-brand results.
  • rich_snippet, schema.org-derived extras (price, rating, FAQ).

Use cases: rank tracking, content gap analysis, competitor monitoring, keyword research.

Paid Search Ads

Sponsored text ads marked "Sponsored" or "Ad." Look like organic results but with an "Ad" label. Advertisers pay per click (Google Ads / Bing Ads).

{
  "ads": [
  {
  "position": 1,
  "title": "iPhone 15 | Free Shipping",
  "link": "https://example.com/iphone-15?gclid=...",
  "displayed_link": "https://www.example.com/iphone",
  "snippet": "Save up to $200 on the new iPhone 15.",
  "block_position": "top",
  "phone": "(555) 123-4567",
  "extensions": ["Free shipping", "30-day returns"]
  }...
  ]
}

Key fields:

  • block_position, "top," "bottom," or "side", different ad slots.
  • extensions, ad assets (call, location, snippet, image).
  • gclid in the URL, Google's click tracking parameter.

Use cases: competitor ad-copy research, paid SEM monitoring, share-of-voice analysis.

Note: Some advertisers care strongly about not having their ad copy scraped. The competitive intelligence is real, but so is the toxicity if abused.

Shopping Ads (Product Listing Ads / Shopping Pack)

Product cards with image, price, merchant, rating. Pulled from Google Merchant Center feeds. Look completely different from text ads, visual, prominent, often above organic.

{
  "shopping_results": [
  {
  "position": 1,
  "title": "Apple iPhone 15 128GB Black",
  "link": "https://www.example.com/iphone-15",
  "thumbnail": "https://...",
  "price": "$799",
  "extracted_price": 799.0,
  "currency": "$",
  "merchant": "Apple Store",
  "rating": 4.8,
  "reviews": 1240,
  "delivery": "Free 2-day delivery"
  }...
  ]
}

Key fields:

  • extracted_price, numeric form of the price (vs the formatted price string).
  • merchant, who's selling.
  • rating, reviews, aggregated.
  • delivery, shipping promise.

Use cases: price intelligence, merchant tracking, product availability monitoring, competitive pricing.

The visual distinction on the page

In Chrome:

  • Text ads, Sponsored badge above title; small "Ad" beside the URL.
  • Shopping pack, distinct visual carousel of product cards with images.
  • Organic, no badge; the typical title-link-snippet layout.

Mobile SERPs blur the distinction more; ads now look very similar to organic, by design.

Why scrapers care about all three

Use case Organic Ads Shopping
Rank tracking (SEO) Primary Optional Optional
SEM intelligence Optional Primary Optional
Price intelligence Tangential No Primary
Competitor monitoring Partial Strong Strong
Content strategy Primary Indirect No

If you're doing serious SERP analytics, all three matter. Pure SEO tools focus organic; pure SEM tools focus paid; pricing tools focus shopping. The big platforms (Semrush, Ahrefs, SimilarWeb) collect all three.

A scraper that captures all three

A SERP-API request typically returns all three in one JSON response. Your scraper splits them by block:

import requests

def parse_serp(data):
  return {
  "organic": [
  {
  "position": r["position"],
  "url": r["link"],
  "title": r["title"],
  "snippet": r.get("snippet", ""),
  }
  for r in data.get("organic_results", [])
  ],
  "ads": [
  {
  "position": a["position"],
  "url": a["link"],
  "title": a["title"],
  "block": a.get("block_position"),
  }
  for a in data.get("ads", [])
  ],
  "shopping": [
  {
  "title": s["title"],
  "price": s.get("extracted_price"),
  "merchant": s.get("merchant"),
  "rating": s.get("rating"),
  "url": s.get("link"),
  }
  for s in data.get("shopping_results", [])
  ],
  }

PHP version: same shape, with ?? null for missing fields.

Position numbers and how to interpret them

A SERP-API will give you:

  • position (or rank) within each block.
  • Sometimes an absolute_position combining blocks.

If you're tracking "rank for iPhone", careful. There are at least three "rank 1"s on the page (organic 1, ad 1, shopping 1). Pick which one matters for your KPI and be consistent.

The legal context

A few notes that apply to scraping ads especially:

  • Google's ToS forbids automated scraping of Google. Many SERP-APIs route around this by using residential proxies and presenting as real users. The legal status is genuinely murky.
  • Competitor ad scraping has been litigated. Generally OK for analytics; clearly NOT OK for cloning, fraud-clicking, or harassment.
  • Shopping data is more open, many merchants want their products surfaced widely. But the Google shopping feed is Google's.

When in doubt, use a SERP-API (lessons 3.31–3.40). Their lawyers have already thought about this.

Hands-on lab

On practice.scrapingcentral.com/search?q=phone, identify visually: which result is organic, which (if any) is an ad placeholder, which is shopping. Open Network → Fetch/XHR and look at the JSON that populates the page. Note how the three are separated by block. Then in a real Google search, do the same visual exercise, note how Google's CSS makes it harder, which is exactly why SERP APIs exist.

Hands-on lab

Practice this lesson on Catalog108, our first-party scraping sandbox.

Open lab target → /search?q=phone

Quiz, check your understanding

Pass mark is 70%. Pick the best answer; you’ll see the explanation right after.

Organic Results vs Paid Ads vs Shopping Results1 / 8

Which result type carries an `extracted_price` numeric field in most SERP-API responses?

Score so far: 0 / 0