Pixel Position vs. Rank Position: Measuring SERP Layout, Not Just Rank

By Serpent API Team · · 6 min read

Rank position and pixel position answer different questions. Rank says: "where does this result fall in the ordered list of organic results?" Pixel position says: "where does this element actually appear on the page, measured in pixels from the top?" In 2026 the two answers often stop matching.

On a modern results page, the first organic result is rarely the first thing a user sees. An AI Overview, a block of ads, a featured snippet, and a People Also Ask box routinely stack above it. A rank #1 result can sit at pixel 300 on one query and pixel 1,800 on another — and the rank number is identical in both cases. This post explains what pixel position adds beyond rank and how to query it.

TL;DR: Add pixel_position=true to any /api/search or /api/search/quick call and every item — organic results, AI Overview, People Also Ask, featured snippet, knowledge panel, ads — comes back with a pixel_position y-coordinate plus a pixel_box geometry ({ x, y, w, h }). Desktop US, paid tiers, four engines (Google, Yahoo, Bing, DuckDuckGo). No price increase.

Rank vs. pixel: two different measurements

Ordinal rank is a bookkeeping metric. It counts only organic results, so a #1 is always #1 even if the page above it is 1,800 pixels of ads, an AI Overview, and a six-question PAA block. That made rank a reasonable stand-in for visibility in 2021, when the first organic result usually sat near the top of the page.

Pixel position is a layout metric. It measures the actual y-coordinate of an element from the top of the results page, so it naturally accounts for everything stacked above it. When an AI Overview or PAA block appears, every organic result below it moves down by hundreds of pixels — the pixel positions change even though the ranks do not. That divergence is what rank trackers miss.

What comes back per element

With pixel_position=true, every element in the response gains two fields:

FieldWhat it is
pixel_positionInteger y-coordinate from the top of the page. Smaller = higher on the page.
pixel_boxFull bounding rectangle: { x, y, w, h } — left offset, top offset, width, and height in pixels. pixel_box.y equals pixel_position by construction.

These appear on every organic[] item, plus the AI Overview, featured snippet, knowledge panel, People Also Ask, ads (top), shopping, videos, and local pack when present. Use pixel_position for a quick "how far down is it" check, and pixel_box when you need element area (w × h), a centerpoint, viewport intersection, or a pixel-accurate layout heatmap.

Above-the-fold analysis

The most direct use is the above-the-fold flag. The measurement viewport is 1366 × 768, so pixel_position < 768 means the element is visible without scrolling. That single boolean, trended per keyword, replaces a lot of hand-waving about "losing the fold":

Share of voice and SERP layout audits

Pixel geometry turns share-of-voice into something you can compute. An AI Overview with pixel_box of roughly 1100 × 428 pixels occupies a large vertical slice of the page — far more than a single organic result. Multiply each element’s h by its w and you get the share of page area each result type claims.

For client reporting, "average pixel position" correlates with actual visibility better than "average rank." The pixel position vs. rank deep dive covers the case-study math in detail.

Four engines, desktop US

Pixel position currently supports four engines — Google, Yahoo, Bing, and DuckDuckGo — on desktop results in the US locale. The measurement viewport is 1366 × 768, and all coordinates are measured from the top-left of the page. Mobile pixel positions are on the roadmap but are not available yet, and results outside the US desktop surface do not include the field.

There is a page-2 nuance worth knowing: items beyond the live page-1 measurement (Yahoo positions 8+, DuckDuckGo 11+, Google 11+) receive coordinates from a pre-saved per-engine page-2 layout. For above-the-fold decisions on page 1 — where this metric matters most — coordinates are measured live.

The API call

Enabling pixel position is one parameter. Here is the call in Node.js:

const res = await fetch(
  'https://apiserpent.com/api/search?q=best+credit+cards&engine=google&country=us&pixel_position=true',
  { headers: { 'X-API-Key': 'YOUR_API_KEY' } }
);
const json = await res.json();
for (const r of json.results.organic) {
  console.log(r.position, r.pixel_position, r.title);
}
const aboveFold = json.results.organic.filter(r => r.pixel_position < 768);
console.log('Above the fold:', aboveFold.length);

The response, in abbreviated form:

{
  "success": true,
  "engine": "google",
  "results": {
    "organic": [
      {
        "position": 1,
        "title": "…",
        "url": "https://example.com",
        "pixel_position": 750,
        "pixel_box": { "x": 126, "y": 750, "w": 652, "h": 118 }
      }
    ],
    "aiOverview": {
      "text": "…",
      "pixel_position": 210,
      "pixel_box": { "x": 125, "y": 210, "w": 1100, "h": 428 }
    },
    "featuredSnippet": {
      "text": "…",
      "pixel_position": 252
    },
    "peopleAlsoAsk": [
      { "question": "…", "pixel_position": 1337 }
    ],
    "ads": {
      "top": [
        { "title": "…", "pixel_position": 120 }
      ]
    }
  }
}

Store both position and pixel_position per (keyword, date), and the "rank-stable, pixel-jumped" alert becomes a one-line predicate — the pattern that catches SERP feature rollouts on the day they land. Try it live in the playground.

Honest limits

Pixel position is a paid-tier feature. Free-tier responses include metadata.pixelPositionUnavailable: 'free_tier' and no pixel fields. It is in BETA: the page layout can change, and on rare occasions an individual block may come back without a coordinate. Integrate with a fallback to ordinal rank when the field is missing, and treat the data as best-effort during BETA. There is no price increase for enabling it — the same per-call price as a normal search.

Where on the page, not just where in the list.

Serpent returns pixel_position and pixel_box on every SERP element across Google, Yahoo, Bing, and DuckDuckGo (desktop US, paid tiers). Add pixel_position=true to any search — no price increase.

Get Your Free API Key

Explore: Pixel Position API · Documentation · Pricing

FAQ

What is the difference between rank position and pixel position?

Rank position is ordinal — first, second, third — counted only across organic results. Pixel position is the y-coordinate of an element measured from the top of the results page, so it captures everything above it, including AI Overviews, ads, featured snippets, and People Also Ask boxes. A rank #1 result can sit at pixel 300 on one query and pixel 1,800 on another depending on which features fired.

How do I enable pixel position on the API?

Add pixel_position=true to any /api/search or /api/search/quick call. Every item in the response — organic results, AI Overview, People Also Ask, featured snippet, knowledge panel, ads, shopping, videos, and local pack — gets a pixel_position integer plus a sibling pixel_box object containing { x, y, w, h }. The base response is unchanged when the flag is omitted.

Which engines and devices support pixel position?

Pixel position supports four engines — Google, Yahoo, Bing, and DuckDuckGo — on desktop results in the US locale. The measurement viewport is 1366 × 768. Mobile pixel positions are on the roadmap. It is a paid-tier feature; free-tier responses include metadata.pixelPositionUnavailable: 'free_tier'.

Does pixel position cost extra?

No. A search with pixel_position=true costs the same per-call price as one without it, across all four supported engines. The feature is in BETA, so individual blocks can occasionally return a missing coordinate; integrate with a fallback to ordinal rank when the field is absent.