Local search
Local search, and what the audit can actually see
For a business people can visit or ring, the Google listing often decides more than the website does. This part of the report checks the signals on your site that tie the two together, and says plainly which parts it could not verify.
What this category is for
Someone a mile away searches for what you sell. What they get back is a map with a few listings on it, and a tap on one of those is a phone call or a set of directions. Your website's part in that moment is to be tied clearly to your listing. This category checks the ties: what your pages say about where you are, when you are open, and how to ring you.
The premise the module is built on is that for a business people can walk into, the Maps listing often matters more than the website, and that almost no audit tool looks at it. Everything here reads the page a browser already receives. The live listing is a separate matter, and is only checked when a Google Places key is configured.
The checks that need no key
The first check reads the JSON-LD in your page source and looks for a LocalBusiness block; Store, Restaurant, ClothingStore and Organization are accepted as the same thing. Nothing there is the heaviest finding in the category, and it is raised as critical, because that block is how Google ties a website to a Maps listing. Where one exists, three parts of it are read separately: a missing postal address is a warning, a missing openingHoursSpecification is informational, and coordinates count when present but are never held against you when absent.
Then two things a visitor uses directly. A phone number must pass a validator shared with the trust checks: a tel: link is trusted outright, and a number written in the copy needs between 7 and 15 digits, 15 being the ceiling set in ITU-T E.164, and is rejected if it is a date, a decimal, a bare identifier or a run of identical digits. The pattern this replaced matched 9,726 phone numbers on one real shop, which meant the genuine finding never fired and the listing comparison had junk to compare against. An embedded Google map is looked for too, and recorded as informational when absent.
Whether it applies to you at all
Before anything is scored, the analyser decides whether you are a local business. It looks for LocalBusiness schema, a postal address inside it, an embedded map, wording such as visit us, store locator, opening hours, directions or walk-in, and street-address vocabulary: street, road, avenue, plaza, market, block, sector, shop no. If none of that is present, the category is not scored. The comment in the code gives the reason plainly — scoring a SaaS or a remote agency on its Google Maps listing is meaningless, and would unfairly drag its overall score down.
The result in that case is not zero and not low. It is absent. The category is dropped out of the overall average entirely and listed under what could not be measured, with the reason written out. Where it does apply, Local SEO carries a weight of 0.9 in that average, against 1.4 for Performance, SEO and Security.
The listing itself, and the part we may not be able to check
Verifying the listing needs a Google Places API key. With one set, the business is looked up by name and domain, and the answer is read for rating, review count, phone number, website link, opening hours and trading status. The listing's phone is compared with the one on your site on the last nine digits, so formatting and a country code cannot cause a false mismatch. A mismatch is a warning. So is a listing whose website link points somewhere other than your site, and that finding names the address it currently points at.
With no key, the check does not run, and that is recorded as not checked with the reason, never as a fault on your site. It used to be scored as a finding, which took points off every local business we looked at and pinned this category at exactly 64 on every site it applied to: the same four findings every time, one of them ours rather than theirs. A lookup that returns an error or times out is handled the same way, with the status code or the error type written down.
Two thresholds here are ours, not Google's
Fewer than 20 reviews is a warning, and a rating below 4.0 is a warning. Those are lines in our code rather than published Google figures, and the report says so. What to do first is less debatable: put a LocalBusiness block in your page source with name, address, phone and hours, then make the phone number on your site the same number as the one on your listing, and put your opening hours in both places. The embedded map is last. It is informational, and a visitor can manage without it.
What the engine checks here
Each of these is a rule in the code, not a category heading.
- LocalBusiness structured dataEvery application/ld+json block in the page is parsed and searched for a type containing LocalBusiness, or one of Store, Restaurant, ClothingStore and Organization. Absent, it is raised as critical, with the recommendation to add name, address, phone and hours, because that block is how Google links the site to your Maps listing.
- Address, hours and coordinates inside that blockRead as three separate findings. No postal address is a warning, so Google cannot tie the site to a physical location. No openingHoursSpecification is informational, since that property is what lets Google show your hours directly. Coordinates count when present and produce no finding at all when missing.
- A phone number a person could dialA tel: link is trusted outright. A number written in the copy must carry 7 to 15 digits and is rejected if it is a date, a decimal, a bare integer, an identifier fragment or a run of identical digits. Scripts, styles and JSON-LD are stripped before scanning, because those hold machine data no visitor ever reads. None found is a warning.
- An embedded mapDetected from google.com/maps, maps.google or maps.googleapis appearing in the page. Absent, it is informational only: it reinforces the location signal and helps visitors find you, but nothing breaks without it.
- Whether local search applies to this business at allSchema, an embedded map, visit-us wording and street-address vocabulary are counted as local signals. With none of them present the score is returned as unset rather than as a number, at most one informational finding is kept, and the category is dropped from the overall average and reported as not applicable.
- Whether the Business Profile existsA Places text search on the business name plus your domain, with a 25 second timeout, requesting name, address, rating, review count, phone, website, trading status and opening hours. No result is critical: a claimed, complete profile drives calls and directions directly. This runs only when a Places API key is configured.
- Reviews, rating and hours on the listingNo reviews at all is critical. Fewer than 20 is a warning and a rating below 4.0 is a warning, both on thresholds set in our code rather than published by Google. A profile with no opening hours on it is informational.
- NAP consistency and the website linkThe listing phone and the site phone are compared on their last nine digits, ignoring formatting and country prefix. A mismatch is a warning, described in the code as the classic silent local-ranking killer. A listing whose website field points at a different domain is a warning too, and the finding quotes the URL it points at.
Questions
We work remotely and have no premises. Will this count against us?
No. The analyser decides whether you look like a local business before it scores anything, using schema, an embedded map, visit-us wording and street-address vocabulary. With none of those present the category is not scored, is dropped out of the overall average, and appears in the report under what was not measured with the reason. It is not recorded as a low score.
Do you check my actual Google Business Profile?
Only when a Google Places API key is configured for the run. When one is, the report says it was scored on website signals plus the live Business Profile. When there is no key, it says website signals only, and the listing check appears as not checked with the reason and a manual-check line. That gap is ours, not a defect on your site, and it is never scored as one.
Our details are slightly different on Google than on the site. Does that matter?
The phone number does, and it is checked directly: the listing number and the site number are compared on the last nine digits, so different spacing or a country code will not trigger a false alarm, but a genuinely different number is a warning. The website link on the listing is checked as well. Inconsistent details across the web weaken local ranking, so the fix is to make them identical everywhere.
Sources
Public and checkable. Nothing here rests on a number we cannot point at.
- schema.org LocalBusiness — the structured data this check reads
- schema.org openingHoursSpecification
- Google Search Central — local business structured data
- Google — guidelines for representing your business on Google
- Google Places API (New) — Text Search, the lookup used here
- ITU-T Recommendation E.164 — international numbers are at most 15 digits
This is one of fifteen categories. You can read a real report this engine produced on this very site — including the findings it raised against us — or ask for an audit of yours.