Tutorial

How to Validate a Product Idea with SERP Data

Use SERP data to validate product ideas before building. Check search demand, competition, existing solutions, and market gaps with a search API.

Validating a product idea before writing code saves months of wasted effort. SERP data reveals real demand signals: what people search for, what solutions exist, what questions remain unanswered, and where market gaps exist. This tutorial shows how to use search API data to validate a product idea by checking search volume proxies, analyzing competition, identifying market gaps from People Also Ask data, and assessing existing solutions. You will build a validation pipeline that gives you a go or no-go signal based on search data.

Prerequisites

  • Python 3.8+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • A product idea to validate

Walkthrough

Step 1: Define your validation queries

Create a set of search queries that represent your product idea from different angles.

Python
import os, requests, json

API_KEY = os.environ["SCAVIO_API_KEY"]

PRODUCT_IDEA = "AI-powered invoice processing for freelancers"
VALIDATION_QUERIES = [
    "invoice processing tool for freelancers",
    "automate freelancer invoices",
    "best invoice software freelancers 2026",
    "freelancer invoice problems",
]

Step 2: Check demand signals

Search for each query and analyze result volume and People Also Ask as demand proxies.

Python
def check_demand(queries):
    signals = []
    for q in queries:
        resp = requests.post("https://api.scavio.dev/api/v1/search",
            headers={"x-api-key": API_KEY},
            json={"platform": "google", "query": q})
        data = resp.json()
        signals.append({
            "query": q,
            "results": len(data.get("organic_results", [])),
            "paa_count": len(data.get("people_also_ask", [])),
            "has_ai_overview": bool(data.get("ai_overview")),
            "related": len(data.get("related_searches", [])),
        })
    return {"signals": signals, "avg_paa": sum(s["paa_count"] for s in signals) / len(signals)}

Step 3: Analyze competition

Check what existing solutions rank for your target queries.

Python
def analyze_competition(query):
    resp = requests.post("https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": query})
    results = resp.json().get("organic_results", [])[:10]
    competitors = [{"title": r["title"], "url": r.get("link", ""),
                    "snippet": r.get("snippet", "")[:100]} for r in results]
    return {"query": query, "competitors": competitors, "count": len(competitors)}

Step 4: Identify gaps and generate verdict

Find unanswered questions and generate a validation verdict based on the data.

Python
def validate(product, queries):
    demand = check_demand(queries)
    comp = analyze_competition(queries[0])
    paa_questions = []
    for s in demand["signals"]:
        resp = requests.post("https://api.scavio.dev/api/v1/search",
            headers={"x-api-key": API_KEY},
            json={"platform": "google", "query": s["query"]})
        paa_questions.extend([q.get("question", "") for q in resp.json().get("people_also_ask", [])])
    score = min(demand["avg_paa"] * 10, 100)
    return {
        "product": product,
        "demand_score": round(score),
        "competitors": comp["count"],
        "gaps": list(set(paa_questions))[:5],
        "verdict": "strong" if score >= 50 else "weak" if score >= 25 else "insufficient",
    }

verdict = validate(PRODUCT_IDEA, VALIDATION_QUERIES)
print(json.dumps(verdict, indent=2))

Python Example

Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def validate(query):
    resp = requests.post("https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": query})
    data = resp.json()
    return {"results": len(data.get("organic_results", [])),
            "paa": len(data.get("people_also_ask", [])),
            "related": len(data.get("related_searches", []))}

print(validate("invoice processing tool for freelancers"))

JavaScript Example

JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function validate(query) {
  const r = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST", headers: H,
    body: JSON.stringify({platform: "google", query})
  });
  const d = await r.json();
  return {results: (d.organic_results||[]).length, paa: (d.people_also_ask||[]).length,
    related: (d.related_searches||[]).length};
}
validate("invoice processing tool for freelancers").then(console.log);

Expected Output

JSON
A product validation report with demand score, competitor count, market gaps from PAA data, and a go/no-go verdict based on search data analysis.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.8+ installed. requests library installed. A Scavio API key from scavio.dev. A product idea to validate. A Scavio API key gives you 250 free credits per month.

Yes. The free tier includes 250 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Use SERP data to validate product ideas before building. Check search demand, competition, existing solutions, and market gaps with a search API.