DEV Community

API Serpent
API Serpent

Posted on

SERP API Pricing in 2026: I Did the Math So You Don't Have To (Every Provider, Same Unit)

SERP API Pricing in 2026: The Math Nobody Does

Most developers compare SERP APIs by glancing
at the homepage price. This is almost always
the wrong comparison because every provider
quotes a different unit.

I converted all 9 major providers to
cost-per-1,000-searches at three real
volume tiers. Here's what I found.

Why the headline price is almost always wrong

SerpApi quotes monthly plan cost.

DataForSEO quotes per-request.

Serper quotes per-credit-pack.

ScraperAPI quotes per-credit where
1 Google search costs 25 credits.

Bright Data quotes per-result, not
per-search (one search = 10 results =
10 billable units).

Until you convert everything to the same
unit, you cannot compare them.

The conversion table

Provider Per 1K at 10K/mo Per 1K at 100K/mo Credit expiry
Serpent API $0.06 $0.03 Never ✓
DataForSEO (async) $0.60 $0.60 Never ✓
Serper.dev $1.00 $0.50 6 months
SerpApi Starter $25.00 $15.00 Monthly ✗
Bright Data $0.75–$1.50 $0.65+ N/A
ScrapingDog $2.00 $0.29 Cycle ✗
ScraperAPI $12.25 (effective) $1.07 Monthly ✗
Oxylabs $1.60/result Varies N/A
SearchAPI.io $4.00 ~$1.00 N/A

The ScraperAPI credit trap

ScraperAPI's Hobby plan: $49/month for
"100,000 API credits."

What the homepage doesn't say prominently:
1 structured Google SERP request = 25 credits.

100,000 credits ÷ 25 credits/search
= 4,000 actual Google searches
= $12.25 per 1,000 searches effective rate
That makes it the most expensive entry
tier on this list after SerpApi.

The credit expiry tax

SerpApi resets credits monthly. If your
usage is inconsistent — seasonal campaigns,
project-based workloads, quarterly audits —
you're paying for credits you never use.

At 60% average utilisation on a $75/month
plan:

python
plan_cost = 75          # $/month
utilisation = 0.60      # 60% used on average
credits_allocated = 5000
credits_used = credits_allocated * utilisation  # 3,000
effective_cost_per_1k = plan_cost / (credits_used / 1000)
# = $25.00 per 1,000 — not $15.00 as advertised
Enter fullscreen mode Exit fullscreen mode

Real effective cost: $25/1K, not $15/1K.

The async vs synchronous problem

DataForSEO's $0.60/1K standard queue is
genuinely the cheapest raw rate — but
it's asynchronous:

python
# DataForSEO workflow (standard queue)
task_id = client.post_task(keyword)    # Step 1
time.sleep(30)                          # Wait
result = client.get_task(task_id)       # Step 2
# Then handle: not ready yet? retry logic.
# Timeout? Handle that too.
# Failed task? Resubmit.
Enter fullscreen mode Exit fullscreen mode

vs synchronous:

python
# Serpent API
result = requests.get(
    "https://apiserpent.com/api/search",
    params={"q": keyword},
    headers={"X-API-Key": KEY}
)
# Done. No polling. No state management.
Enter fullscreen mode Exit fullscreen mode

If your use case is overnight batch rank
tracking — async is fine. If a user is
waiting for results, async is wrong architecture.

How to calculate your real cost

python
def calculate_real_cost(
    monthly_volume: int,
    plan_cost: float,
    plan_credits: int,
    avg_utilisation: float = 1.0,  # 1.0 = use all credits
    credits_per_search: int = 1
) -> dict:
    """Calculate true effective cost per 1K searches."""

    actual_searches = (plan_credits / credits_per_search) * avg_utilisation
    effective_cost_per_1k = plan_cost / (actual_searches / 1000)

    return {
        "monthly_cost": plan_cost,
        "actual_searches": int(actual_searches),
        "effective_per_1k": round(effective_cost_per_1k, 2),
        "wasted_credits_cost": round(
            plan_cost * (1 - avg_utilisation), 2
        )
    }

# SerpApi Developer at 60% utilisation
print(calculate_real_cost(5000, 75, 5000, 0.60))
# {'monthly_cost': 75, 'actual_searches': 3000, 
#  'effective_per_1k': 25.0, 'wasted_credits_cost': 30.0}

# Serpent API Scale (credits never expire = 100% utilisation)
print(calculate_real_cost(100000, 3.0, 100000, 1.0))
# {'monthly_cost': 3.0, 'actual_searches': 100000,
#  'effective_per_1k': 0.03, 'wasted_credits_cost': 0.0}
Enter fullscreen mode Exit fullscreen mode

The one feature that changes the cost calculation

Serpent API's credits never expire. This
means the utilisation adjustment is always
1.0 — you're never paying for capacity
you don't use.

Full comparison table with all providers:
apiserpent.com/blog/serp-api-pricing-comparison

10 free searches to test the data quality:
apiserpent.com — no card required.


What provider are you currently using?
Drop it in the comments — I'll run the
calculation for your actual volume.

Top comments (0)