TL;DR:
- Use JSON-LD on each location page, not sitewide.
- Pick the most specific LocalBusiness subtype you can.
- Include NAP, hours, geo, images, sameAs, and @id.
- Validate with Google’s Rich Results Test. Eligibility is not guaranteed.
- Keep markup synced with on-page content and your Business Profile.
This guide helps owners, marketers, and developers add LocalBusiness schema to a website in 2025. It covers a single location, multi-location, and department setups. All examples use JSON-LD, which Google recommends.
What “local business schema” means
Local business schema is structured data that describes a physical business. It tells search engines your name, address, phone, hours, and more. Google can use it to enrich Search and Maps, for example with a knowledge panel or business carousel. It does not replace a Google Business Profile. It supports it with clean, machine-readable data.
Before you start: collect the facts
Gather these details for each location:
- Official business name, as customers see it.
- Canonical URL for the location page.
- Street address and country code.
- Primary phone in international format.
- Latitude and longitude.
- Regular hours and any special hours.
- High quality images of the storefront, interior, and logo.
- Social profile URLs.
- Preferred price range, for example “$” to “$$$$”.
Match these facts to what is on the page. Your markup must reflect visible content. This is required by Google’s structured data guidelines. It also keeps you eligible for rich results.
Step-by-step: add LocalBusiness schema
Step 1: Choose the most specific type
Start with the most specific subtype under LocalBusiness, for example Restaurant, AutoRepair, Dentist, or Store. If none fit, use LocalBusiness. You can see the full hierarchy and properties at Schema.org.
Step 2: Use JSON-LD
Place a single <script type=”application/ld+json”> block on the page. JSON-LD is the preferred format in Google’s guidelines.
Step 3: Create a stable @id for the entity
Use a fragment URL like https://www.example.com/locations/downtown#localbusiness. This becomes the unique ID for the location. Reuse this value anywhere you reference the entity.
Step 4: Add core properties
Include name, url, image, telephone, address, geo, and openingHoursSpecification. These align with Google’s Local Business documentation and help Search show key facts.
Step 5: Add supporting properties
Add sameAs for social profiles, priceRange, and any type-specific fields such as servesCuisine for restaurants or acceptsReservations. See the schema type for more options.
Step 6: Paste the JSON-LD on the correct page
Add the script to the specific location page, not your home page. For multiple branches, place a tailored script on each branch page.
Step 7: Validate
Run the page in Google’s Rich Results Test. Fix errors and warnings. Being valid makes you eligible for rich results, but display is not guaranteed.
Step 8: Keep it in sync
If your hours, phone, or address change, update the page and the JSON-LD in the same release. Mismatches reduce trust and can cause loss of eligibility.
Testing and monitoring
1) Run the Rich Results Test
Paste the URL or code. Fix all errors first, then review warnings. A valid page is eligible for rich results. Display is controlled by Google and is not guaranteed.
2) Check coverage in Search Console
Inspect the location URL. Confirm it is indexed. Watch for structured data issues in the Enhancements and Page indexing reports. Eligibility requires Googlebot access. Do not block pages with robots.txt or noindex.
3) Keep content and schema aligned
If you change hours for a holiday, update the page and JSON-LD together. Consider specialOpeningHoursSpecification for temporary hours. Property options live on Schema.org.
Common mistakes to avoid
- Using Organization instead of a LocalBusiness subtype when you have a storefront.
- One JSON-LD block reused across many different location pages.
- Hours that differ between your page, JSON-LD, and Business Profile.
- Images that are tiny or return 404.
- Missing or unstable @id values.
- Marking up reviews you control for your own business. Google does not show self-serving review rich results for LocalBusiness or Organization.
Quick setup checklist
Step | What to do | Tool or note |
1 | Pick the best subtype | Schema.org type list |
2 | Build JSON-LD with core fields | Code editor |
3 | Add a stable @id | Use a fragment URL |
4 | Paste on each location page | Do not reuse sitewide |
5 | Match on-page content | Review NAP and hours |
6 | Add images and social links | Use absolute URLs |
7 | Validate for rich results | Google Rich Results Test |
8 | Ship and request indexing | Search Console |
9 | Monitor and fix issues | Search Console reports |
10 | Update schema with changes | Keep content in sync |
Why it matters
Clean local business schema helps Search and Maps understand your entity. It supports accurate hours, locations, and actions. That improves how often the right users find you, and it reduces confusion when details change. Google’s guidelines make clear that validity helps eligibility, but rich results are never guaranteed.
Sources:
- Google Search Central, Local Business structured data, https://developers.google.com/search/docs/appearance/structured-data/local-business, accessed 2025-09-10
- Google Search Central, General structured data guidelines, https://developers.google.com/search/docs/appearance/structured-data/sd-policies, accessed 2025-09-10
Schema.org, LocalBusiness type reference, https://schema.org/LocalBusiness, accessed 2025-09-10