Skip to content

Local Business Schema: How to Add Structured Data to Your Site

By Serhat AksoyPublished: 5 min read
Tree of black interlocking blocks linked by glowing lime connections

Local business schema is structured data that describes your business in a standard format search engines can read: name, address, phone number, opening hours and location. It sits in your page's code as a JSON-LD block and removes the guesswork for Google. This guide shows how to add it, which fields to fill in and how to test it, with example code you can adapt.

What schema does

A person reading your page can easily tell which line is the address. A search engine has to infer it from the text. Markup removes that inference and states plainly that "this is the business's address".

Google's introduction to structured data says it supports three formats and recommends JSON-LD. Because JSON-LD sits in a separate script block rather than inside the visible content, it is the easiest option to write and maintain.

It is worth knowing from the start that markup does not guarantee a rich result. Google uses it when it considers it appropriate, and the presentation can vary by query.

AI-powered search experiences can also draw on clear signals like these to understand pages. When your name, address and services are described in machine-readable form, answer engines are less likely to describe you incorrectly. We cover this in our guide to AI search visibility.

Which schema type to choose

LocalBusiness is a general type with more specific types beneath it. Picking the most specific type that fits describes your business more accurately. A few examples:

Business Suggested type
Restaurant, cafe Restaurant, CafeOrCoffeeShop
Hairdresser, beauty salon HairSalon, BeautySalon
Plumber, electrician Plumber, Electrician
Accountancy practice AccountingService
Dental practice Dentist
Law firm LegalService

The full list of types is on the Schema.org LocalBusiness page. If no subtype fits, the general LocalBusiness type is fine.

Black shop model linked by lime threads to floating clock, pin and phone tags

Which fields to fill in

Google's local business documentation lists required and recommended fields separately. The required fields are name and address. Alongside those, we recommend filling in:

  • telephone: in international format, starting with +44 for UK numbers.
  • url: the page for the branch or business.
  • geo: latitude and longitude, to at least five decimal places.
  • openingHoursSpecification: opening and closing times for each day.
  • priceRange: the price level, for example "££".
  • image: the address of a real photo of the business.

Every detail must match the visible page content and your Google Business Profile exactly. Our local SEO checklist explains why that consistency matters.

Example JSON-LD code

The example below is for a fictional cafe in London. Swap in your own details and add it to the head or body of the page:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "CafeOrCoffeeShop",
  "name": "Example Cafe",
  "url": "https://example.co.uk/walthamstow",
  "telephone": "+44 20 0000 0000",
  "priceRange": "££",
  "image": "https://example.co.uk/images/cafe-exterior.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1 Example Street",
    "addressLocality": "London",
    "postalCode": "E17 0AA",
    "addressCountry": "GB"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 51.58300, "longitude": -0.02000 },
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], "opens": "08:00", "closes": "18:00" },
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Saturday"], "opens": "09:00", "closes": "16:00" }
  ]
}
</script>

Times use the 24-hour format. Leave out days when you are closed. If you keep different hours on bank holidays, add them in a separate block with validity dates.

Notes for service-area businesses

Firms that travel to customers, such as plumbers or cleaners, hide their address on Google Business Profile. In that case there is no need to publish a full home address in the markup either. Giving the town and postcode district in the address may be enough.

You can list the areas you cover with the areaServed property, as a list of boroughs or towns. Make sure they match the service area on your profile. Adding an area to the markup alone will not make you visible there.

Other useful schema types

LocalBusiness does not describe the whole site on its own. These types are also useful on a local business website:

  • Organization: on the homepage, with the company name, logo, contact details and social profiles. Add official profile URLs to sameAs.
  • BreadcrumbList: shows where the page sits in the site and can make the URL line in results easier to read.
  • Article and BlogPosting: give author, publication and update dates on blog posts.
  • Service: describes a specific service, its provider and the area served.

Keep expectations realistic for FAQ markup. Since 2023, Google has largely limited FAQ rich results to authoritative government and health sites. The markup is still valid and describes the content, but for most business sites the expandable questions will not appear in results.

For every type, mark up only information that is genuinely on the page. Hidden reviews, invented ratings or prices not shown on the page breach Google's structured data guidelines and can lead to a manual action.

How to add the markup

The method depends on how your site is built:

  1. WordPress: most SEO plugins take local business details from a settings screen and generate the code automatically.
  2. Shopify, Wix, Squarespace: add the script block in theme settings or a custom code area.
  3. Custom-built site: your developer can read the details from a configuration file and add them to each location page automatically.

Whichever method you choose, make sure the code appears only on the relevant page. Adding the same LocalBusiness block to every page is common but unnecessary.

Testing and fixing errors

Test the markup before and after it goes live. Two tools do the job: Google's Rich Results Test and the Schema.org validator. The first checks features Google supports; the second checks general validity.

A single lime test tube in a black rack beside a glowing tick

Common mistakes include:

  • Address parts merged into a single line; street, town and postcode belong in separate fields.
  • Phone numbers without the country code.
  • Coordinates written with commas; the decimal separator must be a full stop.
  • Information in the markup that does not appear on the page.
  • An old address left in the code after a move.

After launch, watch for warnings and errors in the relevant Search Console reports. Our Google Search Console guide explains how to read them.

Maintenance and updates

Markup is not something you add once and forget. When opening hours, phone number or address change, update the code the same day. Inconsistency between your profile, site and markup leaves Google unsure which detail to trust.

Keep the details in one place, such as a configuration file or plugin setting, so a phone number change only needs making once. Twice a year, run all your location pages through the testing tool again. To see the schema on your site quickly, you can also use our free SEO checker. To keep your profile details current, see our Google Business Profile guide.

Frequently asked questions

Will adding schema lift my rankings directly?

Google does not describe markup as a ranking signal in its own right. Its value is in telling search engines plainly what a page is about and making some page types eligible for rich results. For local businesses, the main gain is that the details on your site match your Google Business Profile consistently. Correct markup reduces the risk of wrong or incomplete details being shown and supports a consistent picture of your brand.

How should I set up schema if I have several branches?

Use a LocalBusiness block on each branch's own location page, describing only that branch. The address, phone number, opening hours and coordinates should all be specific to it. On the homepage, an Organization block describing the company as a whole is enough. Putting every branch into one block on one page makes it hard for Google to tell which detail belongs to which location.

About the author

Serhat Aksoy

Founder, SEO strategist

Founder of AKSOY SOFTWARE LTD. Works on technical SEO, local SEO and multilingual site structures between the UK and Türkiye.

All articles →