Google Maps Geogrid Rank Tracker — Local Rank Heatmap avatar

Google Maps Geogrid Rank Tracker — Local Rank Heatmap

Pricing

from $1.00 / 1,000 grid points

Go to Apify Store
Google Maps Geogrid Rank Tracker — Local Rank Heatmap

Google Maps Geogrid Rank Tracker — Local Rank Heatmap

Track a business's Google Maps search rank at every point of a 3x3 to 13x13 grid for up to 20 keywords. Rank 1-20 per point with the top 3 competitors, ARP, ATRP, Share of Local Voice, a heatmap and changes since your last scan.

Pricing

from $1.00 / 1,000 grid points

Rating

0.0

(0)

Developer

Yugenox Corp

Yugenox Corp

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

See where a business ranks on Google Maps across its whole area, not just from one spot. Give the business and up to 20 keywords. The Actor lays a grid of 3 x 3 to 13 x 13 points over the map and runs a Google Maps search from every point. For each point you get the business's Google Maps search rank at this point (1-20, or "20+"), plus the top 3 competitors there. Each keyword also gets a summary with ARP, ATRP, Share of Local Voice and a heatmap.

No login, no subscription, no browser extension. You pay per grid point, and only for points Google Maps answered.

Who it's for

  • Local SEO agencies: monthly or weekly heatmaps for every client and keyword, with numbers you can put straight into a report.
  • Multi-location brands and franchises: which neighbourhoods each location wins, and where a competitor owns the map.
  • Single businesses: dentists, lawyers, plumbers, restaurants, salons. See whether your Google Business Profile work moved the needle, block by block.
  • AI agents and dashboards: clean JSON per point, per keyword and per competitor, through the Apify API or MCP.

What you get

One point row per keyword and grid point (charged):

{
"type": "point",
"keyword": "pizza",
"rank": null,
"rankLabel": "20+",
"found": false,
"point": 5, "row": 0, "col": 4,
"lat": 43.634102, "lng": -79.579741,
"distanceKm": 4.243, "bearing": "NE",
"resultsCount": 20,
"competitors": [
{ "rank": 1, "name": "Pizzaiolo", "placeId": "ChIJw8hf7pY4K4gRFmqnhK1pI0I", "rating": 4.3, "reviewsCount": 90, "category": "Pizza restaurant", "address": "4335 Bloor St W, Etobicoke, ON M9C 2A5" },
{ "rank": 2, "name": "Red Swan Pizza - Rockwood Mall", "rating": 4.6, "reviewsCount": 635, "...": "..." },
{ "rank": 3, "name": "Pizza Wings & More", "rating": 4, "reviewsCount": 103, "...": "..." }
],
"businessName": "Marconi Pizza",
"businessPlaceId": "ChIJ5wXPnW1HK4gRws7j2NFlViU",
"searchAreaKm": 3,
"scannedAt": "2026-10-10T12:57:59.372Z"
}

One summary row per keyword (free):

{
"type": "summary",
"keyword": "pizza",
"pointsScanned": 25, "pointsFound": 17, "foundShare": 68,
"arp": 9, "atrp": 12.84, "solv": 24,
"top3Points": 6, "top10Points": 10, "bestRank": 2, "worstRank": 20,
"complete": true,
"heatmap": [[11, 15, 16, 18, null], [13, 2, 3, 3, 20], [null, 2, 2, 3, 18], [null, 9, 6, 4, 8], [null, null, null, null, null]],
"heatmapText": " 11 15 16 18 20+\n 13 2 3 3 20\n20+ 2 2 3 18\n20+ 9 6 4 8\n20+ 20+ 20+ 20+ 20+",
"gridSize": 5, "radiusKm": 3, "spacingKm": 1.5
}

The same heatmap, as you'd read it (north at the top):

11 15 16 18 20+
13 2 3 3 20
20+ 2 2 3 18
20+ 9 6 4 8
20+ 20+ 20+ 20+ 20+

