Why It Matters
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.
Quick Start
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.
# 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"
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"])
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`);
{
"success": true,
"engine": "google",
"results": {
"organic": [
{
"position": 1,
"title": "…",
"url": "https://example.com",
"pixel_position": 168 // y-coordinate from top of SERP
}
],
"aiOverview": {
"text": "…",
"pixel_position": 175 // AIO block top
},
"featuredSnippet": {
"text": "…",
"pixel_position": 252 // FS block top
},
"knowledgePanel": {
"title": "…",
"pixel_position": 789 // right-rail KP top
},
"peopleAlsoAsk": [
{ "question": "…", "pixel_position": 462 }
],
"ads": {
"top": [
{ "title": "…", "pixel_position": 120 }
]
}
}
}
Spec
What You Get
A single pixel_position integer per item, applied uniformly across the entire response shape. No source-of-pixel flags, no separate per-block fields — one number per element, identical for every result type.
pixel_position=true on /api/search or /api/search/quick. Defaults to false; default-off responses are byte-identical to today.organic[] item, plus aiOverview, featuredSnippet, knowledgePanel, peopleAlsoAsk[], ads.top[], shopping[], videos[], localPack[], and relatedSearches[] when present.metadata.pixelPositionUnavailable: 'free_tier' and no pixel fields.pixel_position=true costs the same as one without.pixel_position field; integrate with a fallback to ordinal rank in those cases.Compare
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 result | Yes | Partial (block-level only) | Yes |
| Pixel position on AI Overview / featured snippet / knowledge panel / PAA / ads | Yes (every block) | Some blocks | Yes |
| Single integer per item (no nested rectangle object) | Yes | No (offset_top object) | No (rectangle x/y/w/h) |
| Opt-in flag (no charge when disabled) | Yes (pixel_position=true) | Always returned | Separate paid product |
| Price increase when enabled | None | Bundled into base plan | ~5–10× the base SERP cost |
| Free tier | 10 free searches | 100/mo | Trial credits only |
Comparison reflects the Pixel Position scope only. See our full SERP API price comparison for the complete picture.
FAQ
Pixel Position Questions
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. The base request behavior is unchanged when the flag is omitted.
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_offset_top on a few SERP feature blocks but not on every organic item. DataForSEO offers rectangle coordinates on its Live Advanced product (significantly more expensive). Serpent API returns pixel_position on every item across the entire response shape — organic, AIO, PAA, FS, KP, ads, shopping, videos, local pack — at the same flat per-call price as base search, with no upgrade required.
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.