ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Score B2B Leads by Review Ratings
Tutorial

How to Score B2B Leads by Review Ratings

Use Google review data to score and prioritize B2B leads. Extract ratings, review counts, and sentiment signals to rank prospects automatically.

Get Free API KeyAPI Docs

Review ratings are a reliable proxy for business quality, customer satisfaction, and market position. A business with hundreds of 4.5-star reviews is a stronger lead than one with 3 reviews and no rating. By querying review data through a search API, you can score leads automatically based on rating, review volume, and recency. This tutorial shows how to extract Google review data for a list of businesses, build a scoring formula, and rank leads by quality. The result is a prioritized lead list that surfaces the highest-value prospects first.

Prerequisites

  • Python 3.8+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • A list of business names or categories to score

Walkthrough

Step 1: Fetch review data for businesses

Query Google Maps for businesses in a category and extract rating and review count.

Python
import os, requests

API_KEY = os.environ["SCAVIO_API_KEY"]

def get_reviews(query):
    resp = requests.post("https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": query, "type": "maps"})
    return resp.json().get("local_results", [])

Step 2: Build the scoring formula

Score each business based on rating, review count, and a weighted formula.

Python
def score_lead(business):
    rating = float(business.get("rating", 0))
    reviews = int(business.get("reviews", 0))
    # Weight: 60% rating quality, 40% review volume
    rating_score = (rating / 5.0) * 60
    volume_score = min(reviews / 100, 1.0) * 40
    return round(rating_score + volume_score, 1)

Step 3: Rank and filter leads

Apply the score to all businesses and sort by quality.

Python
def rank_leads(query, min_score=50):
    businesses = get_reviews(query)
    scored = []
    for b in businesses:
        s = score_lead(b)
        if s >= min_score:
            scored.append({
                "name": b.get("title", ""),
                "rating": b.get("rating", "N/A"),
                "reviews": b.get("reviews", 0),
                "phone": b.get("phone", ""),
                "score": s,
            })
    return sorted(scored, key=lambda x: x["score"], reverse=True)

Step 4: Export ranked leads

Save the scored and ranked lead list for outreach.

Python
import json

leads = rank_leads("dentists in Chicago IL")
for lead in leads[:10]:
    print(f"{lead['score']}pts - {lead['name']} ({lead['rating']} / {lead['reviews']} reviews)")

with open("scored_leads.json", "w") as f:
    json.dump(leads, f, indent=2)
print(f"\nExported {len(leads)} scored leads")

Python Example

Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def score(query):
    resp = requests.post("https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": query, "type": "maps"})
    leads = resp.json().get("local_results", [])
    for b in leads[:5]:
        r = float(b.get("rating", 0))
        n = int(b.get("reviews", 0))
        print(f"{b['title']}: {r}/5 ({n} reviews) score={round((r/5)*60+min(n/100,1)*40,1)}")
score("dentists in Chicago IL")

JavaScript Example

JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function score(query) {
  const r = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST", headers: H,
    body: JSON.stringify({platform: "google", query, type: "maps"})
  });
  const leads = (await r.json()).local_results || [];
  leads.slice(0,5).forEach(b => {
    const s = (parseFloat(b.rating||0)/5)*60 + Math.min(parseInt(b.reviews||0)/100,1)*40;
    console.log(b.title, b.rating, b.reviews, "score=" + s.toFixed(1));
  });
}
score("dentists in Chicago IL");

Expected Output

JSON
A scored and ranked lead list where each business is rated by review quality and volume, with the highest-value prospects surfaced first.

Related Tutorials

  • How to Score B2B Leads by Review Data
  • How to Extract Google Reviews at Scale for Journalism

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 list of business names or categories to score. A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, 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.

Related Resources

Best Of

Best Review-Based Lead Scoring Tools in 2026

Read more
Use Case

B2B Lead Targeting by Google Review Ratings

Read more
Use Case

Local SMB Lead Gen Without Apollo

Read more
Workflow

Lead Scoring via Search Enrichment Workflow

Read more
Glossary

Review-Based Lead Qualification

Read more
Best Of

Best Google Reviews Data Extraction Tools in 2026

Read more

Start Building

Use Google review data to score and prioritize B2B leads. Extract ratings, review counts, and sentiment signals to rank prospects automatically.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy