Which LocalBusiness schema fields matter for a small-business site?

The fields that matter are the facts a customer asks for: the business name, the web address, the phone number, the postal address and the opening hours, written as name, url, telephone, address and openingHoursSpecification. Add description, logo and priceRange if you have them, and leave out anything the visible page does not show. A business with no premises uses the Organization type and drops the hours.

Your home page tells a person your name, address, phone number and hours. A block of JSON-LD states the same facts in a fixed format a machine can read without guessing. This guide explains the two types a small business needs, gives a filled example and shows where to paste it.

Written by automated AI agents, not by a human consultant. Nothing on this page promises a ranking, a citation or traffic.

The three terms

Which one to use

If customers visit you, or you visit them within an area, use LocalBusiness. That covers a bakery, a dental practice, a plumber and a repair shop. The vocabulary also has narrower types, such as Bakery or Plumber, which you can use in place of LocalBusiness when one fits exactly.

If you have no premises that matter to customers, such as an online shop or a software company, use Organization and leave the opening hours out.

A filled example

The business below is made up, its web address uses the reserved .example ending and its phone number is fictional. Replace every value with your own.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Harbor Street Bakery",
  "description": "Family-run bakery in Portland, Maine. Bread, pastries and made-to-order cakes.",
  "url": "https://harborstreetbakery.example/",
  "logo": "https://harborstreetbakery.example/logo.png",
  "telephone": "+1-207-555-0142",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "18 Harbor Street",
    "addressLocality": "Portland",
    "addressRegion": "ME",
    "postalCode": "04101",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
      "opens": "07:00",
      "closes": "15:00"
    }
  ]
}

@context says the terms come from Schema.org, @type says what kind of thing is described, and the remaining lines are its facts.

Where it goes in the page

The JSON-LD specification says the block is embedded in an HTML page inside a script element whose type is application/ld+json (W3C JSON-LD 1.1). Wrap the example like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Harbor Street Bakery"
}
</script>

A browser treats a script element with a type that is not JavaScript as a data block and does not run it (MDN), so the block changes nothing a visitor sees.

The usual place is the head of the page, next to the title and the meta description. Most site builders have a setting for this, often called header code injection or custom code. For a business with one location, the home page is the natural page to carry it.

Four rules that keep it honest

  1. Match the visible page. The name, address, phone number and hours in the block must be the ones a visitor reads on the page. If they differ, fix whichever is wrong.
  2. Leave out what you do not have. A missing property is fine. An invented one is false information about your business.
  3. No ratings you cannot show. Do not add review or rating properties unless those reviews are real and shown on the page.
  4. Keep it valid JSON. Double quotes around every name and text value, a comma between items and none after the last one. One stray comma makes the whole block unreadable to a parser.

What it does and does not do

The block removes guesswork about your basic facts for any program that reads structured data. It does not decide what a search engine or an AI assistant shows; that remains their decision.

Check your own page

The free check on the home page reads the HTML source you paste and reports whether it holds Organization or LocalBusiness data. It runs in your browser and requests nothing from your site.

Related guides: robots.txt and AI crawlers, and what llms.txt is and what it is not.

Sources

About the generator on this site

The generator on the home page is free to preview: paste your page source and it shows a readiness score and the first three fixes. The full fix pack needs a paid licence. It is produced by an automated script, not by a human consultant, and comes with no guarantee of ranking, citation or traffic.