qsrfranchiselead-gen

QSR Operator List Building via Search API

Build QSR franchise operator lists from Google Maps data. Group by shared phone/website to find multi-unit operators. Under $10 for 50 metro areas.

8 min

Building a QSR (quick-service restaurant) operator list via search API returns franchise locations, owner-operated stores, and multi-unit operators that traditional B2B databases miss. Google Maps data includes business name, address, phone, website, ratings, and hours -- the exact data you need for QSR operator outreach.

Why B2B databases miss QSR operators

  • Franchise operators are individuals, not companies in Apollo/ZoomInfo
  • Multi-unit operators often use personal LLCs not indexed in business databases
  • QSR locations change owners frequently -- database data decays fast
  • Google Maps has the most up-to-date location data for restaurants

Build a QSR operator list by metro

Python
import requests

def find_qsr_locations(brand: str, metros: list) -> list:
    """Find QSR franchise locations across metros."""
    locations = []

    for metro in metros:
        resp = requests.post(
            "https://api.scavio.dev/api/v1/search",
            headers={"x-api-key": "YOUR_KEY"},
            json={
                "query": f"{brand} {metro}",
                "num_results": 20
            }
        )
        data = resp.json()
        local_results = data.get("local_results", [])

        for r in local_results:
            locations.append({
                "brand": brand,
                "metro": metro,
                "name": r.get("title", ""),
                "address": r.get("address", ""),
                "phone": r.get("phone", ""),
                "website": r.get("website", ""),
                "rating": r.get("rating", ""),
                "reviews": r.get("reviews_count", 0)
            })

    return locations

# Find Subway locations across Texas metros
metros = ["Austin TX", "Dallas TX", "Houston TX", "San Antonio TX"]
subway_locations = find_qsr_locations("Subway restaurant", metros)
print(f"Found {len(subway_locations)} Subway locations")

# Filter for multi-unit operators (same phone across locations)
from collections import Counter
phone_counts = Counter(l["phone"] for l in subway_locations if l["phone"])
multi_unit = {phone: count for phone, count in phone_counts.items() if count > 1}
print(f"Multi-unit operators: {len(multi_unit)}")

Identify multi-unit operators

JavaScript
// Find operators who run multiple locations (higher-value prospects)
async function findMultiUnitOperators(brand, locations) {
  const allLocations = [];

  for (const loc of locations) {
    const resp = await fetch("https://api.scavio.dev/api/v1/search", {
      method: "POST",
      headers: {
        "x-api-key": process.env.SCAVIO_KEY,
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        query: brand + " " + loc,
        num_results: 20
      })
    });

    const data = await resp.json();
    for (const r of (data.local_results || [])) {
      allLocations.push({
        name: r.title,
        phone: r.phone,
        website: r.website,
        address: r.address,
        metro: loc
      });
    }
  }

  // Group by phone number to find multi-unit operators
  const byPhone = {};
  for (const loc of allLocations) {
    if (!loc.phone) continue;
    if (!byPhone[loc.phone]) byPhone[loc.phone] = [];
    byPhone[loc.phone].push(loc);
  }

  return Object.entries(byPhone)
    .filter(([_, locs]) => locs.length > 1)
    .map(([phone, locs]) => ({
      phone,
      locationCount: locs.length,
      metros: [...new Set(locs.map(l => l.metro))],
      website: locs[0].website
    }))
    .sort((a, b) => b.locationCount - a.locationCount);
}

Use cases

  1. Food service vendors: find operators who buy supplies in bulk
  2. POS/tech vendors: target operators with multiple locations (higher ARPU)
  3. Real estate: identify operators expanding into new markets
  4. Insurance: franchise operators need commercial insurance per location

Cost

Researching 50 metros for one brand: ~1,000 queries = $5.00 on Scavio. Building lists for 10 QSR brands across 50 metros: ~10,000 queries = $50. Compare to buying a QSR operator list from a data broker: $500-2,000+.