Per-outlet geo-grid Google rank tracker (BrightLocal Local Search Grid pattern). Each pin = one geo-anchored Google query via Decodo. Compare brands, cities, grid sizes, and pin spacings below. Each heatmap is interactive — switch keyword, filter rank buckets, swap base map (OSM ↔ Google), hover for cross-keyword view.
After probing 7 config variants and 4 delivery methods, the right primary for Breeze's grid tracker is the Decodo Scraper API's google_maps target with custom DOM parsing. Same lat/lng anchoring, same per-query cost ($0.001), but returns 1-20 rank depth instead of Search local-pack's 1-3.
| method | depth | cost/q | speed | infra | verdict |
|---|---|---|---|---|---|
| A · Scraper API · google_search | 1-3 | $0.001 | 2-4s | none | misses brands ranking 4-20 |
| C · Scraper API · google_maps + parse | 1-20 | $0.001 | 5-8s | none | ← V1 primary |
| B · Camoufox + Decodo IN proxy | 1-20 | ~$0 | 15-30s | worker pool + proxy mgmt | backup for verification; not primary at scale |
| DataForSEO google_maps | 1-20 | ~$0.003 | 2-5s | none | option if Decodo google_maps breaks |
Why this beats our earlier "Method A for V1" call: we hadn't tested target: google_maps with custom HTML parsing. Decodo runs server-side headless on that endpoint and embeds place names in a clean <span class="OSrXXb"> pattern that regex-extracts in 5 lines.
Anardana ranks 6/20 at Vasant Kunj center on category queries — Method A returned nothing (only top-3); Method C surfaces the truth.
Branded queries dominate; category queries show clear geographic drop-off past ~2 km.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| anardana | 1.00 | 1.00 | 100% | 49/49 |
| best indian restaurant | 2.05 | 13.65 | 39% | 19/49 |
| best north indian restaurant | 2.78 | 17.65 | 18% | 9/49 |
Same outlet, wider grid — the circular fade-out around the mall becomes obvious.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| anardana | 1.00 | 1.00 | 100% | 81/81 |
| best indian restaurant | 1.72 | 13.38 | 40% | 32/81 |
11×11 grid spanning ~15 km — Anardana's catchment ring vs the rest of South Delhi.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| best indian restaurant | 2.04 | 17.08 | 21% | 25/121 |
| best north indian restaurant | 2.29 | 18.83 | 12% | 14/121 |
Tight 5×5 at 0.3 km — the outlet owns its block on category keywords, not just brand.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| anardana | 1.00 | 1.00 | 100% | 25/25 |
| best indian restaurant | 1.88 | 1.88 | 100% | 25/25 |
| fine dining | — | 21.00 | 0% | 0/25 |
Iconic single-outlet brand in dense urban core — 9×9 1.2 km shows how it owns Old Delhi.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| karims | 1.00 | 1.00 | 100% | 81/81 |
| best mughlai food old delhi | — | 21.00 | 0% | 0/81 |
Negative reference — the brand doesn't operate in Mumbai. Honest all-grey heatmap.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| best italian restaurant | — | 21.00 | 0% | 0/49 |
| italian food | — | 21.00 | 0% | 0/49 |
| best pasta | — | 21.00 | 0% | 0/49 |
Bakery chain — branded query is uniform #1, generic 'best bakery' doesn't surface them.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| theobroma bandra | 1.00 | 1.00 | 100% | 25/25 |
| best bakery mumbai | — | 21.00 | 0% | 0/25 |
| brownies bandra | — | 21.00 | 0% | 0/25 |
Even branded queries return rank 2-4 here — useful demo of yellow/green mixing across pins.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| toit indiranagar | 4.00 | 4.00 | 0% | 49/49 |
| best brewery bangalore | 7.82 | 7.82 | 18% | 49/49 |
| craft beer indiranagar | 2.29 | 2.29 | 100% | 49/49 |
11×11 1.5 km — Toit's brand catchment across the city for craft-beer queries.
| keyword | AGR | ATGR | SoLV | found |
|---|---|---|---|---|
| best brewery bangalore | 8.83 | 9.13 | 3% | 118/121 |
| craft beer bangalore | 2.17 | 12.91 | 42% | 52/121 |
Method A finds Anardana on 16% of pins (top 3 only); Method C finds it on 44% (top 20). Nearly 3× discovery, same cost & speed.
| method | SoLV | found | depth |
|---|---|---|---|
| A · Search local-pack | 16% | 4/25 | top 3 |
| C · Maps results | 44% | 22/25 | top 20 |
When brand ranks ≤3 in local pack, both methods agree. Toit is genuinely top-3 for craft-beer queries, so A and C return the same SoLV (36%).
| method | SoLV | found | depth |
|---|---|---|---|
| A · Search local-pack | 36% | 25/25 | top 3 |
| C · Maps results | 36% | 25/25 | top 20 |
We re-ran 9 pins through both pipelines: Method A hits Decodo's Scraper API (server-side render + geo-spoof + JSON parse). Method B launches Camoufox (stealth Firefox) over one of our 50 Decodo Indian ISP proxies, opens Google Maps for the lat/lng, and reads the rendered place list from the DOM.
| A · Scraper API | B · Camoufox + IN proxy | |
|---|---|---|
| surface measured | Google Search "local pack" (3-result) | Google Maps results column (10+ places) |
| total elapsed (9 pins) | 5.0s | 24.2s |
| avg per pin | 3.4s | 7.6s |
| cost (this run) | $0.0090 | $0 (proxy bandwidth) |
| brand matched | 7/9 pins | 5/9 pins |
| geo-anchoring | server-spoofed to exact lat/lng | real proxy IP geolocation + Maps viewport URL |
Pin-by-pin (where is Anardana?):
| pin | A: Scraper API rank | B: Camoufox+IN rank |
|---|---|---|
r0c0 | #3 | — |
r0c1 | #2 | — |
r0c2 | #1 | — |
r1c0 | — | — |
r1c1 | #2 | #5 |
r1c2 | #1 | #6 |
r2c0 | — | #2 |
r2c1 | #1 | #3 |
r2c2 | #1 | #4 |
Takeaway: Both pipelines find Anardana, but disagree on order — the Scraper API consistently ranks 1-3 (local-pack curation); Maps ranks 2-6 (raw distance-weighted list). They measure different SEO surfaces. At ~5× the latency per pin, Method B is unsuitable for ad-hoc grid scans but useful when you specifically want the Maps app view (where most consumer discovery actually happens) or want to verify Scraper API output without paying per query.
We held the pin (28.5414, 77.1518), keyword ("best indian restaurant"), and brand (Anardana) constant
and varied 3 knobs: surface (Search local-pack vs Maps results column), geo scope
(Scraper API's rad: Xm vs Maps' viewport zoom=Nz), and locale/domain.
| # | surface | config | Anardana | top 3 |
|---|---|---|---|---|
| A1 | Search · local pack (top-3) | locale=en-us, domain=com, rad=1000m | — | Dilli Kanteen Kitchen · AnnaMaya FoodHall - Andaz Delhi · Mala-Akbari Ambience Mall Vasant Kunj |
| A2 | Search · local pack (top-3) | locale=en-in, domain=co.in, rad=500m | — | Dilli Kanteen Kitchen · AnnaMaya FoodHall - Andaz Delhi · Mala-Akbari Ambience Mall Vasant Kunj |
| A3 | Search · local pack (top-3) | locale=en-in, domain=co.in, rad=1000m | — | Dilli Kanteen Kitchen · AnnaMaya FoodHall - Andaz Delhi · Mala-Akbari Ambience Mall Vasant Kunj |
| A4 | Search · local pack (top-3) | locale=en-in, domain=co.in, rad=2000m | — | Dilli Kanteen Kitchen · AnnaMaya FoodHall - Andaz Delhi · Mala-Akbari Ambience Mall Vasant Kunj |
| B1 | Maps · results column | zoom=12z (wide ~30 km viewport) | — | Bukhara · Karan South Indian Restaurant · White Oak Restaurant |
| B2 | Maps · results column | zoom=14z (default ~3 km) | #6 | AnnaMaya FoodHall - Andaz Delhi · Amaya - The House Of Curries · Dilli Kanteen Kitchen |
| B3 | Maps · results column | zoom=16z (tight ~500 m) | — | Dilli Kanteen Kitchen · Mala-Akbari Ambience Mall Vasant Kunj · Spicy Triangle |
What we learned:
Pulled live via the Ahrefs MCP. Every one of Anardana's top organic keywords is branded. That's why the category-keyword layers (e.g. "best indian restaurant") in the heatmaps reveal real geographic variation — Anardana doesn't own those queries at scale.
| keyword | vol / mo (IN) | best pos | traffic / mo | flags |
|---|---|---|---|---|
| anardana restaurant | 3,800 | 1 | 1,211 | branded |
| anardana chandigarh | 5,800 | 2 | 846 | branded · local |
| anardana ranchi | 2,300 | 4 | 213 | branded · local |
| anardana gurgaon | 2,000 | 4 | 191 | branded · local |
| anardana restaurant delhi | 800 | 2 | 138 | branded · local |
| anardana sangam courtyard | 1,200 | 4 | 108 | branded · local |
| anardana karkardooma | 450 | 4 | 41 | branded · local |
| anardana menu | 100 | 1 | 38 | branded |