Google Maps Rank Tracker (Geo-Grid Local SEO Heatmap) avatar

Google Maps Rank Tracker (Geo-Grid Local SEO Heatmap)

Pricing

from $2.80 / 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)

Track where a business ranks on Google Maps across an N×N geo-grid, like Local Falcon. One row per point with organic rank, top competitors and sponsored pins, plus average rank, share of local voice and a heatmap PNG. Pay per grid point.

Pricing

from $2.80 / 1,000 grid point checkeds

Rating

0.0

(0)

Developer

LatentLark

LatentLark

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

For local SEO agencies, freelancers and business owners. See where a business ranks on Google Maps for a keyword at every point of an N×N grid over a city, the same view Local Falcon and similar tools give you, without a monthly subscription.

Outcome: one picture that shows where a business is visible on the map and where competitors take the customers, plus the numbers to track it week by week.

  • 📍 Rank at every grid point: 3×3 up to 9×9 (81 points), searched as if standing at each point.
  • 🥇 Who beats you there: top 3 competitors per point with rating and review count.
  • 📢 Ads kept separate: sponsored pins are listed per point and never counted in the organic rank.
  • 🗺️ Heatmap PNG + summary: average rank, share of local voice (top‑3 %) and a ready-to-share image.
  • 💸 Pay per point: $0.004 per grid point checked. A 3×3 costs about $0.05, a 7×7 about $0.21. No login, no Google API key.

Heatmap: Google Maps rank of a downtown Austin dentist for "dentist" at 49 grid points, rank 1 at the center and not found at the edges

Need done-for-you setup (custom scrape or n8n wiring)? → Fiverr Apify scrape gig + Fiverr n8n automation gig