20+ means not in the top 20 at that point. A · ("-" in heatmap) means there is no number for that cell: outside a circle grid, not scanned, not answered, or Google Maps had no places at all there.

competitor rows per keyword (free): the businesses that show up most often in the top 3 across the grid, each with its own ARP, ATRP, Share of Local Voice and best rank. You can see who beats you, and where.

The metrics

MetricMeaning
ARP (average rank position)Average rank over the points where the business is in the top 20
ATRP (average total rank position)Average rank over every scanned point, counting "not in the top 20" as 21
SoLV (Share of Local Voice)Share of scanned points where the business ranks 1-3, in percent
foundShareShare of scanned points where the business is in the top 20, in percent

Lower ARP and ATRP are better. Higher SoLV and foundShare are better. These are this Actor's own definitions. Other rank trackers use similar names, but their formulas and grids can differ, so compare numbers from the same tool over time.

How to use it

  1. Business: paste its Google Maps link. On Google Maps, open the business and copy the link from the address bar, or use a maps.app.goo.gl share link. A place ID (ChIJ…) or CID works too. With any of these, the business is recognised at every point by Google's own ID, never by its name. As a fallback you can type Name, full address. The Actor looks it up once and only uses it when both the name and the address match (street number and street, or postal code); otherwise it stops and lists the closest businesses with their place IDs.
  2. Keywords: what customers type, e.g. dentist, emergency dentist, teeth whitening (1-20).
  3. Grid: size (3, 5, 7, 9, 11 or 13 points per side), radius (km or miles), square or circle. The grid is centred on the business unless you set a centre.
  4. Run it. A 7 x 7 grid with 3 keywords (147 points) takes about 20-40 seconds.

Example inputs

{
"business": "https://www.google.com/maps/place/Midtown+Dental/...",
"keywords": ["dentist", "emergency dentist", "cosmetic dentist"],
"gridSize": 7,
"radius": 3
}
{
"business": "ChIJ64KdcK40K4gRxXMYfG2HKZM",
"keywords": ["plumber"],
"gridSize": 9,
"radius": 10,
"radiusUnit": "mi",
"gridShape": "circle",
"monitorMode": true
}

Monitor mode: what changed since the last scan

Turn on Monitor mode and run the Actor on a schedule (Apify Schedules, weekly or monthly). Each scan is compared with the previous scan of the same business, keyword and grid:

  • every point gets previousRank, rankChange (positive = moved up) and movement (up, down, same, entered the top 20, dropped out of it, or new on the first scan);
  • every summary gets changes (ARP, ATRP, SoLV, foundShare, top-3 points) and counts of improved and declined points;
  • the run's key-value store gets a MONITOR_DELTAS record with the changes for all keywords.

Scans are kept in a key-value store in your Apify account (geogrid-rank-monitor by default; set Monitor store name to keep separate histories, e.g. one per client). Only a scan that got an answer for every point is saved: one cut short by a timeout or your maximum cost, or with points Google Maps didn't answer, never replaces the saved one. Changes are free.

How a point is scanned

Each point is one Google Maps web search for the keyword, centred on that point. The map view it searches is sized to the grid: twice the distance between points, between 2 and 15 km. This way every point ranks the businesses around it, not the whole city. With a city-wide view every point would get the same list and the heatmap would be flat. You can set Search area per point yourself (0.5-30 km).

What the rank is, and what it isn't:

  • It is the business's Google Maps search rank at this point: its position among the 20 places Google Maps web search returns for that keyword and map view.
  • It is not a reading of the Google Maps app on a particular phone, the 3-pack in regular Google Search, or ads. Google personalises results, so a real person may see a slightly different order.
  • Google's ranking moves a little from minute to minute. Two scans back to back can differ by a place or two at some points. Compare trends over several scans rather than single points.

Pricing

Pay per event: you pay for grid points, never for summaries, competitors or monitor changes.

