DEV Community

API Serpent
API Serpent

Posted on

AI Overviews Broke Rank Tracking. Here's What to Measure Instead.

AI Overviews Broke Rank Tracking

A stat that should change how you build
rank tracking tools:

The overlap between Google top-10 and
AI Overview citations dropped from 76%
to 38% in one year.

This means a page ranking #1 organically
now has less than a 40% chance of also
appearing in the AI Overview above it.

Traditional rank tracking is measuring
the wrong thing for half of all queries.

What the 2026 SERP actually looks like

For informational and "best X" queries
(~55% of all Google searches), the page
renders like this:

AI Overview (200-400px tall) │
│ Summarised answer │
│ Cited sources: [site1] [site2] │
├─────────────────────────────────────┤
│ People Also Ask │
├─────────────────────────────────────┤
│ #1 Organic result ← below fold │
│ #2 Organic result │
│ #3 Organic result │

Position 1 organically is below the fold
on a standard laptop screen.

The two metrics you actually need

Metric 1: Traditional rank position
Still useful. Not sufficient alone.

Metric 2: AI Overview citation status
New. Increasingly essential.

A page can rank #1 and not be in the AIO.
A page can rank #15 and be cited in the AIO.

Both exist. Both require different fixes.

Getting both from one API call

python
import requests

def get_full_serp_data(keyword: str, api_key: str) -> dict:
    """
    Returns rank position AND AI Overview 
    citation status in one call.
    """
    response = requests.get(
        "https://apiserpent.com/api/search",
        params={"q": keyword, "engine": "google"},
        headers={"X-API-Key": api_key}
    )
    data = response.json()

    # Traditional organic positions
    organic = [
        {
            "position": r["position"],
            "url": r["link"],
            # Pixel Y coordinate — unique feature
            # Tells you if result is above/below fold
            "pixel_y": r.get("pixel_position", {}).get("y"),
            "above_fold": r.get("pixel_position", {}).get("y", 999) < 600
        }
        for r in data.get("organic_results", [])
    ]

    # AI Overview — separate signal
    aio = data.get("ai_overview", {})
    aio_data = {
        "present": bool(aio),
        "text": aio.get("text", ""),
        "cited_sources": [
            s["link"] for s in aio.get("sources", [])
        ]
    }

    return {
        "keyword": keyword,
        "organic_results": organic,
        "ai_overview": aio_data,
        "your_page_rank": None,      # fill with your domain
        "your_page_in_aio": None,    # fill with your domain
    }

def analyse_for_domain(data: dict, domain: str) -> dict:
    """Check both signals for your specific domain."""
    rank = next(
        (r["position"] for r in data["organic_results"] 
         if domain in r["url"]), 
        None
    )
    in_aio = any(
        domain in url 
        for url in data["ai_overview"]["cited_sources"]
    )
    above_fold = next(
        (r["above_fold"] for r in data["organic_results"]
         if domain in r["url"]),
        False
    )
    return {
        "organic_rank": rank,
        "above_fold": above_fold,
        "in_ai_overview": in_aio,
        "aio_present": data["ai_overview"]["present"]
    }

# Example
keyword = "best SERP API 2026"
data = get_full_serp_data(keyword, "your_api_key")
result = analyse_for_domain(data, "apiserpent.com")

print(f"Rank: {result['organic_rank']}")
print(f"Above fold: {result['above_fold']}")
print(f"AIO present: {result['aio_present']}")
print(f"In AIO: {result['in_ai_overview']}")
Enter fullscreen mode Exit fullscreen mode

The action matrix

Rank In AIO Action
Top 3 Yes Maintain — you're winning both signals
Top 3 No Update content structure — add definitions, lists, stats
4-10 Yes AIO win offsets rank — prioritise AIO freshness
4-10 No Both gaps — start with AIO optimisation
11+ Yes AIO is your only visibility — exploit it
11+ No Build links first, then AIO structure

Get started free

10 free Google searches at
apiserpent.com
no card required. Returns organic rank,
AI Overview full text + sources, pixel
positions, PAA, Featured Snippets in
one JSON response.

Top comments (0)