Generate LocalBusiness JSON-LD with a proper PostalAddress, phone, website, and price range. The inline validator checks the required fields and warns on the recommended ones, so the block is complete before it reaches your site.
{
"@context": "https://schema.org",
"@type": "LocalBusiness"
}name LocalBusiness is missing required property "name".address LocalBusiness is missing required property "address".url LocalBusiness is missing recommended property "url". Adding it improves rich result eligibility.telephone LocalBusiness is missing recommended property "telephone". Adding it improves rich result eligibility.priceRange LocalBusiness is missing recommended property "priceRange". Adding it improves rich result eligibility.image LocalBusiness is missing recommended property "image". Adding it improves rich result eligibility.openingHoursSpecification LocalBusiness is missing recommended property "openingHoursSpecification". Adding it improves rich result eligibility.geo LocalBusiness is missing recommended property "geo". Adding it improves rich result eligibility.Copy the snippet first, then paste it into either tool's code tab.
Paste this inside your page's <head> (or anywhere in the HTML). Then check it with the JSON-LD validator.
Local rankings run mostly on your Google Business Profile, proximity, and reviews. LocalBusiness markup on your own site plays a supporting role: it confirms your name, address, and phone in a machine-readable way, connects your website to the map listing, and hands the same facts to Bing, Apple Maps crawlers, and AI assistants that answer “plumber near me” questions. It is cheap insurance for data consistency, which is precisely the thing local search punishes you for getting wrong.
The block belongs on your contact page or location page, the URL where a visitor would find the address anyway. Put the exact address string you use on your Business Profile into the PostalAddress fields; creative abbreviations (“St.” here, “Street” there) are how the same shop ends up looking like two different businesses to a matching algorithm.
Beyond the required name and address, telephone and url are the two we would never skip. priceRange is a plain string like $$ and shows up in some result treatments. Opening hours are worth adding when they are stable; a markup block claiming you open at 9 while the door says 10 is worse than no hours at all. Geo coordinates help in rural areas where address geocoding is unreliable. Add what is true and maintained, skip what is not.
When the block is done, copy it with the script-tag toggle on and paste it into the page template. Then run the live URL through Google's Rich Results Test, or check the raw JSON in our JSON-LD validator. If your business also has a broader company presence, a separate Organization block on the homepage covers the brand side.
They do different jobs. Your Business Profile powers the map pack; LocalBusiness markup on your site confirms and enriches that data, and it is readable by every other search engine and AI assistant, not only Google. Keeping name, address, and phone identical in both places is the part that actually matters.
Name and address. The address should be a full PostalAddress with street, locality, region, postal code, and country. Telephone, URL, price range, image, opening hours, and geo coordinates are recommended and each one improves how complete your listing data looks to crawlers.
Yes, and it helps. Schema.org defines dozens of subtypes: Restaurant, Dentist, Plumber, HairSalon, and so on. Generate the block here, then change the @type string to the closest subtype. All LocalBusiness properties remain valid on subtypes.
Give each location its own page with its own LocalBusiness block, each with the location's real address and phone number. One block listing the head office does not help someone searching in another city, and duplicate blocks with identical addresses across pages look like boilerplate.
Only if the reviews were collected and displayed by an independent source. Google treats ratings a business publishes about itself as self-serving and excludes them from review snippets, the same rule that applies to Organization markup. Reviews on your Google Business Profile already feed the map pack on their own.
TWR adds AggregateRating schema to your public review page automatically — free. Collect verified reviews inside your app and let us handle the structured data.