Local SEO: The Schema and NAP Basics That Actually Move You
Local SEO comes down to three things a crawler can verify: LocalBusiness or Organization schema carrying a real postal address, name-address-phone details that match exactly everywhere they appear, and a distinct page per location. Everything else — reviews, proximity, Google Business Profile activity — sits on top of that base.
What local SEO actually is
Local SEO is the discipline of being findable by someone nearby who needs what you sell. It's the one discipline that's usually missing entirely rather than merely weak — a site with no address markup anywhere isn't scoring poorly on local, it simply isn't in the running.
That makes it unusually good value. Most SEO work is competitive grinding against everyone else doing the same thing. Local has a finite checklist, and a lot of businesses haven't completed it.
If you don't serve customers in a physical place, skip this. A pure SaaS with no service area gains nothing from pretending otherwise.
The schema that matters
The machine-readable signal is LocalBusiness — or a subtype like
Restaurant, Dentist or LegalService — with
a genuine PostalAddress. Minimum viable version:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme Plumbing",
"telephone": "+91-22-1234-5678",
"url": "https://acmeplumbing.example/mumbai",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Marine Drive",
"addressLocality": "Mumbai",
"addressRegion": "MH",
"postalCode": "400020",
"addressCountry": "IN"
},
"openingHours": "Mo-Sa 09:00-18:00"
}
Use the most specific type that fits. Organization is a valid
fallback and better than nothing, but it doesn't say "you can visit us here",
which is the whole point.
Why NAP consistency is fussy
NAP is name, address, phone. The requirement is that these match character for character everywhere they appear — your site, your Google Business Profile, directories, your invoice footer.
The reason for the pedantry is that engines reconcile listings across sources to decide whether two records describe the same business. Variations create doubt:
- "Suite 4" vs "Ste. 4" vs "#4"
- "Road" vs "Rd"
- Phone with and without country code
- A tracking phone number on the website that appears nowhere else
- Trading name on the site, legal name on the listing
Pick one canonical format, write it down, and use it everywhere. This is boring and it works.
See this on your own site. isaeo audits up to 10 pages free — no card, no trial timer. You get an SEO health score, an AEO score and a prioritised fix list.
Run a free audit →Location pages
One page per location, each with its own address, hours, phone, embedded map and schema. Not one "Locations" page listing twelve branches.
The failure mode is templated near-duplicates: the same 200 words with the city name swapped. That's thin content at scale, and it invites engines to pick one page and ignore the rest. Each location page needs something genuinely local — the actual staff, the parking situation, the neighbourhoods served, local pricing if it differs.
If you have twenty locations and can only write five real pages, write five. Fifteen thin pages are worse than none.
What a crawler can't see
Be clear about the boundary. A crawl verifies your markup, your NAP consistency across your own pages, and whether your location pages are substantive. It cannot see:
- Your Google Business Profile completeness or posting activity
- Review volume, recency and rating
- Third-party citations on directories you don't control
- Proximity — the strongest local ranking factor, and the one you can't change
So treat the crawlable part as the foundation you can actually fix, and the profile-and-reviews work as a separate ongoing track. Both are required; only one is a checklist.
Try it on a site you care about
isaeo detects LocalBusiness and Organization schema across your pages, so you can see which locations are marked up and which are invisible.
Start free — 10 pages, no cardNeed full-site crawls, scheduled audits and white-label reports? Compare plans →
Frequently asked questions
What schema do I need for local SEO?
LocalBusiness, or a more specific subtype such as Restaurant or Dentist, including a full PostalAddress with street, locality, region, postal code and country. Organization is an acceptable fallback but weaker.
What is NAP consistency?
Name, address and phone details matching exactly everywhere they appear — your website, Google Business Profile and directory listings. Abbreviation differences like 'Rd' versus 'Road' create doubt about whether records describe the same business.
Do I need a separate page for each location?
Yes, if each location can support a genuinely distinct page with its own address, hours and local detail. Templated near-duplicate city pages are treated as thin content and can underperform having no location pages at all.