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

3.28intermediate4 min read

Mobile vs Desktop SERPs

Same query, two different SERPs. Mobile has different blocks, different order, sometimes different organic results entirely.

What you’ll learn

  • Articulate the structural differences between mobile and desktop SERPs.
  • Configure a SERP-API or scraper to return mobile-shaped results.
  • Track rank divergence between the two.
  • Pick which to scrape for which use case.

Google's mobile-first indexing means the mobile SERP is the canonical ranking. The desktop SERP is increasingly secondary. For most queries, mobile and desktop now show different results, different block orders, sometimes different organic rankings entirely.

A scraper that ignores this returns the wrong rank.

The structural differences

Aspect Desktop Mobile
Knowledge Panel Right sidebar Top of page, sometimes inline
Local Pack 3 places, side-by-side with org. 3 places, stacked above org.
Image Pack Inline carousel Larger, often higher placement
Video Carousel Inline Larger, often higher placement
AI Overview Block at top Block at top, more often expanded by default
Ads Top 1-4 + side rail (legacy) Top + bottom, no side rail
Pagination "Next" link at bottom Often "More results" with continuous scroll
Sitelinks More compact Stacked vertical layout

Mobile is space-constrained: blocks stack, sidebar disappears, mobile-specific features (call buttons, "Get directions") inline.

Mobile-first ranking matters

Google indexes the mobile version of pages by default. If your site renders different content on mobile vs desktop (lazy-loaded, mobile-hidden, mobile-only), the mobile version is what's indexed and ranked.

Rank tracking should follow:

  • Tracking desktop rank only is incomplete in 2026.
  • Many SEO teams report mobile rank as the headline KPI; desktop as a secondary check.

Configuring a SERP-API for mobile

Most SERP-APIs accept a device parameter:

r = requests.get("https://api.example-serp.com/search", params={
  "q": "iphone 15",
  "engine": "google",
  "device": "mobile",  # or "desktop" or "tablet"
  "gl": "us",
  "hl": "en",
  "api_key": "...",
})

Some providers default to desktop and require explicit device=mobile; some offer both in one call as a premium feature.

Scraping Google directly with a mobile UA

If you're (against advice) scraping Google directly, sending a mobile User-Agent gets a mobile SERP:

mobile_ua = (
  "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) "
  "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 "
  "Mobile/15E148 Safari/604.1"
)
r = requests.get(
  "https://www.google.com/search?q=iphone+15",
  headers={"User-Agent": mobile_ua},
)

The HTML you get back is mobile-shaped. Selectors differ from desktop; you'll need separate parsers (or, again, use a SERP-API).

Rank divergence: a real thing

Same query, same location, same time:

  • "iphone 15" on desktop → your site at organic position 3.
  • Same query on mobile → your site at organic position 5.

Causes:

  • Mobile blocks (AI Overview, mobile-friendly checks) push organic down differently.
  • Some sites have poor mobile UX and lose mobile rank as a penalty.
  • Some have aggressive mobile redirects that hurt mobile crawlability.

Tracking both surfaces lets you see when desktop wins and mobile lags, usually a sign you have a mobile UX problem worth fixing.

Use cases by device

Use case Device
Headline SEO rank tracking Mobile primarily
Desktop-focused B2B research Desktop
Local SEO Mobile (most "near me" queries are mobile)
News/breaking Both, Top Stories shows differently
Shopping research Both, shopping ads look different

Tablet, a third surface

Some SERP-APIs offer device=tablet. Practically:

  • Tablet results are often closer to desktop than mobile.
  • Tablet is a small share of total traffic.
  • Worth tracking if your audience uses iPads heavily; otherwise skip.

A combined-device rank tracker

def rank_for_query(q: str, my_domain: str, devices=("desktop", "mobile")) -> dict:
  out = {}
  for d in devices:
  data = requests.get("https://api.example-serp.com/search", params={
  "q": q, "engine": "google", "device": d,
  "gl": "us", "hl": "en", "api_key": "...",
  }).json()
  org = data.get("organic_results", [])
  rank = next(
  (i + 1 for i, r in enumerate(org) if my_domain in r.get("link", "")),
  None,
  )
  out[d] = rank
  return out

print(rank_for_query("api scraping guide", "scrapingcentral.com"))
# → {"desktop": 1, "mobile": 2}

PHP equivalent: same loop with Guzzle.

SERP-API cost considerations

Most providers charge per "search," not per device. A device=mobile query usually counts as one call. Some bundle desktop+mobile as a single search; check your provider's pricing.

If you're tracking 10k keywords daily and want both desktop and mobile, that's 20k calls. At $1–$5 per 1k, $20–$100/day. Plan accordingly (lesson 3.33 on cost optimization).

Hands-on lab

If you're using a SERP-API trial: run a query like "iphone 15" twice, once with device=desktop and once with device=mobile. Compare organic positions side-by-side, you'll find at least a few queries with non-trivial divergence. If you're scraping Catalog108 only (no real SERP-API): hit /search with a mobile User-Agent and inspect the response to see if the mock SERP returns a mobile-shaped layout (the lab's intentionally light here).

Hands-on lab

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

Open lab target → /search

Quiz, check your understanding

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

Mobile vs Desktop SERPs1 / 8

Google's primary index in 2026 is based on which version of a site?

Score so far: 0 / 0