Skip to content

Schema.org for local businesses: how to use structured data properly

Clieni Media editorial team · · 6 min read

Structured data from schema.org describes your business in machine-readable form: type, name, address, phone, opening hours and profiles. For local businesses the foundation is LocalBusiness or a fitting subtype such as Restaurant, Dentist or Plumber, added as JSON-LD and tested with Google's Rich Results Test and the Schema Markup Validator. This lets search engines and AI assistants match your details unambiguously.

What is structured data and why do local businesses need it?

A person looking at your contact page can tell immediately which line is the address and which is the phone number. A machine has to guess. Structured data removes the guesswork: the source code states, in a fixed vocabulary, that this is a café, what it is called, where it is, when it is open and which number to call. This vocabulary is called schema.org and is jointly supported by the major search engines.

This matters especially for local businesses, because almost every search has a location attached. Someone looking for a dentist in Schöneberg or a plumber in Neukölln gets results assembled from many sources: websites, Google Business Profiles, directories. AI assistants such as ChatGPT, Gemini or Perplexity work in a similar way. The more clearly your website supplies its own details, the lower the risk that they get mixed up or reported incorrectly.

Many businesses still have a lot of room for improvement here. In our study “AI visibility of Berlin businesses 2026”, covering 579 Berlin business websites selected via OpenStreetMap and checked on 6 October 2026, 57.5 % had no structured data at all. Only 31.1 % described the business as a schema.org type, and only 10.4 % included address and phone number in their structured data.

Which schema.org type fits your business?

The base type for every business with a location or a service area is LocalBusiness. Below it are many more specific subtypes. Always choose the most precise type that matches your business, because it says more than the general one. A subtype inherits all properties of LocalBusiness, so you lose nothing.

If there is no fitting subtype, LocalBusiness itself is the right choice. A general, correct type is better than a specific, wrong one. If you offer several things, such as a café with a bakery, you can also list two types.

  • Food and drink: Restaurant, CafeOrCoffeeShop, Bakery, BarOrPub, FastFoodRestaurant (all subtypes of FoodEstablishment).
  • Health: Dentist, Physician, Optician, Pharmacy, MedicalClinic.
  • Legal and finance: LegalService for law firms (schema.org now recommends it over the older type Attorney), AccountingService, FinancialService.
  • Trades and construction: Plumber, Electrician, RoofingContractor, HousePainter, GeneralContractor, HVACBusiness.
  • Other services: HairSalon, BeautySalon, AutoRepair, DryCleaningOrLaundry, RealEstateAgent, ProfessionalService.

Which properties should you include?

For local businesses, Google lists only two required properties: name and address. Everything else is recommended, but that is what makes the data genuinely useful. What matters is that every detail matches what is visible on the page, in your legal notice and in your Google Business Profile.

  • name: the name of your business, exactly as on your sign, legal notice and Google profile.
  • address: a PostalAddress with streetAddress, postalCode, addressLocality and addressCountry.
  • telephone: your phone number, ideally in international format, such as +49 30 0000000.
  • openingHoursSpecification: opening hours per weekday with opens and closes in HH:MM format.
  • geo: latitude and longitude as GeoCoordinates, so the location is unambiguous.
  • url: your website address, ideally the home page or the page for that location.
  • sameAs: links to your official profiles, such as Instagram, Facebook or industry directories.
  • Optional: priceRange (for example € or €€), image, servesCuisine and menu for restaurants, areaServed for businesses that travel to their customers.

Example: JSON-LD for Café Beispiel in Berlin

JSON-LD is the format Google recommends. It sits in the source code as a separate block and does not have to be woven into the visible HTML, which makes maintenance and troubleshooting easy. The following example describes a fictional café; all data are placeholders.

The block goes into a script element with the type application/ld+json. It can sit in the head or the body; both are read. For a business with one location, it belongs on the home page and the contact page. With several locations, each location page gets its own block with that location's details.

{
  "@context": "https://schema.org",
  "@type": "CafeOrCoffeeShop",
  "name": "Café Beispiel",
  "url": "https://www.cafe-beispiel.example",
  "telephone": "+49 30 0000000",
  "image": "https://www.cafe-beispiel.example/images/cafe.jpg",
  "priceRange": "€",
  "servesCuisine": ["Coffee", "Cake", "Breakfast"],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Beispielstraße 1",
    "postalCode": "10000",
    "addressLocality": "Berlin",
    "addressCountry": "DE"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 52.5200,
    "longitude": 13.4050
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "09:00",
      "closes": "17:00"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/cafebeispiel.example",
    "https://www.facebook.com/cafebeispiel.example"
  ]
}

How do you test your structured data?

Once the markup is in place, check every page that carries structured data. Two free tools complement each other here. Google's Rich Results Test shows whether Google can read the data and whether it is eligible for enhanced search results. It only checks the types Google itself supports, though. The Schema Markup Validator at validator.schema.org checks the entire schema.org vocabulary, independent of any particular search engine.

Ideally, test the live URL rather than just a copied code snippet. That way you see whether the block is actually delivered, including when it is inserted by JavaScript. After launch, Google Search Console shows in its enhancement and structured data reports whether errors occur across many pages. And if you would rather not start from scratch, our free schema.org generator creates a first JSON-LD block that you can then review and adjust.

Keep in mind: valid structured data does not guarantee any particular appearance in search. It ensures that your details are understood unambiguously. What gets displayed is up to the search engine.

Which mistakes should you avoid?

Most mistakes are not typos in the code but contradictions. Structured data only works when it matches the visible page and every other source. These are the issues we come across most often in reviews:

  • Mismatched details: a different business name, an old address or a phone number that does not match the legal notice and Google profile.
  • Duplicate blocks: a plugin, the theme and a manually added block all describe the same business with different data.
  • Wrong type: Organization instead of LocalBusiness for a business with premises, or a subtype that does not fit what you offer.
  • Outdated opening hours: holiday or summer hours changed, structured data not.
  • Invisible content: details that exist only in the JSON-LD and nowhere on the page, such as reviews or services.
  • Self-awarded reviews: Google does not show your own star ratings in LocalBusiness markup as stars, so they achieve nothing.
  • Wrong formats: times without a colon, weekdays in German instead of the English schema.org values, coordinates with a comma instead of a decimal point.

How does structured data relate to AI visibility and llms.txt?

Structured data is one of the most reliable foundations for search engines and AI assistants to classify your business correctly. It works together with other building blocks: consistent business details across the web, a well-maintained Google Business Profile, clear copy with quotable key statements and, optionally, an llms.txt in the root directory. llms.txt is a proposal, not a standard, while structured data has been evaluated for years. If you only have time for one thing, start with schema.org.

The free website check at Website check shows whether your website delivers structured data and whether name, address and phone are complete. It checks these and other points within a few minutes.

Frequently asked questions

Which schema.org type is right for my business?

The most precise subtype of LocalBusiness that matches what you offer, such as Restaurant, Dentist, Plumber or LegalService. If no subtype fits, use LocalBusiness itself.

Where do I add the JSON-LD?

In a script element with the type application/ld+json, in the head or body of the page. With one location it belongs on the home page and contact page; with several locations, on each location page.

Does structured data improve rankings?

It does not guarantee better positions or any particular appearance. It ensures that search engines and AI assistants understand your details unambiguously, which makes it an important foundation for local visibility.

How do I check whether my structured data is correct?

Use Google's Rich Results Test for the types Google supports and the Schema Markup Validator at validator.schema.org for the full vocabulary. Ideally, test the live URL.

Free · under a minute

How visible is your website?

18 checks on tech, Google and AI assistants. No sign-up.