Google Maps Rank Tracker – Geo-Grid Local SEO Heatmap
Pricing
from $7.00 / 1,000 grid point checkeds
Google Maps Rank Tracker – Geo-Grid Local SEO Heatmap
Check where a business ranks on Google Maps from every point of a grid around it (3×3 to 15×15). Rank per point, top competitors, average rank and top-3 share, plus a shareable heatmap image and map report. No proxy costs. $0.49 per 7×7 grid.
Pricing
from $7.00 / 1,000 grid point checkeds
Rating
0.0
(0)
Developer
ecclesiasteslabs
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
What does Google Maps Rank Tracker do?
It shows where a business ranks on Google Maps from every part of town. You give a keyword (e.g. "dentist"), the business and a center point. The actor lays a grid of points around it (3×3 up to 15×15) and, at each point, runs the Google Maps search as if a customer standing there searched on their phone. You get the rank at every point, the competitors that beat you there, a summary (average rank, share of top-3), a ready-to-share grid image and an interactive map report. It's the same kind of report Local Falcon or BrightLocal sell on monthly plans, pay-as-you-go.
Why use it?
- Real Google Maps rankings at exact GPS points. Each point simulates a searcher at that spot, the way geo-grid rank trackers work. Results don't depend on where our servers are: the same grid run twice gives the same ranks.
- Report-ready output. A PNG heatmap of the grid and an HTML map (OpenStreetMap, click any dot to see the top 3 there) with public links you can send to a client.
- Competitor intelligence. Top competitors at every point, plus the 10 strongest competitors across the whole grid (average rank, top-3 points, rating, reviews).
- Local Falcon-style metrics. Average rank where found (ARP), average rank over all points (ATRP), share of top-3 points (SoLV), found-in count.
- Fast and reliable. No browser, no proxy surcharge. A 7×7 grid takes about 15 seconds. 701 of 701 test points succeeded across the US, Germany and Australia.
- Flexible. Several keywords per run, grids from 3×3 to 15×15, spacing in km or miles, top 20 up to top 100, any language/country.
- Fair pricing. $0.01 per grid point: $0.49 for a 7×7 grid. Failed points are never charged.
What data do you get?
One row per grid point (type: "point"):
| Field | Example |
|---|---|
keyword | dentist |
gridRow / gridCol | 4 / 4 (row 1 = north) |
lat / lng | 40.676498 / -73.983152 |
rank / rankLabel | 3 / "3" (or null / "20+" when not in the top 20) |
inTop3 | true |
topCompetitors | [{"rank": 1, "name": "Park Slope Dental Arts", "placeId": "ChIJ...", "rating": 4.9, "reviewCount": 512, "category": "Dentist", "address": "..."}, ...] |
mapsUrl | link to the same search on Google Maps |
One summary row per keyword (type: "summary", also in the SUMMARY record):
| Field | Example |
|---|---|
averageRank | 8.57 (where found) |
averageRankAll | 9.84 (not found counted as 21) |
top3Percent | 18.4 (% of points in the top 3) |
foundIn / pointsChecked | 44 / 49 |
bestRank / rankAtCenter | 1 / 1 |
gridText | ["17 13 12 14 7 12 20+", "9 5 13 3 8 19 20+", ...] |
topCompetitors | the 10 strongest competitors on the grid |
imageUrl | public link to the PNG grid image |
reportUrl | public link to the HTML map report |
How to use it
- Enter one or more keywords your customers search for.
- Enter the business name and, ideally, its Google Maps link (or place ID) for exact matching.
- Enter the grid center (usually the business's address), or leave it empty to center on the business.
- Pick the grid size and the distance between points. Click Start.
- Open Map report in the Output tab, or download the rows as JSON, CSV or Excel.
Example input:
{"keywords": ["pizza near me", "pizza delivery"],"businessName": "Lou Malnati's Pizzeria","centerAddress": "131 W Jefferson Ave, Naperville, IL","gridSize": "7","spacing": 1,"spacingUnit": "mi"}
How much does it cost?
$0.01 per grid point checked. No start fee, no monthly rent, no proxy costs.
| Grid | Points | Price |
|---|---|---|
| 3×3 | 9 | $0.09 |
| 5×5 | 25 | $0.25 |
| 7×7 | 49 | $0.49 |
| 9×9 | 81 | $0.81 |
| 11×11 | 121 | $1.21 |
| 13×13 | 169 | $1.69 |
| 15×15 | 225 | $2.25 |
Each keyword is its own grid. Points that fail are not charged, and summary rows, images and reports are free. Apify's free plan ($5/month credit) covers about ten 7×7 grids a month. If you set a maximum cost per run, the actor only starts grids it can finish within it.
Run it from your code
Get your API token in Apify Console → Settings → API & Integrations.
Python (pip install apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("ecclesiasteslabs/google-maps-rank-tracker").call(run_input={"keywords": ["dentist"], "businessName": "Park Slope Dentistry","centerAddress": "586 President St, Brooklyn, NY", "gridSize": "7", "spacing": 1,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item["type"] == "summary":print(item["keyword"], item["averageRank"], item["top3Percent"], item["reportUrl"])
JavaScript / Node.js (npm install apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('ecclesiasteslabs/google-maps-rank-tracker').call({keywords: ['dentist'], businessName: 'Park Slope Dentistry',centerAddress: '586 President St, Brooklyn, NY', gridSize: '7', spacing: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((i) => i.type === 'summary'));
HTTP (one call, returns the rows)
curl -X POST "https://api.apify.com/v2/acts/ecclesiasteslabs~google-maps-rank-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["dentist"], "businessName": "Park Slope Dentistry", "centerAddress": "586 President St, Brooklyn, NY", "gridSize": "5"}'
Integrations
- Weekly client reports: create a Task per client in Apify Console and add a Schedule (e.g. every Monday). Send the
reportUrl/imageUrlto Slack or email with Make, Zapier or n8n, or append the summary rows to Google Sheets to chart progress over time. - AI agents (MCP): connect Claude, ChatGPT, Cursor or any MCP client to Apify's MCP server and let the agent run local rank audits.
Use cases
- Local SEO agencies: weekly geo-grid reports for every client and keyword, at a fraction of a monthly Local Falcon seat.
- Business owners: see where you win and where competitors take the map pack, before and after optimizing your Google Business Profile.
- Sales prospecting: run a 5×5 on a prospect and show them the grey dots.
- Multi-location brands: check each branch on its own grid (paste each branch's Maps link).
- Competitor mapping: leave the business empty to map who ranks where for a keyword.
Tips
- Paste the Google Maps link of the business (share links like maps.app.goo.gl work too). It makes matching exact, which matters for chains with many branches. With only a name, we pick the branch closest to the grid center.
- Spacing: 0.5–1 km (0.3–0.6 mi) in dense cities, 1–2 mi in suburbs, 3–5 mi for service-area businesses (plumbers, roofers).
- Rankings are hyper-local: a business usually ranks well only near its own location. Lots of "20+" dots on a big grid is normal, and exactly what the report is for.
- "How deep to look" (top 40/60/100) costs the same. Use it to track businesses that aren't in the top 20 yet.
- Keywords in the local language work best (e.g. "Zahnarzt" in Germany). Set
languageto match.
FAQ
Is it the same as what I see on my phone? Each point reproduces the Google Maps search for a person at that location. Google personalises results for signed-in users (search history, past visits), so an individual's phone can differ slightly. That's true for every rank tracker.
What does "20+" mean? The business isn't in the first 20 results at that point (or 40+/60+/100+ if you look deeper).
Is it legal? The actor reads public Google Maps search results, the same ones anyone sees. It doesn't log in and collects no personal data beyond business listings. Check the rules that apply to your use case.
Something broke? Open an issue on the Issues tab. We fix problems as fast as we can.