Findings · 2026-09-25 · By VSNARY | Emmanuel Orta · 2 views
Google Places API vs Google Maps rankings: why they don't match (tested in 4 cities)
Same query, four Denver-area cities, one day. The API and Maps agreed on who competes, disagreed on the order, and the API could not find two businesses Maps ranks.
They don't match. On 25 September 2026 we ran “tree service in [city], CO” through Google’s Places API Text Search and through Google Maps for Denver, Aurora, Arvada and Lakewood. Only three of twelve Maps top-three positions matched the API exactly; Maps’ #1 was the API’s #5 in Denver and #7 in Aurora. Two service-area businesses that Maps ranks #12 and #15 were absent from the API, one even when searched by its exact name. A rank tracker built on the Places API is not tracking Google Maps.
If you track local rankings with Google’s Places API, you are not tracking Google Maps. We asked both the same question, “tree service in <city>, CO”, for four Denver-area cities on 25 September 2026. The two lists agreed on who exists. They did not agree on the order, and the API could not find two businesses that Maps ranks.
What we compared #
The Places API column is Text Search (New), the places:searchText endpoint, with rankPreference: RELEVANCE, a location bias of an 8 km circle around the city centre, and up to 20 results. The Google Maps column is the public Maps results page for the same query with the map centred on the same city, read signed out, with sponsored results skipped. Maps was read at about 10 AM Mountain Time and the API later the same afternoon.
Same words, same city centre, same day. If the two sources ranked the same way, the lists would line up. They did not.
The top of Maps, and where the API put the same businesses #
| City | Google Maps #1 | Maps #2 | Maps #3 |
|---|---|---|---|
| Denver | API #5 | API #2 | API #13 |
| Aurora | API #7 | API #1 | API #6 |
| Arvada | API #1 | API #6 | API #3 |
| Lakewood | API #4 | API #1 | API #3 |
Read the Denver row: the business Maps shows first is fifth in the API, and Maps’ third is thirteenth. In Aurora, Maps’ first result is seventh in the API. Only three of twelve top-three slots matched exactly (Arvada #1 and #3, Lakewood #3), and no city had the same top three in the same order. Every Maps top-three business did appear somewhere in the API’s list, so the API is a fair census of who competes. It is not a ranking of who wins.
The businesses the API could not find #
Two of the businesses we track are service-area businesses: they serve customers at their homes and hide their street address on their Business Profiles. Here is what each source said about them.
| Business | Google Maps | Places API, city query | Places API, exact business name |
|---|---|---|---|
| Tree service, Denver | #12 for “tree service in Denver” | Not in the 16 results | Not tested |
| Tree service, Arvada | #15 for “tree service in Arvada” | Not in the results | Not returned; 14 other businesses came back |
The second row is the one to remember. We searched the API for the Arvada business’s exact name, as it appears on its profile, and got fourteen other tree companies and not the business itself. The profile is live and reviewed, and Maps ranks it on page one. Text Search does not return it. A tracker that finds businesses by searching for them would report this one as not ranking anywhere, when it is fifteenth in the list searchers actually see.
Neither business was missing from Google. Both were missing from one way of asking Google.
Why this matters if you sell or buy rank tracking #
- A rank from the API is a rank in a different list. A tool that reports “#1 in Aurora” from Text Search can be describing a business that searchers see second, or seventh.
- Service-area businesses can vanish. If your tracker searches by city or name, a hidden-address profile can read as “not ranking” while it sits on page one of Maps.
- Moves are only comparable within one source. Compare Maps readings only with Maps readings, and label any API reading as one. Mixing them manufactures rank changes that never happened.
How should local rank be reported? #
Read positions from Google Maps itself. If a position has to come from the Places API, label it as an API position and never chart it against Maps readings. Report a business at #12 as #12 rather than folding it into “not top 10”, which is where service-area businesses tend to disappear. That is how we now report the businesses we track, and it is the question to ask any tracking vendor.
What the Places API is still good for #
None of this makes the API useless. It returned every business that Maps put in a top three, so it is a sound way to build a list of competitors in an area. It can return structured fields — place ID, categories, website, rating and review count — that are tedious to read from a rendered page. And it is the documented, supported way to get that data. Use it to learn who is in the market. Use Maps to learn who is winning it.
How to check your own tracker in ten minutes #
- Pick one query and one city your tool reports on.
- Open Google Maps signed out, search the same query, and write down the first ten names.
- Compare them with your tool’s list. If the top three differ, ask the vendor where its positions come from.
- If you run a service-area business, search the API or your tool for your exact business name. If you are missing, your tool is not measuring you at all.
What this does not show #
- Four cities, one trade, one day. It shows the two orders differ; it does not measure by how much across the country.
- Google does not document how Maps ranks results or how Text Search’s relevance ranking is built, so we make no claim about why they differ.
- Maps varies with location, device and personalisation. Our reading is one signed-out vantage near each city centre.
Related: what Google’s Maps provider list contains and where Google and AI assistants get business data. For the listing checks a service-area business should run, see the NAP consistency guide.
Share this finding:LinkedInXEmailFollow Emmanuel on LinkedIn
Related findings
The main product
Found this on your own site? We fix it for $100.
Scan free to see where you stand. The fix is one site, every finding implemented and re-measured, with a sealed before and after.
Free browser extension
Check this on any site you open, without leaving the page.
CrawlCheck for Chrome grades every site you visit A–F and shows, from your own browser, what search engines and AI assistants are actually served. Free, no account.
Write for the library
Measured something yourself? Submit an article.
Send your finding, the data and the method. A person reads every submission and replies by email; accepted articles are published under your name with a link to your study. Free to submit, and placement is never for sale.
How it works · a reply within about a week
Spotted a mistake or a bug on this page? Report an error. Confirmed errors are fixed and logged on the corrections page.
Comments
Comments are read before they appear. Nothing is published automatically, and no account is needed. An AI agent with a published signing key can post without the queue: it signs the request and the signature is checked against its own domain (how). Those appear at once, marked verified.
Writing about this? Facts, live figures and marks — every number on that page is dated and traceable to a scan.