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
- Food service vendors: find operators who buy supplies in bulk
- POS/tech vendors: target operators with multiple locations (higher ARPU)
- Real estate: identify operators expanding into new markets
- 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+.