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.
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
- Structured data: a standardised format for providing information that machines can process reliably.
- Schema.org: a shared vocabulary of types and properties, from a project founded by Google, Microsoft, Yahoo and Yandex.
- Schema markup: the code that applies this vocabulary to your content.
- JSON-LD: the format Google recommends over microdata and RDFa, as the easiest to implement and maintain. It sits in its own script element, marked application/ld+json, apart from your visible content.
- Rich results: search results enhanced with information from structured data.
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
- Your name, phone number and hours are stated as data, not guessed from your text.
- You keep one precise version of your NAP (name, address and phone number), identical to your listing and directory entries.
- Google's documentation links this structured data to features such as the knowledge panel that may appear when people search for a business, or a carousel shown to users looking for a kind of business.
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
Plumber,ElectricianandLocksmith: tradespeople.DentistandMedicalClinic: dental and medical clinics.HairSalonandBeautySalon: hair and beauty salons.RestaurantandCafeOrCoffeeShop: places to eat and drink.AccountingServiceandLegalService: professional services, including accountants and law firms.Store, or a narrower option such asShoeStore: shops.
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
- aggregateRating or review properties for your own business: they are reserved for sites that collect reviews about other local companies.
- Anything users can't see.
- Invented or outdated details, such as an old phone number or image.
- Keywords added to your name, such as "cheap plumber Alicante": use the name customers know as your brand.
How to create local business schema markup step by step
You don't need to write anything from scratch. Follow these steps in order:
- Choose your subtype on schema.org.
- Gather your business information, including your social media profiles.
- Start from the block below.
- Replace every placeholder, keep @context as it is and delete what you don't use.
- 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.
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
- Correct any error first: it can make the item unusable.
- Then review the warnings, non-critical issues that often point to missing recommended properties.
- Run the check again until nothing is flagged; it's important to repeat it whenever your details change.
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.
- Format and access: use JSON-LD, microdata or RDFa, and don't block Googlebot with robots.txt, noindex or a login.
- Relevance: the block must be a true representation of your content, with nothing hidden and nothing that could mislead users, such as fake reviews.
- Completeness: a block missing a required property isn't eligible for rich results, and each recommended one you provide improves the result.
- Specificity: use the most specific applicable type and property names from schema.org.
- Images: every image URL in the block must be crawlable and indexable, and each image must show the business it illustrates.
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
- Using the generic LocalBusiness when a more specific subtype exists.
- Giving the coordinates of the town centre instead of your premises.
- Cramming everything into streetAddress instead of splitting the PostalAddress.
- Writing the telephone value without the international prefix.
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:
- A complete listing, with the same NAP as your markup: how to add your business to Google Maps, then optimise your Google Business Profile in 10 steps.
- The same NAP in every directory: local citations and NAP.
- Pages that name your services and your town, built around relevant local keywords.
- Fast pages that work well on mobile: why speed affects your search rankings.
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.