Local business schema basics
Structured data does not replace good content or a complete Google Business Profile. It is a machine-readable description of the same facts you already publish for customers.
Schema.org is a shared vocabulary that search engines, including Google, Bing, and Yandex, understand. For a shop, clinic, restaurant, or service business with a real-world location, the relevant family of types starts at LocalBusiness. That type inherits from Organization and Place, which is why a single JSON-LD block can describe a name, a postal address, a telephone number, a geographic point, and opening hours together.
JSON-LD, or JavaScript Object Notation for Linked Data, is the format Google recommends. You place a <script type="application/ld+json"> tag in the page, usually in the <head> or at the end of the body, and fill it with a JSON object. The page still reads the same way for people. Search engines read the script. Microdata and RDFa remain valid alternatives, but they are harder to maintain because the markup is mixed into the HTML. A single JSON-LD block is easier to review, copy, and test.
Choose the most specific type you can stand behind
A generic LocalBusiness object is valid. A more specific subtype is usually better, because it tells a crawler what kind of place this is. Schema.org lists many subtypes: Restaurant, Dentist, Plumber, HairSalon, AutoRepair, LegalService, RealEstateAgent, Store, and dozens more. Pick the type that matches the business honestly. If you run a café that also sells retail coffee beans, CafeOrCoffeeShop is still the right primary type. Do not mark a purely online shop as a local business just to chase map results.
If no subtype fits, stay with LocalBusiness. Inventing a type, or stacking several types that contradict each other, helps no one. The official documentation at schema.org/LocalBusiness is the source of truth for property names and expected value types.
Properties that matter in practice
At minimum, include name and a complete PostalAddress: streetAddress, addressLocality, addressRegion where it applies, postalCode, and addressCountry. Country values are more reliable as ISO 3166-1 alpha-2 codes such as US or VN. Add telephone in an international format, and url pointing at the official website, preferably the exact landing page that represents this location.
Opening hours belong in openingHoursSpecification, with one record per day or per repeating pattern, using dayOfWeek, opens, and closes in 24-hour hh:mm form. Overnight hours that close after midnight are allowed; follow schema.org’s guidance rather than inventing a custom string. Coordinates go in a GeoCoordinates node with latitude and longitude. These are optional, but they reduce ambiguity when several businesses share a building or a similar name.
How Google uses this markup
Google may use valid LocalBusiness markup to understand a page and, in some cases, to enhance search features. It will not invent a ranking boost from a snippet alone, and it will ignore or discard markup that contradicts the visible page. The address in the JSON-LD should be the same address a customer can read on the page. Hidden or misleading structured data can violate Google’s structured data policies.
After you add a snippet, test it. Google’s Rich Results Test and the Schema Markup Validator both parse JSON-LD and report missing types, invalid properties, and syntax errors. Fix the errors before you publish. Re-test after a redesign, a move, or a change of hours, because stale markup is worse than no markup: it teaches a crawler the wrong facts.
Common mistakes
The most frequent errors are small and costly. People paste invalid JSON: a trailing comma, curly quotes, or a comment. They mark up a business that is not on the page. They put hours in a free-text string instead of OpeningHoursSpecification. They use a marketing tagline as the name while the Google Business Profile uses the legal or storefront name. They generate markup on a site-wide template so every location page claims the same address.
Treat schema as a structured copy of the page, not as a second, more optimistic version of the business. When the facts on the page, the facts in the snippet, and the facts in public listings agree, you have done the basic job well.
When you are ready to draft a snippet, use the Local Business Schema Markup Generator and then validate the result before it goes live.