Google Maps Rank Tracker — Geo-Grid Local SEO
Pricing
from $3.00 / 1,000 grid point checkeds
Google Maps Rank Tracker — Geo-Grid Local SEO
Google Maps rank tracker for local SEO: check a business's rank at every point of a 3x3 to 13x13 geo-grid, with the top 3 competitors per point, average rank, share of local voice and a rank grid. A pay-per-point local rank tracker and Local Falcon alternative: $3 per 1,000 grid points.
Pricing
from $3.00 / 1,000 grid point checkeds
Rating
0.0
(0)
Developer
Heim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Maps Geo-Grid Rank Tracker
See where a business ranks on Google Maps across its whole service area, not just at its front door.
Give a business, one or more keywords and a grid centre. The actor searches Google Maps from every point of a 3 x 3 to 13 x 13 grid and returns, for each point:
- The business's rank among Google Maps results (1–20, ads excluded), or "not in the top 20"
- The top 3 businesses ranking there, with place ID, category, rating and review count
- Optionally the full top 20 at each point
The run summary (OUTPUT) adds, per keyword, the rank grid (one rank per grid point, laid out like the map, ready to paste into a report or spreadsheet), average rank, and the share of points where the business is in the Maps top 3.
It is a pay-per-use alternative to Local Falcon-style geo-grid tools for local SEO agencies, multi-location brands and anyone checking how a Google Business Profile performs street by street. Schedule it weekly to track a trend. No accounts, API keys or logins needed.
How much does it cost?
| Event | Price | When |
|---|---|---|
grid-point | $0.003 | One keyword checked at one grid point, delivered (found or not in the top 20) |
A 5 x 5 grid for one keyword is 25 points, $0.075. A 7 x 7 grid for three keywords is 147 points, $0.441. Apify also bills its start event (apify-actor-start): $0.00005 per run at the default 256 MB.
You are not charged when Google blocks a request, times out or returns a page the actor cannot read. Each such point is retried once through a different proxy and, if it still fails, listed in the free status dataset. Set Maximum cost per run in Apify to cap spend: the actor stops before starting a point the budget cannot cover.
Input
| Field | Example | Notes |
|---|---|---|
businessName | "Toothbar" | As shown on Google Maps; case and punctuation are ignored |
placeId | "ChIJO0xN0RG1RIYRIDFDZYJkYjA" | Optional, recommended: tells apart branches that share a name. Every row returns place IDs |
keywords | ["dentist", "teeth whitening"] | Up to 10 |
centerLat, centerLng | 30.2672, -97.7431 | Usually the business's location (the numbers after @ in its Maps URL) |
gridSize | 5 | 3, 5, 7, 9, 11 or 13 points per side |
spacingKm | 1 | Distance between neighbouring points |
zoom | 14 | Google Maps zoom at each point (11–18) |
businessCountry | "US" | Two-letter code; sets Google's region and proxy routing (below) |
language | "en" | Google interface language |
includeAllResults | false | Add the full top 20 to each row (same price) |
Keywords x grid points is capped at 1,000 per run.
Output
One row per keyword and grid point (rows run north to south, columns west to east):
{"keyword": "plumber","row": 0, "col": 0, "lat": 39.766331, "lng": -105.025346,"rank": 1, "found": true, "matchedBy": "placeId","matchedPlaceId": "ChIJkWUJx22Ha4cRVVLq4AJk7Ng","top3": [{ "rank": 1, "name": "Applewood Plumbing Heating & Electric", "placeId": "ChIJkWUJx22Ha4cRVVLq4AJk7Ng", "category": "Plumber", "rating": 4.9, "reviews": 17883, "isTarget": true },{ "rank": 2, "name": "Golden West Plumbing, Heating, Air Conditioning, and Electrical", "...": "..." },{ "rank": 3, "name": "Good Plumbing Service Company", "...": "..." }],"resultsCount": 20,"zoom": 14,"checkedAt": "2026-10-17T12:56:00.000Z"}
OUTPUT (key-value store) per keyword:
{ "keyword": "plumber", "pointsDelivered": 25, "pointsFound": 24, "pointsTop3": 6, "top3Share": 0.24,"averageRankWhereFound": 9, "averageRankAllPoints": 9.48,"grid": ["1 1 4 12 18", "1 1 6 14 17", "1 1 8 10 16", "4 5 10 15 16", "11 12 15 20+ 18"] }
How ranks are measured
Each point is a Google Maps search with the map centred on that point at the chosen zoom, the same request the Maps website makes. Rank is the position in the result list, ads excluded. In testing on 2026-10-17 the results matched a manual Google Maps check exactly (top 8–10, in order) for a dentist in Austin, a plumber in Denver and a cafe in Manchester, at grid centres and corners.
Google also re-orders results by the searcher's own IP location. A proxy inside the business's country would make positions 2–10 depend on wherever that proxy happens to be, and differ from run to run. So the actor sends requests from outside the business's country: residential IPs in Germany (then the UK) for US businesses, US datacenter IPs (then US residential) for everyone else. The ranks are therefore what Maps shows for that map view, without a local searcher's personal location. A phone physically in the area can see a slightly different order below the top 3.
Limits
- Google Maps HTTP only, no browser. If Google changes this response format, points become free
unrecognised_responsestatus rows rather than wrong data. - The top 20 only: "not in the top 20" is reported as
rank: null(and20+in the grid). - Name matching is exact after normalising case, accents and punctuation; use
placeIdfor chains or near-duplicate names. WithplaceIdset, a different location with the same name is never counted. - A result page with an unreadable entry or no results at all is a free
unrecognised_responserow, never a charged "not in the top 20". - The whole grid must lie between latitudes -85 and 85; grids crossing the 180° meridian are supported.
- This actor does not collect personal data. It returns public business listings only.
Usage telemetry
Each run sends one anonymous usage record (a hashed caller ID, whether the run came from the API or the Console, and charged-event counts) to the developer's private dataset. No inputs, keywords or results are recorded.