LocalBusiness schema is structured data that describes your business to search engines: its name, address, phone number, opening hours and the area you serve. Customers never see it, but it helps search engines understand who you are and what you offer. Whether you run a shop in Valencia or work as a plumber around Alicante, this guide explains which properties to include, how to add it to your website and how to validate it, with no coding needed.

A cobbler repairs a leather shoe at his workbench, surrounded by tools, soles and shoe lasts.
A craftsperson repairs leather footwear in the workshop.

What is LocalBusiness schema?

LocalBusiness schema, or local business schema markup, is a kind of structured data from the Schema.org vocabulary, designed for local businesses with premises or a service area. It's usually written in JSON-LD and sits in the source code, where search engines read it but visitors don't.

The schema.org/LocalBusiness reference defines it as a physical business or a branch of an organisation, with a restaurant and one branch of a restaurant chain among its examples. It also lists each property LocalBusiness accepts and the value it expects.

It's part of technical SEO, the side of SEO that deals with how search engines crawl and interpret your pages. Think of it as a data sheet any search engine can read, as useful for a dental clinic in Valencia as for a shoe-repair workshop like the one in the photo.

Structured data, schema markup and JSON-LD: the key terms

Which businesses can use it?

Any business that customers visit, or that provides services at their homes or premises: shops, restaurants, salons, clinics, tradespeople or a removals company. LocalBusiness is a subtype of both Organization and Place, so it inherits properties from each (legalName from Organization, geo and photo from Place) and suits businesses with a physical location; one that only sells online fits Organization better.

What can local business schema do for your business?

It gives search engines context, so they can interpret your business information without ambiguity, which supports your SEO. It is not a direct ranking factor, though, and Google doesn't guarantee that any feature based on it will appear in search results.

What it can help with

What it does not guarantee

Valid markup makes you eligible for rich results, not certain to get them, and it won't push you higher in local search results by itself: your listing, your reviews and your content matter too.

Which LocalBusiness subtype fits your business?

Choose the most specific subtype possible for your main activity, such as Plumber, Dentist or HairSalon, as Google recommends; its own examples are Restaurant, DaySpa and HealthClub. If none fits, use LocalBusiness itself. On schema.org, LocalBusiness branches into subtypes such as Dentist, FoodEstablishment, Store and HomeAndConstructionBusiness, the parent of Plumber, Electrician and Locksmith.

Subtypes for small businesses

A shoe-repair workshop is a case in point: it has no dedicated subtype, so it uses LocalBusiness. As with the categories of your listing, pick what best matches your main activity, not every service.

Multiple activities or locations

If your business fits multiple subtypes, such as a hair and beauty salon, list them as an array, like ["HairSalon", "BeautySalon"]; additionalType isn't supported for this. With multiple premises, describe each location separately, ideally on its own URL, with its own telephone and hours. For one building with distinct sections, such as a shop with a pharmacy counter, use the department property: a nested entry with its own name, hours and telephone.

Which properties should your local business schema include?

Google's LocalBusiness guide lists only two required properties: name and address. It also recommends the following properties: telephone, url, geo, openingHoursSpecification and priceRange, filled in with as much accurate information as possible. Since LocalBusiness is a subtype of Organization, the Organization guide is worth following too, for additional properties such as description, logo and sameAs.

Property What it describes Tip
name Business name As on your sign, without extra keywords
address PostalAddress: where your premises are Street, town or city, province, postcode and country
telephone Primary phone number With the country code, so people can get in touch
url Web link Your homepage, or the location's own URL
openingHoursSpecification Opening days and hours The same as on your listing
geo GeoCoordinates: latitude and longitude The exact position of your premises
priceRange Price range Symbols such as € or €€
image Photo A real photo of your premises or your work
areaServed Area you cover The relevant towns or region
sameAs Other profiles Additional social profiles, such as Facebook, Instagram or YouTube; multiple URLs are fine
description What you do A short description, as on your homepage
email For enquiries One you check every day

Required and recommended properties

Begin with name and address plus telephone and url, then hours, coordinates and a photo. The address property takes a PostalAddress object, split into streetAddress, addressLocality (town), addressRegion (province), postalCode and addressCountry (ES for Spain). Restaurants and other food establishments can also provide menu, the full URL of their menu, and servesCuisine.

Legal name and tax identifiers in Spain

If you trade through a sociedad limitada (S.L.), legalName holds its registered name when it's different from your trading name. taxID takes the identifier you're registered under for tax, which schema.org illustrates with the CIF/NIF in Spain; it should match the country of your PostalAddress. vatID holds your VAT number, where applicable.

Hours, coordinates and service area

openingHoursSpecification pairs days with the times you open and close, in HH:MM format. If you close at midday, as many shops in Spain do, use one entry for the morning and one for the afternoon. For a holiday closure, such as a few weeks in August, add an entry with validFrom and validThrough dates, with opens and closes both set to midnight to show you're closed.

geo takes a GeoCoordinates object with latitude and longitude as numbers. Copy them from Google Maps by right-clicking the exact spot, or by pressing and holding it in the app, and keep at least five decimal places. You may work at customers' homes, like a cleaning company covering Benidorm and Altea; in that case, list the towns you cover in areaServed and leave out anything you don't show publicly.