Quick start (first run in about 30 seconds)

  1. Click Try for free (or Start in Console). The form is prefilled with Swish Dental Downtown, keyword dentist, a 3×3 grid 2 km apart over downtown Austin.
  2. Click Start. You get 9 rows in the Output tab and a heatmap in Storage → Key-value store → HEATMAP.png, for about $0.05.
  3. Replace the business, keyword and center with your own (or your client's). Use 5×5 or 7×7 for a full city.

Tip: paste the business's Google Maps URL instead of the name for an exact match (useful for chains with many locations).

What you can do with it

  • Local SEO audits: show a prospect where they are invisible on the map, one picture, no spreadsheet.
  • Client reporting: run the same grid weekly and compare average rank over time.
  • Competitor mapping: see which competitors own the top 3 in each part of town, and who runs Maps ads there.
  • Before/after proof: run a grid before and after a Google Business Profile change.
  • Pitch material: pair it with Google Maps Leads Website Audit & Pitch Generator for the website side.

Input

FieldWhat it does
businessName / mapsUrl / placeIdThe business to track. URL or Place ID is the most precise
keywordWhat customers type into Google Maps (dentist, plumber near me)
centerAddress, city or lat,lng. Empty = the business's own location
gridSize3, 5, 7 or 9 points per side (9 to 81 points)
gridSpacingKm or radiusKmDistance between points, or from the center to the edge
maxRankLook up to rank 20 (1 request per point), 40 or 60
maxCompetitorsPerPointCompetitors listed per point (default 3)
country / languageGoogle gl / hl codes
pinLocationSearch as if standing at each grid point (default on). Makes ranks independent of the server's location
zoomAdvanced: map zoom per point (default 15)
proxyConfigurationOptional. No proxy by default; use RESIDENTIAL (US) if you get blocked on big or frequent grids

Example (7×7 over a metro area):

{ "businessName": "Swish Dental Downtown", "keyword": "dentist", "center": "30.2672, -97.7431", "gridSize": 7, "gridSpacingKm": 1.5 }

Output

One dataset item per grid point:

Dataset: one row per grid point with lat/lng, organic rank, the #1 business at that point and sponsored pin count

{
"pointIndex": 4, "gridRow": 1, "gridCol": 1, "isCenter": true,
"lat": 30.2672, "lng": -97.7431,
"keyword": "dentist", "targetName": "Swish Dental Downtown", "targetPlaceId": "ChIJdWgENLS1RIYReos4IrRuTmQ",
"rank": 1, "rankLabel": "1", "found": true, "resultsChecked": 20,
"topCompetitors": [
{ "rank": 1, "name": "Swish Dental Downtown", "rating": 4.5, "reviewCount": 988, "category": "Dentist" },
{ "rank": 2, "name": "Toothbar", "rating": 4.9, "reviewCount": 735, "category": "Dentist" }
],
"adsCount": 1, "targetAdPosition": null,
"sponsored": [ { "adPosition": 1, "name": "Example Dental Group", "displayUrl": "www.example-dental.com" } ],
"scrapedAt": "2026-10-26T11:03:45+00:00"
}
  • rank is the organic position (ads excluded). It is null (label 20+) when the business isn't in the results checked at that point.
  • sponsored lists the Maps ads shown at that point; targetAdPosition is set when your business itself runs an ad there.

The key-value store also has:

  • SUMMARY: average rank where found (ARP), average rank over all points with not-found counted as maxRank + 1 (ATRP), share of local voice (% of points in the top 3), points found, points with ads.
  • HEATMAP.png: color-coded grid (green 1‑3, yellow 4‑10, orange 11‑20, red not found).

Run it on a schedule

  1. Fill in your business, keyword and grid, then Save as task.
  2. Schedule it, e.g. weekly on Monday 0 7 * * 1.
  3. Send results to a sheet with Google Sheets Export or to Slack/email via Integrations.
GridPointsPer runWeekly (≈4.3 runs/month)Daily (30 runs/month)
3×39$0.046~$0.20/month~$1.38/month
5×525$0.11~$0.47/month~$3.30/month
7×749$0.206~$0.89/month~$6.18/month
9×981$0.334~$1.44/month~$10.02/month

Several keywords? Save one task per keyword (or per client) and schedule each.

Pricing

Pay per event, no subscription:

EventFree planBronzeSilverGold+
Actor start$0.01$0.01$0.01$0.01
Grid point checked$0.004$0.0036$0.0032$0.0028

Example (free plan): a 7×7 grid (49 points) costs $0.01 + 49 × $0.004 = $0.206. Paid Apify plans pay 10–30% less per point.

Failed points and input errors are not charged. Set a maximum cost per run and the Actor stops cleanly when it reaches it. Platform usage is included.

How it works and limitations

  • At each grid point the Actor loads Google Maps results for your keyword with the map centred on that point, the same list a person sees when they search there. Ranks are a snapshot at run time and can shift by a few places between runs.
  • Each grid point is searched with the searcher's location set to that point, like a phone with GPS on. In our tests the same grid gave the same ranks from a German server, a US datacenter and US residential IPs.
  • Sponsored (ad) pins are reported separately in sponsored and never counted in rank. Google shows Maps ads only some of the time, so adsCount varies between runs.
  • Rank depends on the map zoom: 15 (about 4 km across) mirrors a phone search in a neighbourhood. Lower zoom (13) shows the whole city and ranks barely change between nearby points.
  • Public Google Maps data only. No login, no personal data.

FAQ

My business shows "20+" (not found) everywhere. Check the name matches Google Maps exactly, or paste the business's Google Maps URL. Make sure center is near the business, use a smaller spacing, or raise maxRank to 40/60. The run status message tells you when the business wasn't found at any point.

The run returned one row with an error. That means the input could not be used (e.g. the address could not be found or the business could not be identified). The run still finishes as succeeded so your schedules stay green, and the row is not charged. Fix the input and run again.

Why is my rank different from what I see on my phone? Google personalises results by your history and exact location. This Actor searches logged-out from each grid point, which is the standard way geo-grid tools measure rank.

Can I track several keywords or locations? Yes. Save one task per keyword/location and schedule them; each run is billed separately.

Is a proxy needed? No for normal use. If you run big grids very often and see failed points, set the proxy to RESIDENTIAL with country US.

More from LatentLark