BETA · Google · Yahoo · Bing · DuckDuckGo · Desktop · US

Pixel Position & Geometry for Every SERP Element

Add pixel_position=true to any search call across Google, Yahoo, Bing, or DuckDuckGo and every item — organic results, AI Overview, People Also Ask, featured snippet, knowledge panel, ads, shopping, videos, and local pack — comes back with both an integer pixel_position (y-coordinate from the top of the SERP) and a full pixel_box with x, y, width, and height. The only API that ships per-element geometry across all four engines, at the same per-call price as base search.

Get an API Key Try in Playground
No price increase Every block, every item Integer y + full {x,y,w,h} box Opt-in flag

Rank Numbers Lie. Pixels Don't.

Google's first organic result no longer sits at the top of the page. AI Overviews, featured snippets, ads, and 4-question PAA boxes routinely push position #1 below 1,000 pixels. Two queries with identical "rank #1" results can have wildly different real visibility.

Honest Rank Tracking

A "rank #2" result sitting at y=1,800 px (below an AI Overview, featured snippet, and ad block) gets a fraction of the clicks of a "rank #2" result at y=320 px. Track real visibility, not just ordinal position.

Above-the-Fold Detection

Use a viewport threshold (e.g. y < 768) to identify which elements are visible without scrolling. Build dashboards that flag every page where your client lost the fold.

SERP Feature Impact

Compare pixel position over time as Google rolls out new SERP features. Catch the day your top-of-page snippet got pushed below an AIO — long before the rank metric notices anything has changed.

Ad Position Auditing

Each ad in the response carries a pixel_position too. Validate that paid placements are landing where the bid auction promised, not buried under organic SERP features.

Featured Snippet Dominance

Knowing your snippet exists isn't enough — knowing it sits at y=180 means it's the first thing users see. Track snippet pixel position across keywords and competitors.

Honest Reporting

Show clients the screenshot that matches their search. A pixel y-coordinate next to every result is the proof that builds trust without you having to ship screenshots.

One Flag. Pixels Everywhere.

Add pixel_position=true to any /api/search or /api/search/quick call. The request shape is otherwise unchanged. The response gains a single pixel_position integer on every item.

cURL — pixel position on Google web search
# Quick search with pixel positions
curl "https://apiserpent.com/api/search/quick?q=mesothelioma+lawyer&engine=google&country=us&pixel_position=true" \
  -H "X-API-Key: YOUR_API_KEY"
Python
import requests

resp = requests.get(
    "https://apiserpent.com/api/search",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={
        "q": "how to bake bread",
        "engine": "google",
        "country": "us",
        "pixel_position": "true",
    },
)
data = resp.json()

# Every organic item has an integer pixel_position
for item in data["results"]["organic"]:
    print(item["position"], item["pixel_position"], item["url"])

# SERP feature blocks too
if data["results"]["aiOverview"]:
    print("AIO at y =", data["results"]["aiOverview"]["pixel_position"])
