1. Per-Search Credit Math: How $75 / 5,000 Searches Scales from $0.75 to $15.75+ per 1,000 Places
SerpApi meters HTTP search requests rather than business records. Evaluating real unit economics requires multiplying the per-search rate ($15.00 per 1,000 searches on Developer, $10.00 per 1,000 searches on Production) by your pipeline's detail, pagination, and empty-grid call ratio:
| Workload Volume | Vendor Billing Mechanic | Detail-Call Multiplier | Effective $/1K Places | PlacesData Flat Cost |
|---|---|---|---|---|
| 5,000 Searches Starter Floor (Dense 20/Page List Only) | $75.00 / month for 5,000 API searches ($15.00 per 1,000 API searches; 30-day credit expiry) | 1x list search per 20 places (0 detail or review calls) | $0.75 per 1,000 places ($75.00/mo min commitment) | $0.50 per 1,000 places on $10 never-expiring PAYG ($0.20/1K Business) |
| Suburban / Zip-Code Grid Sweep (Avg 5 Places / Search) | $15.00 per 1,000 API searches (1 full credit billed even on 0-result cells) | 200 API searches per 1,000 places + unrecovered empty cells | $3.00+ per 1,000 places | $0.20 – $0.50 per 1,000 places returned (0 Credits on empty cells) |
| Full Business Profiles (List Search + Place Details Call) | $15.00 per 1,000 API searches across engine=google_maps + type=place | 1 list call + 20 place detail calls = 21 API calls per 20 places (1,050 calls / 1K) | $15.75 per 1,000 places ($10.50/1K on $150/mo plan) | $0.20 – $0.50 per 1,000 places (phone, website, hours & CID in 1 call) |
| 100,000 Places + 20 Verified Reviews per Place | $150 – $275 / month tiers (engine=google_maps + engine=google_maps_reviews) | 5,000 list calls + 100,000 review calls = 105,000 API searches | $9.62 – $10.50 per 1,000 places + 20 reviews | $1.80 – $4.50 per 1,000 places + 20 reviews ($0.08–$0.20 per 1K reviews) |
| 50,000 Places + Website B2B Email & Social Enrichment | Not available on SerpApi (requires separate 3rd-party domain crawler) | External enrichment API required (+1 lookup per domain) | N/A (+$3.00 – $10.00 per 1,000 domains externally) | $0.80 – $2.00 per 1,000 enriched domains via /v1/leads/enrich (0 if empty) |
2. 15-Minute Migration: SerpApi local_results[] -> PlacesData API JSON Mapping
Replace engine=google_maps pagination (ll=@lat,lng,14z + start=0,20,40) with a single GET /v1/places/search request returning up to 100 normalized places per call:
| SerpApi google_maps JSON Field | PlacesData API Field | Type & Production Example |
|---|---|---|
| local_results[].title | data[].name | string · "Felix Roasting Co." |
| local_results[].place_id | data[].place_id | string · "ChIJN5X_gWdZwokRck9rk2guJ1M" |
| local_results[].data_cid & data_id | data[].cid & data[].google_id | string · "5991807586670235506" |
| local_results[].type / types | data[].category & data[].types | string / string[] · "Coffee shop" |
| local_results[].address | data[].address, city, state, zip_code | string · "450 Broome St, New York, NY 10013" |
| local_results[].phone | data[].phone | string (E.164) · "+12123591139" |
| local_results[].website | data[].website & data[].domain | string · "felixroastingco.com" |
| local_results[].rating & reviews | data[].rating & data[].reviews_count | number · 4.5 & 782 |
| local_results[].operating_hours | data[].working_hours | object · full 7-day schedule included |
| local_results[].gps_coordinates.{latitude,longitude} | data[].latitude & data[].longitude | number · 40.722341, -74.001298 |
Swap SerpApi engine=google_maps for PlacesData API /v1/places/search
Fetch up to 100 full business profiles in one call, plus enrich verified website B2B emails:
# Single call returns phone, website, domain, 7-day hours, rating & coordinates (5 Credits / place)
curl -sS "https://api.placesdataapi.com/v1/places/search?q=specialty+coffee+in+Manhattan+NY&limit=50" \
-H "x-api-key: pd_live_your_api_key"
# Built-in website B2B email & social profile enrichment (20 Credits/hit; 0 if empty)
curl -sS "https://api.placesdataapi.com/v1/leads/enrich?domain=felixroastingco.com" \
-H "x-api-key: pd_live_your_api_key"import os
import requests
# BEFORE (SerpApi): $75/mo floor, 20 results/call cap, no website email enrichment
# params = {"engine": "google_maps", "q": "specialty coffee", "ll": "@40.722,-74.001,14z", "api_key": "..."}
# AFTER (PlacesData API): $0.20-$0.50 / 1,000 places, up to 100/call, 0 Credits on empty cells
API_KEY = os.getenv("PLACESDATAAPI_KEY", "pd_live_your_api_key")
HEADERS = {"x-api-key": API_KEY}
res = requests.get(
"https://api.placesdataapi.com/v1/places/search",
headers=HEADERS,
params={"q": "specialty coffee in Manhattan NY", "limit": 50},
timeout=15,
)
res.raise_for_status()
places = res.json()["data"]
for p in places[:3]:
print(p["place_id"], p["name"], p.get("phone"), p.get("domain"))const headers = { "x-api-key": process.env.PLACESDATAAPI_KEY ?? "pd_live_your_api_key" };
// Single synchronous GET replaces paginated start=0,20,40 + per-place detail lookups
const res = await fetch(
"https://api.placesdataapi.com/v1/places/search?q=specialty+coffee+in+Manhattan+NY&limit=50",
{ headers }
);
const { data: places, meta } = await res.json();
console.log(`Returned ${places.length} places (${meta.credits_charged} credits) in ${meta.took_ms}ms`);{
"code": 0,
"provider": "https://placesdataapi.com",
"status": "ok",
"msg": "success",
"data": [
{
"place_id": "ChIJN5X_gWdZwokRck9rk2guJ1M",
"cid": "5991807586670235506",
"name": "Felix Roasting Co.",
"category": "Coffee shop",
"phone": "+12123591139",
"website": "https://felixroastingco.com/",
"domain": "felixroastingco.com",
"rating": 4.5,
"reviews_count": 782,
"address": "450 Broome St, New York, NY 10013",
"latitude": 40.722341,
"longitude": -74.001298
}
],
"meta": {
"request_id": "99281a7b-c102-4ef1-9b14-51a9e7012c4b",
"endpoint": "/v1/places/search",
"count": 1,
"credits_charged": 5,
"took_ms": 34
}
}Interactive Engineering Workbench · Side-by-Side Comparison
Verify real-time latency, credit math & JSON schema
Frequently Asked Questions
- When is SerpApi $0.75/1K places vs $15.75/1K places?
- On SerpApi's $75/month Developer plan (5,000 searches = $0.015/search), a dense list search returning 20 businesses costs $0.75 per 1,000 places. However, if you call engine=google_maps with type=place (or engine=google_maps_reviews) for each of those 20 businesses, 1 list call + 20 detail calls = 21 searches ($0.315 for 20 places), which equals $15.75 per 1,000 places.
- What happens on SerpApi if a coordinate grid search returns 0 businesses?
- SerpApi deducts 1 search credit for any completed HTTP 200 search even if local_results is empty. PlacesData API charges strictly by returned record—empty 0-result queries deduct 0 Credits.
- Can I start without a $75/month recurring commitment?
- Yes. Every PlacesData API account receives $1.20 (12,000 Free Credits) immediately with 1-click Google OAuth and no credit card. After that, you can buy $10 never-expiring Pay-As-You-Go packs or subscribe from $29/month.