EventFREE / BRONZESILVERGOLD and above
Grid point (one keyword at one point, with its top 3 competitors)$0.0015$0.0012$0.001
Actor start (once per run)$0.001$0.001$0.001

Examples at the FREE price:

ScanPointsCost
3 x 3, 1 keyword9$0.0145
7 x 7, 1 keyword49$0.0745
7 x 7, 3 keywords147$0.2215
13 x 13, 5 keywords845$1.2685

Four weekly 7 x 7 scans of 3 keywords cost about $0.89 a month on FREE, or about $0.59 on GOLD.

You are never charged for:

  • points Google Maps doesn't answer (after a network or server error they're retried first);
  • points where Google Maps has no places at all for the keyword (there is nothing to rank). A keyword with no places at its first points is not scanned further;
  • answers the Actor can't read (if Google changes its format, the run stops instead of guessing);
  • points outside a circle grid;
  • points skipped because the run reached its timeout or your maximum cost per run. The Actor never scans a point it can't charge, and it saves everything it scanned, even when the timeout stops it mid-keyword;
  • grid points on runs where the business can't be found. They stop before the first point, so only the $0.001 Actor start applies.

If Google Maps shows a bot check (CAPTCHA or "unusual traffic"), the run stops right there with the points saved so far. It never retries from other IPs to get around it.

Tips

  • Pick the radius for the business type. In a dense city, 1-3 km shows the competition block by block. For service-area businesses (plumbers, movers) use 5-15 km or more.
  • Odd grid sizes keep the business in the centre cell. 7 x 7 is a good default; use 9-13 for a finer picture over a wide area.
  • Circle grids skip the corners, which costs fewer points and often matches a service area better.
  • Same settings every time: monitor mode compares scans of the same grid only. If you change size, radius, shape, centre or search area, a new history starts.
  • Timeout: about 1 second per 8 points. The default 1 hour covers even 20 keywords on 13 x 13 (3,380 points, about 5 minutes).

FAQ

Why is the business "20+" right next to its own location? In a dense area more than 20 similar businesses can sit inside that point's map view. The business is then outside the top 20 there, even close to home. That is exactly what the heatmap is meant to show.

Can I track a business by name only? Yes, with "Name, full address". The name and the address both have to match the business Google finds, otherwise the run stops and lists the closest matches. A place ID, CID or Google Maps link (including the "write a review" link) is exact, and recommended for anything you report on.

Do I need a proxy? No setup is needed: the default Apify datacenter proxy works. Only Apify datacenter proxy groups are used. Residential or SERP proxy groups in the input are replaced by datacenter, because they would cost more per point than the point itself.

Is this legal? The Actor reads public Google Maps search results, with no login. It collects business listing data (names, ratings, review counts, categories, addresses), not personal data. You're responsible for how you use the results in your jurisdiction.

Output fields

point rows: keyword, rank, rankLabel, found, point, row, col, lat, lng, distanceKm, bearing, resultsCount, competitors[], businessName, businessPlaceId, businessCid, searchAreaKm, country, scannedAt. Monitor mode adds previousRank, rankChange and movement.

summary rows: pointsScanned, pointsFound, foundShare, arp, atrp, solv, top3Points, top10Points, bestRank, worstRank, pointsInGrid, pointsNotAnswered, pointsNoResults, pointsNotScanned, complete, heatmap, heatmapText, the business, the grid (centerLat, centerLng, gridSize, gridShape, radiusKm, spacingKm, searchAreaKm) and, in monitor mode, previousScanAt, changes, improvedPoints, declinedPoints and unchangedPoints.

competitor rows: competitorRank, name, placeId, cid, rating, reviewsCount, category, address, pointsFound, foundShare, top3Points, solv, arp, atrp, bestRank.

The run's key-value store also holds RUN_REPORT: the matched business, the grid, per-keyword metrics, the request count and how the run ended.