If you run a shop, restaurant, salon, or any business with a physical location or a defined service area, search engines can show far more than a blue link for you — opening hours, star ratings, a map pin, a phone number people can tap straight from the results page. All of that starts with LocalBusiness schema, a small block of structured data that tells Google and other search engines exactly who you are, where you are, and when you're open.
What is LocalBusiness schema?
LocalBusiness is a type defined by Schema.org, the shared vocabulary search engines use to understand web page content. Instead of guessing your business name, address, and hours from scattered text on the page, LocalBusiness schema puts that information into a structured, machine-readable format — usually JSON-LD, a small script tag added to your page's HTML.
Search engines use this data to power rich results: knowledge panels, map listings, and enhanced search snippets that show your rating, price range, or hours directly in the results. It's not a ranking factor in the traditional sense, but it does make your listing easier to understand and more clickable, and it's a prerequisite for several types of enhanced local search features.
Why it matters for local SEO
Local search is where a huge share of buying decisions start — someone searches "bakery near me" or "plumber open now" and picks from whatever the results page shows them first. Without structured data, search engines have to infer your business details from unstructured page text, which is slower and more error-prone. With LocalBusiness schema in place, you're handing that information over directly, in the exact format search engines expect.
This matters even more for businesses competing in crowded local categories — restaurants, dentists, gyms, salons — where dozens of nearby competitors are one search away. Clear, valid structured data is one of the few technical levers a local business can pull without redesigning the entire site.
The anatomy of a minimal LocalBusiness block
A valid LocalBusiness JSON-LD object needs surprisingly few fields to be usable. At minimum, search engines expect a type declaration, a business name, a structured address, and a way to contact you:
@type— declares which kind of entity this is.LocalBusinessis the generic type; more specific subtypes are usually better (see below).name— your business's official name, exactly as customers would recognize it.address— a nestedPostalAddressobject with street, city, postal code, and country, rather than one plain text string.telephone— a phone number in a consistent, dialable format, ideally with the country code.
Beyond these four, it's worth adding openingHoursSpecification, geo coordinates, and url whenever you have them — none are strictly required, but each one gives search engines more to work with.
Which LocalBusiness subtype should you use?
Schema.org defines dozens of subtypes under LocalBusiness — Restaurant, Dentist, HairSalon, AutoRepair, Bakery, and many more. Using the most specific subtype that matches your business is generally better than defaulting to the generic LocalBusiness type, since it tells search engines precisely what kind of business you run, which in turn affects which rich result features become available (a restaurant, for example, can additionally show a menu link or price range that a generic local business can't).
If none of the specific subtypes fit, LocalBusiness itself is a perfectly valid fallback — it's better to publish a correct generic type than to force-fit an inaccurate specific one.
Tip
Not sure whether a subtype exists for your business? Look it up on Schema.org's LocalBusiness page and check the list of subtypes there before settling for the generic type.
Common mistakes that break rich results
A few issues show up again and again in LocalBusiness markup:
- Address as a plain string. Search engines expect address components (street, city, postal code, country) as separate fields inside a
PostalAddressobject, not one combined text field. - Opening hours in free text. "Mon-Fri 9-6" as a plain string isn't machine-readable — opening hours need the structured
openingHoursSpecificationformat with actual day and time values. - Inconsistent NAP data. Your Name, Address, and Phone number (NAP) in the schema should match what's shown elsewhere on the page and across your other listings exactly — mismatches undermine trust signals search engines rely on.
- Invalid JSON syntax. A single missing comma or bracket in hand-written JSON-LD can invalidate the entire block silently — it won't throw a visible error on the page, it'll just be ignored by search engines.
Generate your LocalBusiness schema in seconds
Writing valid JSON-LD by hand is easy to get wrong, especially the nested address and opening-hours objects. Our free LocalBusiness Schema Generator walks you through each field — name, address, business type, phone, hours, geo-coordinates — and outputs a ready-to-paste JSON-LD script. Everything runs in your browser; nothing is sent to a server or stored anywhere.
Local Business Schema GeneratorGenerate Local Business JSON-LD structured data for your business.Open the tool