What to leave out

How to create local business schema markup step by step

You don't need to write anything from scratch. Follow these steps in order:

  1. Choose your subtype on schema.org.
  2. Gather your business information, including your social media profiles.
  3. Start from the block below.
  4. Replace every placeholder, keep @context as it is and delete what you don't use.
  5. Validate the block, then publish it.

Sample LocalBusiness schema in JSON-LD

This script uses the Plumber subtype and placeholder values: replace each one with yours.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Your business name",
  "url": "URL of your homepage",
  "image": "URL of a photo of your premises",
  "description": "One sentence about what you do",
  "telephone": "+XX XXX XXX XXX",
  "priceRange": "€€",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Your street and number",
    "addressLocality": "Your town",
    "addressRegion": "Your province",
    "postalCode": "Your postcode",
    "addressCountry": "ES"
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "HH:MM",
    "closes": "HH:MM"
  }],
  "areaServed": ["Your town", "A nearby town"],
  "sameAs": ["Your Facebook URL", "Your YouTube channel URL"]
}
</script>

@context names the vocabulary, schema.org, and the next line sets the subtype; the other lines describe the business, its address and its hours. The order of the properties doesn't matter, but one missing comma or quotation mark can make the block unreadable, which is why validation is important.

Schema markup generators

A schema markup generator turns a form into JSON-LD you can copy, but it doesn't know your business and may default to plain LocalBusiness, so review the result. The same goes for a block drafted by an AI assistant.

A laptop and smartphone display the Suela Shoe Repairs website while a cobbler repairs a leather shoe.
Example of a shoe-repair website adapted for desktop and mobile.

How to add schema markup to your website

Paste your schema markup, inside its application/ld+json script tag, into the head or body of the page that presents your business, usually the home page or the contact page; both positions work.

Static HTML site

Paste the whole application/ld+json script just before the closing </head> tag of the relevant file and upload it again, or send the validated block to whoever looks after your site.

WordPress

Content management systems such as WordPress often leave creating this block to an SEO plugin. Rank Math has a Local SEO module where you enter your business details, while Yoast offers LocalBusiness markup in its paid Yoast Local SEO add-on (the free Yoast SEO plugin marks you up as an organisation or a person). A plugin that inserts a script in the header also works. Either way, make sure only one tool outputs this block.

Wix

In Wix, look for the structured data option in the advanced SEO settings and paste the JSON-LD there; Wix also has a custom code section in its general settings.

Squarespace

Squarespace's code injection feature, available on some plans, lets you paste the script into the header of the whole site or of a single page.

Which page should carry the markup?

Choose the page that best represents your business and shows the same NAP. Repeating the block on multiple pages isn't a mistake if the information matches; conflicting blocks, such as two with different phone numbers, are. Still choosing a platform? See our comparison of Wix and WordPress.

How to validate your local business schema

Validate the block with two free tools, before publishing and again afterwards. Both accept a URL or pasted code.

Check what Google can read

Google's Rich Results Test shows which structured data it detects on a page and can use for its search features, and flags errors and warnings.

Schema Markup Validator

The Schema Markup Validator, hosted by Schema.org, checks your markup against the whole vocabulary, not only the types Google uses, which can help you spot typos. The vocabulary also has many properties that Google doesn't require, so for Google features the reference is its own documentation, not schema.org.

Errors, warnings and what to fix

Status reports to watch after publishing

Once the block is live, the Unparsable structured data report in Search Console lists items that couldn't be parsed because of a syntax error. Where a rich result status report exists for it, use it to monitor your URLs over time: templating or serving issues can break the block after deployment.

What do the general structured data guidelines require?

Your code has to follow Google Search Essentials and its spam policies, comply with the content policies too, and describe only correct, up-to-date facts that users can see.

What a manual action means

If a block breaks these policies, you risk a manual action: the affected URLs lose that eligibility, but not their ranking. The action shows in the Manual Actions report, and once the issues are fixed you can request a reconsideration.

Common local business schema mistakes

Information that doesn't match what users see

The markup must match your visible content: a phone number that only appears in the block or old details left in a plugin send conflicting signals. Update what visitors see, the block and your listing together.

The wrong subtype or format

Self-serving reviews and duplicate blocks

Google doesn't show star ratings for self-serving reviews, those a business publishes about itself, so ask customers to review you on your listing instead (see how to get more Google reviews). Two blocks describing the same business differently, such as one from your theme and one from an SEO plugin, cause confusion: it's best to keep a single source, and to give each location its own entry.

Where schema fits in your digital marketing

Structured data is a small technical part of search engine optimisation (SEO): it supports the rest of your online presence and digital marketing but can't replace it.

Other SEO tasks that matter

To improve your visibility, work on these as well:

For the bigger picture, see what local SEO is and how it works, how to rank a local business website on Google and the digital marketing mistakes to avoid.

Keep the block up to date

Update it whenever your hours, telephone or main image change and validate it again; the URL Inspection tool in Search Console then lets you request a new crawl of your homepage, which can take some time.

Adding LocalBusiness schema is a simple step that makes your business information clear to search engines. Use real data, choose a specific subtype, validate it and keep it updated: it supports your SEO efforts, but it won't replace a well-kept listing or useful content.