Choose the most specific type
Schema.org offers dozens of LocalBusiness subtypes, such as Plumber, Electrician, Dentist, AccountingService, LegalService, HairSalon and ProfessionalService. Pick the most specific one that truly fits. If nothing matches, use LocalBusiness itself. Using one accurate type is better than listing many loosely related ones.
Core properties
Include name, url, telephone, and address built from street, locality, region, postal code and country. Add an image or logo, and priceRange only if you can state it sensibly. Include openingHoursSpecification if your hours are fixed, and keep it current with holidays handled in your listing profiles.
Everything in your markup should match what a visitor sees on the page and what appears in your business profiles. Mismatches create doubt.
Service area businesses
If you travel to customers and do not receive walk-in visitors, do not publish a street address you do not want shown. Use areaServed to name the cities or regions you cover. Make sure the markup agrees with your Google Business Profile settings, where a hidden address is possible.
Avoid listing dozens of places you do not truly serve.
Connecting related information
Add sameAs links to official profiles such as your Google Business Profile, Facebook page, LinkedIn and trade directories. If you have a legal or brand name different from the trading name, include alternateName. Use an @id so other markup on the page, such as services or reviews, can refer back to the same business.
Do not stuff in keywords or invent awards, ratings or credentials.
Add it and test it
JSON-LD is the format Google recommends: a script block in the head or body. Many SEO plugins generate it from settings; custom code works too. Put the full version on the home or contact page, rather than repeating it everywhere.
Check it in Google's rich results checker plus the schema.org validator. Fix errors, then review warnings. Recheck when your hours, phone or address change, and after theme or plugin updates, since these can output conflicting duplicates.
Mistakes that make markup unreliable
Frequent errors include a phone number that differs from the footer, hours that changed but were never updated in the code, markup for a location that does not exist, duplicate blocks from both a theme and a plugin, and fields filled with marketing slogans. Search engines compare structured data against everything else they know, so inconsistencies undermine it.
Make one person responsible for updating the markup whenever business details change, and add it to the list of things you check when you move, change numbers or alter hours.
If you operate several locations, give each its own page and its own markup with that location's details, rather than listing every address in one block. That keeps each location clear and avoids confusing which phone number belongs where.
Keep the structured data tidy rather than exhaustive. A short, accurate block that matches your visible details will do more good than a long one filled with optional properties that nobody maintains.
Common questions
Will LocalBusiness schema give me rich results?
Not usually. Its main value is clarity and consistency for search engines, not special displays.
Do I need a developer?
Not always. Plugins and generators help, but check the output for accuracy.
Should every page include it?
Put it on the page that represents the business, usually the home or contact page.
This guide is general information. Search engines change how they work and their guidelines; check Google's current documentation for your situation. Nobody can guarantee a ranking.