seoagencykeyword-research

SEO Keyword API for Agencies Without Ahrefs

Small agencies can't afford Ahrefs or Semrush. Build keyword research with SERP APIs: PAA extraction, SERP analysis, competitor gaps.

6 min read

Ahrefs starts at $99/mo. Semrush starts at $129/mo. For a three-person agency doing SEO for five clients, those costs add up fast, especially when most of the work is keyword research and SERP analysis rather than full-blown backlink audits. You can build a surprisingly capable keyword research workflow using SERP APIs at a fraction of the cost.

What SERP APIs can replace

  • People Also Ask extraction -- Google returns PAA boxes in SERP results. These are free keyword ideas from Google itself.
  • SERP feature analysis -- Track which keywords trigger featured snippets, AI overviews, video carousels, or local packs.
  • Competitor SERP overlap -- Search your target keywords and see which domains consistently rank. Build a competitor map from SERP data.
  • Ranking position tracking -- Daily SERP checks for your target keywords. Compare positions over time.

What SERP APIs cannot replace

Be honest about the gaps. SERP APIs do not give you backlink data. They do not give you domain authority scores. They do not give you keyword difficulty metrics based on link profiles. They do not show you historical ranking trends from before you started tracking. If your agency work depends heavily on backlink analysis or competitive link gap reports, you still need Ahrefs or Semrush. There is no shortcut around that.

People Also Ask extraction

PAA boxes are the most underused keyword research source. Each PAA question is a real query that Google associates with your seed keyword. Extract them programmatically and you have a content calendar in minutes.

Python
import requests, os

H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
URL = 'https://api.scavio.dev/api/v1/search'

def extract_paa(seed_keywords: list[str]) -> list[dict]:
    """Extract People Also Ask questions for a list of seed keywords."""
    all_paa = []
    for kw in seed_keywords:
        resp = requests.post(URL, headers=H,
            json={'platform': 'google', 'query': kw}, timeout=15)
        data = resp.json()
        paa = data.get('people_also_ask', [])
        for item in paa:
            all_paa.append({
                'seed': kw,
                'question': item.get('question'),
                'snippet': item.get('snippet'),
                'source': item.get('link')
            })
    return all_paa

seeds = ['email marketing software', 'crm for startups', 'project management tool']
questions = extract_paa(seeds)
for q in questions:
    print(f"[{q['seed']}] {q['question']}")

SERP feature tracking

Not all keywords are created equal. A keyword that triggers an AI Overview pushes organic results below the fold. A keyword with a featured snippet gives you a chance to grab position zero. Track which SERP features appear for each target keyword.

Python
import requests, os

H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
URL = 'https://api.scavio.dev/api/v1/search'

def analyze_serp_features(keyword: str) -> dict:
    resp = requests.post(URL, headers=H,
        json={'platform': 'google', 'query': keyword}, timeout=15)
    data = resp.json()
    return {
        'keyword': keyword,
        'has_ai_overview': bool(data.get('ai_overview')),
        'has_featured_snippet': bool(data.get('answer_box')),
        'has_paa': bool(data.get('people_also_ask')),
        'has_video_carousel': bool(data.get('inline_videos')),
        'has_local_pack': bool(data.get('local_results')),
        'organic_count': len(data.get('organic_results', []))
    }

keywords = ['best crm 2026', 'how to set up email marketing', 'project management vs task management']
for kw in keywords:
    features = analyze_serp_features(kw)
    print(f"{kw}: AI Overview={'yes' if features['has_ai_overview'] else 'no'}, "
          f"Snippet={'yes' if features['has_featured_snippet'] else 'no'}")

Cost math for a small agency

A typical small agency tracks 200 keywords daily and runs 50 research queries per week. That is roughly 6,200 API calls per month. With Scavio at $0.005 per credit, that costs $31/mo. Compare to Ahrefs at $99/mo or Semrush at $129/mo. You save $68-98/mo but lose backlink data and keyword difficulty scores. For agencies focused on content-driven SEO rather than link building, the tradeoff makes sense.

The hybrid approach

The most practical setup for budget-conscious agencies: use a SERP API for daily keyword tracking, PAA extraction, and SERP feature monitoring. Keep one Ahrefs Lite seat for monthly backlink audits and competitive link analysis. This cuts your tooling cost from $200+/mo to roughly $130/mo while covering all the bases.

  1. SERP API for daily keyword tracking and PAA extraction ($30/mo)
  2. Ahrefs Lite for monthly backlink audits ($99/mo)
  3. Total: $129/mo vs $228/mo for both full-tier subscriptions