Google Maps Rank Tracker – Geo-Grid Local SEO Heatmap avatar

Google Maps Rank Tracker – Geo-Grid Local SEO Heatmap

Pricing

from $7.00 / 1,000 grid point checkeds

Go to Apify Store
Google Maps Rank Tracker – Geo-Grid Local SEO Heatmap

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

ecclesiasteslabs

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

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"):

FieldExample
keyworddentist
gridRow / gridCol4 / 4 (row 1 = north)
lat / lng40.676498 / -73.983152
rank / rankLabel3 / "3" (or null / "20+" when not in the top 20)
inTop3true
topCompetitors[{"rank": 1, "name": "Park Slope Dental Arts", "placeId": "ChIJ...", "rating": 4.9, "reviewCount": 512, "category": "Dentist", "address": "..."}, ...]
mapsUrllink to the same search on Google Maps

One summary row per keyword (type: "summary", also in the SUMMARY record):

FieldExample
averageRank8.57 (where found)
averageRankAll9.84 (not found counted as 21)
top3Percent18.4 (% of points in the top 3)
foundIn / pointsChecked44 / 49
bestRank / rankAtCenter1 / 1
gridText["17 13 12 14 7 12 20+", "9 5 13 3 8 19 20+", ...]
topCompetitorsthe 10 strongest competitors on the grid
imageUrlpublic link to the PNG grid image
reportUrlpublic link to the HTML map report

How to use it

  1. Enter one or more keywords your customers search for.
  2. Enter the business name and, ideally, its Google Maps link (or place ID) for exact matching.
  3. Enter the grid center (usually the business's address), or leave it empty to center on the business.
  4. Pick the grid size and the distance between points. Click Start.
  5. 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.

GridPointsPrice
3×39$0.09
5×525$0.25
7×749$0.49
9×981$0.81
11×11121$1.21
13×13169$1.69
15×15225$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 ApifyClient
client = 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 / imageUrl to 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 language to 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.