Google Maps as JSON.
Local listings, structured.
Local business listings from Google Maps - name, rating, reviews, address, phone, CID - parsed and typed. Build local-pack monitoring, lead lists, competitor maps, store-locator data.
{ } ← click "Run maps search" ▍
{
"query": "italian restaurant",
"maps_results": [
{
"position": 1,
"name": "Vesuvio Pizzeria",
"rating": 4.7,
"reviews": 612,
"address": "Brampton, ON",
"cid": "1322681635158113553"
},
{
"position": 2,
"name": "La Bella Strada",
"rating": 4.6,
"reviews": 489,
"address": "Mississauga Rd"
},
{
"position": 3,
"name": "Trattoria Da Vinci",
"rating": 4.5,
"reviews": 351,
"address": "Queen St E"
}
]
}
{ } ← click "Run maps search" ▍
{
"query": "specialty coffee",
"maps_results": [
{
"position": 1,
"name": "Variety Coffee Roasters",
"rating": 4.7,
"reviews": 1842,
"address": "146 Wyckoff Ave",
"phone": "+1 718-555-0142"
},
{
"position": 2,
"name": "Sey Coffee",
"rating": 4.6,
"reviews": 928,
"address": "85 Bogart St"
},
{
"position": 3,
"name": "Devoción",
"rating": 4.5,
"reviews": 2104,
"address": "69 Grand St"
}
]
}
{ } ← click "Run maps search" ▍
{
"query": "plumber",
"maps_results": [
{
"position": 1,
"name": "Austin Plumbing Co.",
"rating": 4.8,
"reviews": 1247,
"address": "500 Congress Ave",
"phone": "+1 512-555-0188",
"category": "Plumber"
},
{
"position": 2,
"name": "Reliable Pipes",
"rating": 4.7,
"reviews": 802,
"address": "South Lamar Blvd",
"category": "Plumber"
},
{
"position": 3,
"name": "Texas Plumbing Pros",
"rating": 4.6,
"reviews": 588,
"address": "Burnet Rd",
"category": "Plumber"
}
]
}
Typed local results, ready to ship.
Everything Google shows on the map pack - name, contact, hours, ratings, category, the persistent CID for cross-day diffing.
Three workflows. One key.
Track local-pack rank for every keyword × city combo.
Run scheduled map searches across cities - diff the maps_results array and alert when your business moves up or down. CID is stable so you can track even when the name on the pin changes.
Build clean local-business lists by category + city.
Query any niche in any geo. Get name + phone + address back as typed JSON, ready to enrich or hand off to outbound. No scraping fragility.
See who's stealing local visibility.
Snapshot map packs daily across your service areas. Detect new entrants, watch review velocity, spot rating shifts before they show up in your reports.
However your stack is wired.
curl -G "https://api.ujeebu.com/serp" \
-H "ApiKey: YOUR_KEY" \
--data-urlencode "search_type=maps" \
--data-urlencode "q=italian restaurant" \
--data-urlencode "location=Brampton, ON" \
-d hl=en
from ujeebu import Client
uj = Client("YOUR_KEY")
results = uj.serp.google(
search_type="maps",
q="italian restaurant",
location="Brampton, ON",
)
for m in results.maps_results:
print(m.position, m.name, m.rating, m.reviews, m.address)
import { Ujeebu } from "ujeebu";
const uj = new Ujeebu("YOUR_KEY");
const { maps_results } = await uj.serp.google({
search_type: "maps",
q: "italian restaurant",
location: "Brampton, ON",
});
params := url.Values{}
params.Set("search_type", "maps")
params.Set("q", "italian restaurant")
params.Set("location", "Brampton, ON")
req, _ := http.NewRequest("GET", "https://api.ujeebu.com/serp?"+params.Encode(), nil)
req.Header.Set("ApiKey", "YOUR_KEY")
resp, _ := http.DefaultClient.Do(req)
What you stop worrying about.
Live map pack. Never cached.
Every request fetches Google Maps in real time. Same query in two cities returns two different sets - exactly as a local user sees them.
City-level geo, 20k+ cities.
Pass `location: 'Brooklyn, NY'` and we route through a residential exit node in that locale. Map pack matches what a local user would see.
Stable CID for tracking.
Google's CID survives rank changes, name edits, and small address shifts. Use it as the join key for cross-day local-rank monitoring.
Pay only for what works.
Empty results, parse errors, geo-block? You pay $0. Failures don't count.
Failed requests cost zero. 5,000 credits free, no card. One credit pool across every endpoint. The same key works in production.
Pay per success. Start free.
Each search is 15 credits. Empty / blocked SERPs don't count. Same plans cover every Ujeebu endpoint, one credit pool.
Before you sign up.
How precise is the geo-targeting?▼
What is CID and why does it matter?▼
Do I get the phone number?▼
Can I get opening hours?▼
How does this compare to Places API?▼
Can I top up credits?▼
5,000 free credits. Live map results in 60 seconds.
No credit card. No sales call. Just an API key and your first map-pack pull.
