Multistead / Local business schema
Guide and generator
Local business schema: a guide and a free JSON-LD generator
Local business schema is structured data, usually JSON-LD in the page's code, that tells search engines exactly what a location is: its name, type, address, coordinates, phone, hours and the brand it belongs to. It doesn't rank a page by itself, but it removes guesswork, and for brands with many locations it is how Google ties each location page to the right business. Below: which type to use, which properties matter, how to mark up multiple locations, and a generator that writes the code for you.
What LocalBusiness schema does, and what it doesn't
LocalBusiness is a schema.org type for "a particular physical business or branch of an organization." Adding it to a location page:
- confirms the page is about one specific place, which helps on sites with many similar location pages;
- gives Google machine-readable hours, address and coordinates that should match the Business Profile;
- links the location to its parent brand, so the brand and its branches are understood as one entity.
What it won't do: Google's map pack ranks Business Profiles, not web pages, so schema won't lift a location in Maps on its own. Treat it as hygiene that supports the page and profile, not as a ranking trick. Google documents the markup in its local business structured data guide.
Which LocalBusiness subtype to use, by vertical
Always use the most specific type that is true. Each subtype inherits every LocalBusiness property, so you lose nothing by being specific.
| Business | Schema type | Notes |
|---|---|---|
| Medical clinic, urgent care, med spa with medical oversight | MedicalClinic | Also a MedicalOrganization. A med spa without medical services fits DaySpa or HealthAndBeautyBusiness better. |
| Dental practice | Dentist | Mark up individual dentists separately with Person if you show bios. |
| Physical therapy | Physiotherapy | A MedicalBusiness subtype. |
| Gym, fitness studio | HealthClub or ExerciseGym | HealthClub is both a health and beauty business and a sports location. |
| Day spa, IV or wellness lounge | DaySpa or HealthAndBeautyBusiness | There is no IV-therapy type; use MedicalClinic if clinicians treat patients on site. |
| Hair salon | HairSalon | BeautySalon and NailSalon also exist. |
| Plumbing, HVAC, electrical, roofing | Plumber, HVACBusiness, Electrician, RoofingContractor | All are HomeAndConstructionBusiness subtypes. Use areaServed for the service area. |
| General contractor | GeneralContractor | Also under HomeAndConstructionBusiness. |
| Restaurant, cafe | Restaurant, CafeOrCoffeeShop | FoodEstablishment subtypes support servesCuisine and menu. |
| Auto repair | AutoRepair | An AutomotiveBusiness subtype. |
| Childcare | ChildCare | |
| Real estate office | RealEstateAgent | |
| Retail store | Store or a subtype | For example PetStore, HealthAndBeautyBusiness. |
| Nothing fits | LocalBusiness | Correct and valid; just less specific. |
Required and recommended properties
Google's local business documentation lists two required properties and a longer recommended set. In practice, a location page should carry all of the following, and every value must match what's visible on the page and on the Business Profile.
| Property | Status | What to put in it |
|---|---|---|
name | Required | The location's name exactly as on its signage and Business Profile |
address | Required | A PostalAddress with street, city, region, postal code and country |
url | Recommended | This location page's URL, not the home page |
telephone | Recommended | The location's number, with country code |
geo | Recommended | GeoCoordinates; Google asks for at least five decimal places |
openingHoursSpecification | Recommended | Days with opening and closing times; add special hours for holidays |
priceRange | Recommended | A short range such as $$ or $40–$150 |
image | Recommended | A real photo of the location |
@id | Best practice | A stable identifier such as the page URL plus #location |
parentOrganization | Best practice for brands | A reference to the brand's Organization |
areaServed | Optional | Towns or ZIP codes for service-area businesses |
sameAs | Optional | The location's own social or directory profiles |
Local schema markup for multiple locations
Brands with many locations should use one pattern everywhere:
- One Organization, once. On the home page, describe the brand as an
Organizationwith a stable@id, for examplehttps://brand.com/#organization, plus its name, logo and URL. - One LocalBusiness per location page. Each location page carries its own LocalBusiness (or subtype) with its own
@id, such ashttps://brand.com/locations/austin-south/#location. - Connect them. Each location points to the brand with
parentOrganizationreferencing the Organization's@id. You'll also seebranchOfin older examples; schema.org now marks it as superseded byparentOrganization, so use the latter. - Don't list every location on the home page. A locations page can link to them, but the full LocalBusiness markup belongs on each location's own page.
A minimal example for one location of a physiotherapy group:
{
"@context": "https://schema.org",
"@type": "Physiotherapy",
"@id": "https://example.com/locations/austin-south/#location",
"name": "Example Physio Austin South",
"url": "https://example.com/locations/austin-south/",
"telephone": "+1-512-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Example Rd",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78745",
"addressCountry": "US"
},
"geo": { "@type": "GeoCoordinates", "latitude": 30.21001, "longitude": -97.79102 },
"parentOrganization": { "@id": "https://example.com/#organization" }
}
The address and phone above are placeholders; use your own.
Common local business schema mistakes
- The same LocalBusiness block on every page. Site-wide footer markup with the head office's address tells Google every page is about one place.
- Data that doesn't match the page or profile. Old hours or a different phone number in the schema than on the page undermine trust in both.
- Self-serving review markup. Adding
aggregateRatingwith your own reviews to your own LocalBusiness won't earn star snippets; Google doesn't show review rich results for businesses reviewing themselves. - Marking up content that isn't on the page. Schema should describe what visitors can see.
- A generic type when a specific one exists, such as
LocalBusinessfor a dental practice. - Coordinates with too few decimals, or copied from the city center rather than the entrance.
- Hand-edited JSON that breaks. One missing comma invalidates the whole block. Test every template change in Google's Rich Results Test or the Schema Markup Validator.
Schema across 50 or 500 locations
Writing one block is easy. Keeping 200 blocks correct while hours, phones and addresses change is not. The reliable approach is to generate schema from the same data that fills the visible page, so a change to the hours updates both at once and they can never disagree. That's how Multistead does it: every location page gets titles, descriptions, LocalBusiness schema and a sitemap entry generated from the location's real details, with the brand linked as the parent organization, and a per-location checklist score flags pages that are missing data. See the local SEO checklist for everything else a page needs, and SEO for multiple locations for site structure.
Pricing is published: $249, $449 or $649 per location per month, billed annually. If you only have one or two locations, the generator above is all you need.
Questions
Does local business schema help rankings?
Not directly in the map pack, which ranks Google Business Profiles. It helps search engines understand and trust each location page, which supports the page in regular results and keeps details consistent with the profile.
Where should LocalBusiness schema go on a multi-location site?
On each location's own page, describing only that location. The brand's Organization markup goes on the home page, and each location links to it with parentOrganization.
Should I use branchOf or parentOrganization?
Use parentOrganization. schema.org marks branchOf as superseded by parentOrganization, although older examples still use it.
Is JSON-LD better than microdata for local schema?
Google supports both, but recommends JSON-LD because it sits in one block, separate from the page's HTML, which makes it easier to generate and maintain across many pages.
How do I test my local business schema?
Paste the page URL or the code into Google's Rich Results Test or the Schema Markup Validator. Both are free and show errors and warnings property by property.