Google Maps Rank Tracker (Geo-Grid)
Pricing
from $3.00 / 1,000 grid points
Google Maps Rank Tracker (Geo-Grid)
Where a business ranks on Google Maps for a keyword at every point of a grid around it: rank per point, local pack, average rank, share of local voice, the competitors that outrank it and a heatmap. Matched by place id. A pay-per-point Local Falcon alternative.
Pricing
from $3.00 / 1,000 grid points
Rating
0.0
(0)
Developer
Steady Scrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Google Maps Rank Tracker (Geo-Grid) — local SEO heatmaps
See where a business ranks on Google Maps for a keyword at every point of a grid around it — the way a customer standing on each corner of town would see it. For each grid point you get the business's rank, whether it is in the local pack (top 3), and who ranks above it there. For each keyword you get the average rank, the share of local voice, the competitors that beat it most often, and a heatmap image.
A pay-per-point alternative to Local Falcon, BrightLocal grids and other geo-grid rank trackers: no subscription, no login, no browser, no Google API key.
What it is for
- Local SEO agencies: monthly geo-grid reports for every client and keyword, ready to chart.
- Business owners: see the neighbourhoods where you vanish from Google Maps, and who takes those customers.
- Before / after: run the same grid before and after a Google Business Profile change, new reviews or a new page.
- Competitor research: the competitor leaderboard tells you which places own the local pack around you.
How it works
- You give the business (its Google Maps link, a
maps.app.goo.glshare link, its place id or its CID), one or more keywords, a grid size (3×3 to 13×13) and the distance between points. - The Actor looks the business up on Google Maps and centres the grid on it (or on a centre you give).
- From every grid point it runs the keyword search Google Maps runs for someone looking at the map there (the zoom is yours to set; 13 is the usual one), and finds the business by its place id among the results — never by its name, so a branch or a namesake is never mistaken for it.
- It writes one row per point and one summary per keyword, plus a heatmap.
Ranks 1–20 by default. Google Maps lists twenty places a page. Turn on Look down to rank 40 to read a second page at the points where the business is not in the first twenty.
Input example
{"businesses": ["https://www.google.com/maps/place/Swish+Dental+Downtown/data=!4m2!3m1!1s0x8644b5b434046875:0x644e6eb422388b7a"],"keywords": ["dentist", "cosmetic dentist"],"gridSize": "7x7","gridSpacing": 1,"distanceUnit": "km","zoom": 13,"checkTop40": false}
Output
Every row has a rowType: point (one keyword from one grid point), summary (one keyword over the whole grid) or
business (an input that did not resolve).
A grid point
{"rowType": "point","status": "ok","businessName": "Swish Dental Downtown","placeId": "ChIJdWgENLS1RIYReos4IrRuTmQ","cid": "7227836171923524474","keyword": "dentist","row": 2, "col": 3,"lat": 30.267404, "lng": -97.682738,"distance": 6, "distanceUnit": "km","rank": 32,"inTop3": false,"inTop20": false,"searchedDepth": 40,"resultsSeen": 40,"topResults": [{ "position": 1, "name": "Brident Dental & Orthodontics", "placeId": "ChIJ…", "cid": "…", "rating": 4.1, "reviewCount": 185, "category": "Dentist" }],"mapsUrl": "https://www.google.com/maps/search/dentist/@30.267404,-97.682738,13z"}
rank is null when the business is not within the depth searched (and inTop20 is false): it is never a made-up
number. On a blocked point nothing was measured, so rank, inTop3 and inTop20 are all null.
A keyword summary
| field | meaning |
|---|---|
scannedPoints, foundPoints, top3Points | points searched, points where the business appears, points where it is in the local pack |
averageRank | average rank over the points where it appears |
averageRankWithMisses | average rank counting a point where it does not appear as one past the depth searched (21 or 41) — what local rank tools call ARP |
shareOfLocalVoice | % of points where the business is in the local pack (top 3) |
competitors | up to 10 places, ranked by how often they are in the local pack across the grid, with their average rank |
heatmapUrl | an SVG of the grid, each point coloured and labelled with the rank |
Pricing
Pay per event, no start fee:
| event | price |
|---|---|
grid-point — one keyword searched from one grid point | US$0.003 |
extra-depth-point — the second page (ranks 21–40) at a point, only when you ask for it and only where needed | US$0.002 |
A 7×7 grid for one keyword is 49 points = US$0.147. Summaries, heatmaps, unresolved businesses and blocked points are free. The spending limit of your run is respected before any search is sent: the Actor plans only the points your limit pays for (counting the second page where you asked for it) and says in the summary which ones it left out.
Stops when Google asks for verification
The Actor reads the same answers Google Maps gives its own web page, at a moderate pace. If Google ever asks for
verification — its "unusual traffic" page, a CAPTCHA, a JavaScript check, or any answer that is not Google Maps'
normal data — the run stops sending requests and every point left is a free blocked row that says so. It never
solves, bypasses or replays a challenge, and it does not hide where it asks from: the grid's coordinates travel in the
map view, as they do when you move the map yourself. Plain overloads (HTTP 429 or 5xx without a challenge) are
retried through Apify's datacenter proxy; points that still get no answer are free.
Limits
- Up to 10 businesses and 10 keywords per run; grids from 3×3 to 13×13; points 0.1 to 20 km (or miles) apart.
- Ranks are those of Google Maps' place list for the search around each point (the "Places" list a customer scrolls). Paid ads are not counted.
- Results depend on the zoom and on Google's personalisation; this Actor sees them as a signed-out visitor.
Is it legal?
It reads publicly visible search results, at a pace a person browsing the map could produce, without logging in and without collecting personal data. Use the data in line with Google's terms and the laws that apply to you.