Node.js
const resp = await fetch(
  "https://apiserpent.com/api/search?q=tesla+stock+price&engine=google&country=us&pixel_position=true",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();

// Filter to "above the fold" results (y < viewport height)
const aboveFold = data.results.organic.filter(r => r.pixel_position < 768);
console.log(`${aboveFold.length} organic results visible without scroll`);
JSON Response (annotated)
{
  "success": true,
  "engine": "google",
  "results": {
    "organic": [
      {
        "position": 1,
        "title": "",
        "url": "https://example.com",
        "pixel_position": 750,    // y-coordinate from top of SERP
        "pixel_box": { "x": 126, "y": 750, "w": 652, "h": 118 }   // full geometry (NEW)
      }
    ],
    "aiOverview": {
      "text": "",
      "pixel_position": 210,
      "pixel_box": { "x": 125, "y": 210, "w": 1100, "h": 428 }
    },
    "featuredSnippet": {
      "text": "",
      "pixel_position": 252,
      "pixel_box": { "x": 126, "y": 252, "w": 652, "h": 374 }
    },
    "knowledgePanel": {
      "title": "",
      "pixel_position": 789,
      "pixel_box": { "x": 832, "y": 789, "w": 372, "h": 512 }
    },
    "peopleAlsoAsk": [
      { "question": "", "pixel_position": 1337, "pixel_box": { "x": 126, "y": 1337, "w": 652, "h": 52 } }
    ],
    "ads": {
      "top": [
        { "title": "", "pixel_position": 120, "pixel_box": { "x": 126, "y": 120, "w": 652, "h": 82 } }
      ]
    }
  }
}

What You Get

An integer pixel_position and a full pixel_box: {x, y, w, h} on every item across the entire response shape. No source-of-pixel flags, no separate per-block fields — one consistent shape for every result type, every engine.

Parameter
pixel_position=true on /api/search or /api/search/quick. Defaults to false; default-off responses are byte-identical to today.
Engines supported
Google, Yahoo, Bing, DuckDuckGo (all on desktop, US locale). Mobile pixel positions are on the roadmap.
Viewport
1366 × 768 (desktop default).
Where it appears
Every organic[] item, plus aiOverview, featuredSnippet, knowledgePanel, peopleAlsoAsk[], ads.top[], shopping[], videos[], localPack[], and relatedSearches[] when present.
pixel_position
Integer y-coordinate of the element from the top of the rendered SERP page. Smaller = higher on the page. Items with pixel_position < 768 are above the fold.
pixel_box NEW
Sibling field with full geometry: { x, y, w, h } — left offset, top offset, width, and height of the element's bounding box, all in pixels at the 1366×768 viewport. Use this to compute element area, centerpoint, viewport intersection, or build pixel-accurate SERP heatmaps. Returned alongside pixel_position at no extra cost; pixel_box.y is identical to pixel_position by construction.
Tier
All paid tiers. Free-tier responses include metadata.pixelPositionUnavailable: 'free_tier' and no pixel fields.
Pricing impact
None. A search with pixel_position=true costs the same as one without — and you get full pixel_box geometry in the same call.
Pages 2+
Items beyond the live page-1 measurement (Yahoo positions 8+, DDG positions 11+, Google positions 11+) receive y-coordinates from a pre-saved per-engine page-2 layout.
Coordinate origin
All pixels measured from the top-left of the rendered page (x = 0, y = 0 is the very top-left). Larger y = further down; larger x = further right.
Stability
BETA. Rare drift on individual blocks may produce a missing pixel_position / pixel_box; integrate with a fallback to ordinal rank in those cases.

Pixel Position vs. SerpAPI & DataForSEO

Pixel-style metrics are a small subset of what most SERP APIs ship. Here is what the field looks like across the three providers offering anything in this space.

Capability Serpent API SerpApi.com DataForSEO Live Advanced
Pixel position on every organic resultYesPartial (block-level only)Yes
Engines supportedGoogle · Yahoo · Bing · DuckDuckGoGoogle onlyGoogle only
Pixel position on AI Overview / featured snippet / knowledge panel / PAA / adsYes (every block)Some blocksYes
Full element geometry (x, y, width, height)Yes — pixel_box on every itemNo (top-offset only)Yes (rectangle on Live Advanced)
Both single-integer and full-geometry returned in one callYes — pixel_position + pixel_box sibling fieldsNoNo (rectangle only, must compute y separately)
Opt-in flag (no charge when disabled)Yes (pixel_position=true)Always returnedSeparate paid product
Price increase when enabledNoneBundled into base plan~5–10× the base SERP cost
Free tier10 free searches100/moTrial credits only

Comparison reflects the Pixel Position scope only. See our full SERP API price comparison for the complete picture.

Pixel Position Questions

Pixel position is the y-coordinate (in pixels) of an element on the rendered search results page, measured from the top of the page. A result at rank #2 with an AI Overview, featured snippet, and four PAA boxes above it might have a pixel position of 1,800 px — meaning the user has to scroll past 1,800 pixels of vertical content before seeing it. Rank tells you the ordinal position; pixel position tells you what users actually see.
Add the query parameter 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 field plus a sibling pixel_box object containing { x, y, w, h } with full element geometry. The base request behavior is unchanged when the flag is omitted.
pixel_position is a single integer — the y-coordinate (top offset) of an element. pixel_box is a sibling object containing the full bounding rectangle: { x, y, w, h } where x and y are the top-left offset in pixels from the page origin, and w / h are the element's width and height. pixel_box.y is identical to pixel_position by construction. Use pixel_box when you need element area (w × h), centerpoint (x + w/2, y + h/2), viewport intersection, or pixel-accurate SERP heatmaps. Both fields ship in the same response at no extra cost when pixel_position=true.
No. Pixel position uses the same per-call pricing as the underlying SERP search across all four engines. A search with pixel_position=true costs the same as a search without it. The feature is included for paid tiers; free-tier responses include metadata.pixelPositionUnavailable: 'free_tier' instead of pixel data.
Pixel position now supports all four engines — Google, Yahoo, Bing, DuckDuckGo — on desktop SERPs in the US locale. Mobile pixel positions are on the roadmap. The viewport used for measurement is 1366 × 768.
SerpApi.com exposes pixel_offset_top on a few SERP feature blocks but not on every organic item, and only for Google. DataForSEO offers rectangle coordinates on its Live Advanced product (significantly more expensive), again Google-only. Serpent API returns pixel_position on every item across the entire response shape — organic, AIO, PAA, FS, KP, ads, shopping, videos, local pack — across all four supported engines (Google, Yahoo, Bing, DuckDuckGo), at the same flat per-call price as base search, with no upgrade required.
It launched in BETA. The contract may evolve with the SERP layout — selector drift on Google's side can cause occasional null y-coordinates on individual blocks. Treat pixel_position as best-effort during BETA and integrate with a fallback path that uses ordinal rank when the field is missing.

Try Pixel Position Free

Add pixel_position=true to any Google search and every item comes back with a pixel y-coordinate. No price increase, opt-in flag, BETA. Get started with 10 free searches.

Get an API Key