Google Maps Rank Tracker | Geo-Grid Local SEO & GBP Ranks
Pricing
from $0.64 / 1,000 grid points
Google Maps Rank Tracker | Geo-Grid Local SEO & GBP Ranks
Extract Google Maps local rankings on a geo-grid at $1.00 per 1,000 grid points on the free plan: your rank at every point of a 3x3 to 13x13 grid, the top 3 businesses there with ratings, average rank, top-3 share and change since last run. GBP and map pack ranks, no login.
What is Google Maps Rank Tracker?
Your Google Maps rank at every point of a 3x3 to 13x13 grid, plus the top 3 businesses there, for $1.00 per 1,000 grid points, no login.
For local SEO agencies, business owners and multi-location teams. Paid Apify plans pay from $0.64 per 1,000. Summary scores per keyword and week-over-week change are included. Your first run with the example input costs about $0.0104 (9 grid points in our test run).
| Input | Business name, place ID or Maps link; keywords; centre address or lat, lng |
| Grid | 3x3, 5x5, 7x7, 9x9, 11x11 or 13x13 points, spacing in km or miles, map zoom 10-17 |
| Per point | Rank 1-20 or not in top 20, top 3 businesses with ratings, Maps link |
| Per keyword | Average rank, top-3 / top-10 / top-20 share, top 5 competing businesses, change since last run |
| Output | JSON, CSV or Excel; Slack or webhook message after each run |
| Price | $1.00 per 1,000 grid points (from $0.64 per 1,000 grid points on paid Apify plans) |
| Free to try | Runs on Apify's free plan: the $5 monthly credit covers about 4,700 grid points |
| Login needed | No |
Why Google Maps Rank Tracker users pick this one
- About 3 cents per grid. A 5x5 grid for one keyword is 25 points, $0.027.
- Top 3 at every point. Name, rating and reviews of the top 3 businesses at each point.
- Scores per keyword. Average rank, top-3 and top-10 share, top 5 competing businesses.
- Week-over-week change. Previous rank and change on every point with a tracking name.
- Never a failed run. Bad input ends cleanly; failed searches are never charged.
Get started in 3 steps
- Enter your business (name, place ID or Google Maps link) and one or more keywords, e.g. dentist.
- Pick the grid size and the distance between points; leave the centre empty to centre on the business.
- Click Start, then download JSON, CSV or Excel, or schedule it weekly with a tracking name to see changes.
▶ Try it with the example input
The form opens with an example input already filled in: that run costs about $0.0104 on the free plan.
How much does Google Maps rank tracking cost?
Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result. Paid plans pay $0.80 (Bronze), $0.72 (Silver) and $0.64 (Gold and higher) per 1,000 grid points.
| Grid points | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.11 | $0.0856 | $0.0776 | $0.0696 |
| 1,000 | $1.06 | $0.86 | $0.78 | $0.70 |
| 10,000 | $10.56 | $8.56 | $7.76 | $6.96 |
Totals include the $0.0014 start fee per run (at least one run per 25 grid points, so 40 start fees for 1,000), rounded to the cent (amounts under $0.10 to four decimals). Apify's free plan includes $5 of credit a month, enough for about 4,700 grid points.
One grid-point event per keyword per point whose search ran and was saved, whether or not your business is in the top 20 there; summary rows are free. Searches that failed, points skipped by your maximum charge or the run timeout, and invalid input are not charged. Worked examples on the free plan: a 3x3 grid for 1 keyword = 9 points = $0.011; 5x5 for 3 keywords = 75 points = $0.077; 7x7 for 1 keyword every week = 49 points = $0.051 a week.
Billing events
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
grid-point | $1.00 per 1,000 grid points | $0.80 per 1,000 grid points | $0.72 per 1,000 grid points | $0.64 per 1,000 grid points |
apify-actor-start | $0.0014 per run | $0.0014 per run | $0.0014 per run | $0.0014 per run |
Benchmarks: how we compare
| Test | Sample | Result |
|---|---|---|
| Rank changes with position | 3 cloud runs: Austin TX 7x7 (2 keywords), London 5x5, Toronto 5x5 (3 keywords), 198 points | 'bbq' rank 1 to 18 across the Austin grid; 13 different businesses ranked first; every keyword showed a different rank map |
| Repeat check | 30 saved points searched again minutes later (Austin, San Francisco), plus a dense Manhattan 'pizza' grid run twice | Austin and San Francisco: 17 of 20 within one place, and every San Francisco top-3 business was still in the live top 10; Manhattan: 16 of 25 points exact, the rest moved 1 to 8 places, so read busy city grids as a range |
| Reliability | 198 grid-point searches on Apify's datacenter proxy | 0 failed searches, 0 failed runs |
| Speed | 7x7 grid, 2 keywords (98 points) | 233 seconds, about 2.4 s per point |
Measured 2026-11 on Apify at 256 MB with the default datacenter proxy. Google results can shift slightly between minutes; compare runs of the same grid, zoom and centre.
What data you get
Google Maps Rank Tracker runs the same Google Maps search from every point of a grid around your business (or any centre) and records where the business ranks at each point, as a customer standing there would see it. Each row is one keyword at one grid point: coordinates, distance from the centre, rank 1-20 or 'not in top 20', the top 3 businesses there with rating and review count, and a link to check the same map yourself. One summary row per keyword adds average rank, best and worst rank, the share of points in the top 3, top 10 and top 20, and the 5 businesses most often in the top 3. With a tracking name, each row also gets the rank in the last run and the change, so a weekly schedule shows movement.
| keyword | grid_row | grid_col | rank_label | top_1 | top_1_rating |
|---|---|---|---|---|---|
| bbq | 1 | 1 | 9 | Shabuyaki Japanese BBQ & Hot Pot AYCE | 5 |
| bbq | 4 | 4 | 6 | True Texas BBQ | 4.8 |
| bbq | 5 | 3 | 1 | Franklin Barbecue | 4.7 |
| bbq | 5 | 4 | 2 | Good BBQ Company | 4.9 |
| bbq | 7 | 7 | 8 | Space Kat BBQ | 5 |
One full grid point record, exactly as a real run returned it (long text and lists shortened here). From a real run:
{"row_type": "point","keyword": "indian restaurant","business_name": "Dishoom Covent Garden","business_place_id": "ChIJxZXYx7cEdkgRdgAOZ6OHOJw","grid_size": "5x5","spacing_km": 0.8,"zoom": 15,"centre_latitude": 51.512518,"centre_longitude": -0.126829,"grid_row": 3,"grid_col": 3,"latitude": 51.512518,"longitude": -0.126829,"distance_km": 0,"rank": 1,"rank_label": "1","in_top_3": true,"in_top_10": true,"results_count": 20,"business_rating": 4.7,"business_review_count": 30071,"top_3": [{"rank": 1,"name": "Dishoom Covent Garden","place_id": "ChIJxZXYx7cEdkgRdgAOZ6OHOJw","category": "Indian restaurant","rating": 4.7,"review_count": 30071,"is_your_business": true},{"rank": 2,"name": "Fatt Pundit","place_id": "ChIJZzLmQYoFdkgRf2kJmh4FwkA","category": "Indian restaurant","rating": 4.8,"review_count": 19910,"is_your_business": false},{"rank": 3,"name": "Maharaja of India","place_id": "ChIJS_aY-s0EdkgRbxbEVrlil9k","category": "Indian restaurant","rating": 4.7,"review_count": 20296,"is_your_business": false}],"maps_url": "https://www.google.com/maps/search/indian+restaurant/@51.512518,-0.126829,15z","previous_rank": null,"previous_rank_label": null,"rank_change": null,"source_url": "https://www.google.com/search?tbm=map&authuser=0&hl=en&q=indian+restaurant&pb=!4m12!1m3!1d2283!2d-0.126829!3d51.512518!2... [118 more characters]","scraped_at": "2026-11-11T04:47:11Z"}
Use cases
- Local SEO agencies reporting a client's map pack visibility across a city, keyword by keyword
- Business owners checking where they show up on Google Maps outside their own street
- Franchise and multi-location teams comparing each branch's local rank on the same keywords
- Consultants measuring the effect of profile, review or category changes with a weekly schedule
- Sales teams finding businesses that rank poorly near their own address, as a prospect list
Input
| Field | Type | What it does | Default |
|---|---|---|---|
business (Business) | string | Business name as on Google Maps, its place ID (starts with ChIJ) or its Google Maps link, e.g. 'Bond Street... | "Bond Street Dental" |
keywords (Keywords) | array | Searches to rank for, as a customer types them in Google Maps, e.g. ['dentist', 'emergency dentist']. | ["dentist"] |
gridSize (Grid size) | string | Points per side: 3x3 = 9 points, 5x5 = 25, 7x7 = 49, up to 13x13 = 169 per keyword. | "5x5" |
spacing (Distance between points) | number | Distance between neighbouring grid points, in the unit below, e.g. 1. | 1 |
centre (Grid centre (optional)) | string | Address, place or 'lat, lng' for the middle of the grid, e.g. '100 Queen St W, Toronto' or '43.6572, -79.3784'. | |
unit (Distance unit) | string | Kilometres or miles for the distance between points. | "km" |
All 13 fields, with examples: see the Input tab.
Use with AI agents (MCP)
MCP (Model Context Protocol) is the open standard that lets AI assistants such as Claude, ChatGPT and Cursor call outside tools. Apify's hosted MCP server at https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker gives your assistant this Actor only: it fills in the input from your request, runs it and reads the grid points back, at the same per-result price as a run started by hand.
Example prompts
- "Where does Bond Street Dental rank on Google Maps for 'dentist' across a 5x5 grid of downtown Toronto?"
- "Track my bakery's Google Maps rank for 'bakery' and 'cake shop' every week and tell me which points dropped"
- "Which businesses beat my plumbing company in the Google Maps top 3 around Austin, and what are their ratings?"
Claude Desktop and claude.ai
Settings > Connectors > Add custom connector, name it Apify, paste https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker, keep the detected OAuth settings, select Add and sign in to Apify.
Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker"
Cursor and VS Code
Add this to ~/.cursor/mcp.json (Cursor); in VS Code's .vscode/mcp.json put the same entry under "servers" with "type": "http". Sign in to Apify when asked.
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker"}}}
ChatGPT
Turn on Developer mode, open Settings > Apps & Connectors > Create, paste the URL above as the MCP server URL, choose OAuth and authorize Apify.
Clients without sign-in send Authorization: Bearer <YOUR_APIFY_TOKEN> instead. No Apify account? This Actor supports Apify's agentic payments: an agent can pay per run with a prepaid, spend-capped token, bought with x402 stablecoin payments.
n8n AI agent
Give an AI Agent node an MCP Client Tool with the endpoint https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker and a Bearer credential holding your Apify token.
Use it from AI agents (MCP), the API or no-code
Copy this to your AI assistant
Use the Apify Actor aurelix/google-maps-rank-tracker (Google Maps Rank Tracker) through Apify's MCP server or API. Main input: business (Business); keywords (Keywords). Example input: {"business": "Bond Street Dental", "keywords": ["dentist", "emergency dentist"], "gridSize": "5x5", "spacing": 1, "unit": "km", "zoom": 13, "stateKey": "bond-dental-weekly"}. Each result is one grid point with fields such as row_type, keyword, business_name, business_place_id, grid_size, spacing_km, zoom, centre_latitude. It costs $1.00 per 1,000 grid points on Apify's free plan plus a $0.0014 start fee per run, and needs no login.
MCP server URL for this Actor: https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker (setup for each client in the section above).
API
Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("aurelix/google-maps-rank-tracker").call(run_input={'business': 'Bond Street Dental', 'keywords': ['dentist', 'emergency dentist'], 'gridSize': '5x5', 'spacing': 1, 'unit': 'km', 'zoom': 13, 'stateKey': 'bond-dental-weekly'})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
No-code: schedule it in 3 clicks
Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.
- Fill in the input, then click Save as a new task.
- In the task, click Schedule and pick daily or weekly (Apify Schedules).
- Paste a webhook URL into Webhook URL (optional) to get what changed after every run (each run already reports only what is new).
Prefer n8n or Make? Ask in the Issues tab and we will share a ready-made workflow for it.
FAQ
Can I check Google Maps rankings without login?
Yes. It never uses a Google account; it reads Google Maps' public search results logged out, at a polite pace.
Is there a Google Maps rank tracking API?
You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.
How much does Google Maps rank tracking cost?
About $1.06 for 1,000 grid points on Apify's free plan and from $0.70 on paid plans, start fee included. The free $5 monthly credit covers about 4,700 grid points.
Can I export Google Maps rankings to Excel or Google Sheets?
Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's Storage tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.
Is it legal to check Google Maps rankings?
It reads only public data any logged-out visitor can see: Google Maps search results. It goes at a polite pace, respects robots.txt, never logs in and never solves CAPTCHAs. It returns business listing fields only (name, place ID, category, rating, review count) and the position of each business in the results; no review text or reviewer data. To have a listing hidden, open an issue on this Actor's Issues tab; if Google formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully; this is not legal advice.
Is there a cheaper Google Maps rank tracker on Apify?
Yes. This Actor costs $1.00 per 1,000 grid points on Apify's free plan and from $0.64 on paid plans, plus $0.0014 per run, cheaper than the leading tools; a 5x5 grid for one keyword is about 3 cents. It works on Apify's included datacenter proxy, so no residential proxy is billed on top. It does not draw a heatmap image; the rows carry the coordinates for one.
How do I get geo-grid rankings into Google Sheets, n8n or an AI agent?
Two ways. For a fixed workflow, add Apify's n8n or Make node, choose Run Actor, enter aurelix/google-maps-rank-tracker and map the dataset to the next step (or export CSV to Sheets). For an AI agent (Claude, ChatGPT, Cursor or an n8n AI Agent node), add https://mcp.apify.com/?tools=aurelix/google-maps-rank-tracker as an MCP server and ask in plain words, e.g. 'where does my dental clinic rank for dentist across downtown Toronto?'. Runs bill your own Apify account at the same per-point price.
What is charged?
One grid-point event ($1.00 per 1,000, from $0.64 on paid plans) per keyword per grid point whose Google Maps search ran and was saved, plus $0.0014 per run. Summary rows, failed searches and points the run did not reach are free.
How is the rank measured?
Each point runs the keyword as a Google Maps search with the map centred on that point at the zoom you pick (13 by default, part of a city), logged out, and reads the list of up to 20 businesses in the order Google shows them. Rank is your business's position in that list; 'not in top 20' means it is not in the first 20.
How is my business matched?
By Google place ID. A place ID or a Google Maps link is exact. A name is searched on Google Maps near the grid centre and matched to the result whose name fits it best (exact name first); the matched name and place ID are on every row and in the run status, so you can check it. If no result's name fits, the run stops before charging any grid point.
What do average rank and the shares mean?
average_rank is the mean over the points where you are in the top 20; average_rank_with_misses counts every other point as 21, so it falls when you appear at more points. share_top_3, share_top_10 and share_top_20 are the share of all points where you rank that high.
How do I track changes week to week?
Give a tracking name (stateKey) and keep the business, grid, centre and zoom the same. Each later run adds previous_rank and rank_change to every point and average_rank_change, points_improved and points_declined to each summary. Rank change is positive when you moved up; not in top 20 counts as 21.
Lawful use
- The data is business listing information (names, categories, ratings, review counts) and the order Google Maps shows businesses in; no review text, reviewer data or personal data.
- Any business can ask for its listing to be hidden from other users' results: open an issue on this Actor's Issues tab. Hidden listings appear as '(listing hidden on request)' with no place ID, rating or review count, and still count for rank positions.
- Business listing data as shown publicly on Google Maps; hidden on request via the Issues tab.
Limits (stated honestly)
- Rank is read from the logged-out Google Maps result list (up to 20 businesses per point); ranks beyond 20 are reported as 'not in top 20'.
- Google personalises results for signed-in users, so a person's own phone can show a slightly different order than the logged-out view this reads.
- Google reshuffles results between searches, most in busy categories in dense cities: a point can move a few places run to run, so compare averages and top-3 share over several runs rather than one point.
- Results can shift a little between minutes; compare runs of the same grid, zoom and centre.
- A business given by name is matched to the Maps result whose name fits best near the centre; for chains or common names use the place ID or Maps link.
- No heatmap image: rows carry latitude and longitude for your own map or sheet.
- Up to 10 keywords and 169 points per keyword per run; searches are spaced about 1.5 seconds apart, so a 13x13 grid takes about 4 minutes per keyword.
Works great with
- Then: Google Maps Phone Scraper: search the same keyword and area to get the phones, websites and hours of the competing businesses in
top_businesses
Related Aurelix tools
Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.
AI, content and SEO
- Google Trends by Region: Google Trends interest over time, by region and rising queries for any number of keywords, plus trending searches.
- Google Autocomplete API: Expands seed keywords into hundreds of real Google and YouTube autocomplete phrases, tagged by search intent.
- PDF Table Extraction & PDF to Markdown OCR: Turns linked PDF and Word files into Markdown per page, with tables as JSON rows, RAG chunks and OCR.
- Broken Link Crawler & SEO Audit: Audits a whole site: one row per page with SEO checks and broken links, plus a ranked issues summary.
- Bulk TikTok Transcripts Scraper: Returns TikTok video transcripts as text, timed segments and SRT, from video links or @profiles' latest videos.
- Website to Markdown API: Crawls a site and returns one row of clean main-content Markdown per page, with title, headings and links.
- YouTube Transcript Scraper: Returns YouTube video transcripts as text, timed segments and AI chunks, from videos, channels, playlists or searches.
- YouTube Video Scraper API: Full details for every YouTube video in a search, channel or playlist: views, likes, comments, tags, publish time.
Jobs and hiring data
- Job Bank Canada Scraper API: Official Job Bank Canada postings by month: NOC and NAICS codes, wages, hours and location.
- Greenhouse Jobs Scraper: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
- Career Page Monitor: New, removed and reposted roles plus hiring velocity per company, from seven job-board systems including Workday.
- LinkedIn Jobs Country Filter Scraper: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.
- Multiple Job Boards Scraper: LinkedIn, about 50 company career sites, Remote OK and We Work Remotely jobs in one deduplicated list.
- Remote Job Board Scraper API: Remote OK and We Work Remotely jobs in one deduplicated list with salary, regions and tags.
- Wellfound Jobs API & Scraper: Wellfound startup jobs with salary and equity ranges, company stage and size, $0.50 per 1,000.
- Workday Job Postings Scraper: Jobs from any Workday career site by link or company name, with full descriptions and Canadian province tags.
E-commerce and product data
- AliExpress Scraper API: AliExpress search results by keyword: price, discount, rating, units sold, ship-from country and sponsored flag.
- Amazon Best Sellers & Amazon New Releases: Amazon Best Sellers and New Releases top 100 on 10 marketplaces: rank, ASIN, price, rating, rank change.
- Best Buy Canada Scraper API: Best Buy Canada search results: CAD price, sale savings, rating, reviews and seller, plus optional UPC and specs.
- Shopify App Store Scraper: Shopify App Store apps with pricing plans, ratings, category ranks and reviews; new-app and new-review watch.
- Shopify Product Export Scraper: Every public product of any Shopify store with variants, SKUs, prices, barcodes, stock counts and collections.
- Shopify Best Sellers Tracker: Competitor Shopify stores' best-sellers, new products, price changes, stock-outs and restocks since your last run, plus catalogue summary.
Leads and company data
- Companies House Scraper: Newly incorporated UK companies from Companies House: SIC codes, region, registered office, directors with roles.
- Contact Page Scraper: Published company emails, phones, addresses, social pages and team members from a list of company websites.
- Decision Maker Finder: Founders, CEOs, VPs and department heads from company team pages, with title, seniority and function.
- Newly Funded Companies Hiring: Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
- Google Maps Phone Scraper: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
- Recently Funded Companies API: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.
- Tech Stack API: CMS, e-commerce platform, analytics, ad pixels, chat, CDN and email provider for each domain you enter.
- Yellow Pages Canada Scraper: YellowPages.ca businesses by search term and city: phone, website, address, postal code, hours and rating.
Ad intelligence
- Competitor Watch: One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
- Facebook Ad Library Search & API: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.
- TikTok Ads Library API: TikTok Ads Library ads for Europe, UK, Switzerland and Turkey with targeting, reach, ad text and landing pages.
Canada and government data
- Canada Building Permits: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, applicant, contractor and Toronto planner contact.
- Government Tenders Scraper: Open tenders from SAM.gov, CanadaBuys and EU TED in one table: buyer, codes, value, deadline, contact and link.
- USPTO Trademark API: US trademark search and watch from USPTO: mark, owner or number lookups, new filings, owner, attorney, goods.
More data tools
- Agoda API (Unofficial): Scrape Agoda guest reviews at $0.50 per 1,000 with this unofficial Agoda API, cheaper than the leading tools: Agoda and...
- Tennis Betting Odds Scraper: Tennis results and upcoming matches with opening and closing odds per bookmaker and implied probabilities.
Recent changes
- 0.1: First release: geo-grid Google Maps rank tracking (3x3 to 13x13), top 3 businesses per point, summary scores and the businesses most often in the top 3 per keyword, change since last run, Slack and webhook message.
The full history is on the Changelog tab.
Tested daily
An automated health check runs this Actor every day on a fixed input and checks that at least 8 grid points come back with keyword, business_place_id, latitude, longitude, rank_label, results_count filled in; a failed check alerts the maintainer straight away.
Was this useful?
- Something went wrong? Open an issue and tell us what you ran: we answer fast and aim to reply within a day.
- It worked? Leave a review: it takes a minute and helps other people find this tool.
