squirrelscan
GitHub

What is NAP in local SEO? Consistency and checks

NAP consistency means a business's name, address and phone number read the same across its pages, its structured data and its listings. How it is checked.

NAP consistency means a business’s name, address and phone number are written the same way everywhere they appear: across the site’s pages, in its LocalBusiness structured data and in its listings elsewhere.

NAP is local search shorthand rather than a standard, and no search engine publishes a NAP score. What the documentation does say is concrete. Google’s local business structured data asks for the address as a PostalAddress and the phone as telephone, and schema.org defines the parts of an address. A business that publishes those details has an interest in publishing one version of them.

Category: Local SEO

Why it matters

Inconsistency creeps in quietly. The header has an old phone number, the footer has the new one, and the contact page has a third format. A suite number appears on one page and not another. A branch page shows its own number, which is correct, but the main number differs between templates. For a reader, two numbers raise the question of which one works. For anything that reads the site to build a picture of the business, it is a contradiction to resolve.

How squirrelscan checks it

local/nap-consistency runs across the crawl. It takes each page’s primary phone number, from its first tel: link and then the telephone of its JSON-LD, and its postal address from JSON-LD address, and compares them across pages. A different number on some pages fails, and the same number written in several formats warns. It treats two numbers as the same when their last seven digits match. Phone and address are judged separately, each needing 10 pages that declare it and 70% agreement, so a multi-location site whose pages each show their own branch is not judged. It also notes whether any page has LocalBusiness or Organization markup, and whether the contact page carries a tel: or mailto: link. schema/local-business checks the address parts in the markup. eeat/physical-address looks for address markup and runs on sites the audit classifies as local businesses. It reads structured data only, so an address printed in the footer as plain text is not detected.

squirrelscan only sees the site. It does not check business listings or directories.

RuleWhat it flagsSeverity
NAP consistency: same name, address and phone everywhereOne phone number or address written several ways across a site. squirrel finds the site norm and lists every page that disagrees with it.warning
LocalBusiness schema: required name, address or areaServedLocalBusiness markup with no name, an incomplete PostalAddress, or neither an address nor a service area. squirrel checks all three.warning
Physical address: PostalAddress and LocalBusiness schemaA real address is a trust signal a visitor can verify. squirrel looks for address structured data across the crawl.info

How to fix it

Render the contact block from one source and include it in the layout:

<address>
  Acme Coffee<br />
  1 Market Street, Suite 400<br />
  San Francisco, CA 94105<br />
  <a href="tel:+14155550142">(415) 555-0142</a>
</address>

Use the same written forms in the header, footer, contact page and LocalBusiness JSON-LD, and keep the tel: href in E.164 form (the NAP fix). Mark the address up as a PostalAddress on the node that owns it (the address fix, the LocalBusiness fix). Then make your listings elsewhere match the site.

Run the check

squirrel audit https://example.com --rule-include local/nap-consistency,schema/local-business,eeat/physical-address

A signed-out local audit costs nothing.

  • LocalBusiness schema: LocalBusiness structured data with address, opening hours and geo coordinates for a physical business.
  • Geo meta tags: Legacy geo.region, geo.placename and geo.position meta tags that state a page’s location; not to be confused with GEO, generative engine optimization.

References

Type to search…

↑↓ navigate↵ openesc close