LocalBusiness markup is a block of JSON-LD on your site that states your business name, address, phone, hours and type in a machine-readable way. Google lists name and address as required, and geo coordinates, opening hours, telephone, url and price range as recommended. Use the most specific type available, mark up each location as its own business, keep every value identical to what visitors see on the page, and never add review stars for your own business. Valid markup does not guarantee a rich result or higher rankings.
What local business markup does, and what it does not do
Structured data is extra code that describes the page in a standard vocabulary. For a local company, the useful description is simple: who you are, what kind of business you are, where you are and when you are open. Search engines read it to understand the page; it does not replace the visible information, and it is not a ranking switch.
Google says clearly that valid markup makes a page eligible for rich results but does not ensure that they will appear, and that structured data should describe content users can actually see on the page (General structured data guidelines). It also warns that a structured data problem can lead to a manual action, which removes the page's eligibility for rich results; the same page says that does not affect the page's ranking in web search. Put simply, schema is a clarity and hygiene task. We treat it as part of a clean local SEO setup, not as a growth hack.
That framing protects you from two opposite mistakes. The first is ignoring markup entirely, which leaves your name, address and hours dependent on how a crawler interprets your footer. The second is over-promising, for example telling a clinic owner that adding schema will bring patients. It will not, on its own. What it can do is remove ambiguity, which helps when the same details also appear on your Google Business Profile, in directories and across your pages.
Which page gets which markup
A frequent error is pasting the same block on every page of the site. Each page type has a different job, so each should carry different markup. Use this table as a starting map.
| Page | Suggested markup | Why | Watch out for |
|---|---|---|---|
| Home page | Organization or LocalBusiness with name, url, logo, phone | States the main entity for the site | Different phone number from the contact page |
| Contact or location page | LocalBusiness with address, geo, hours, telephone | Most natural home for address and hours | Branch details mixed into a single block |
| One page per branch | One LocalBusiness per branch | Google says to mark up each location as its own LocalBusiness | Copying branch A hours into branch B |
| Service page | Usually no LocalBusiness block; a short reference to the business is enough | The page describes a service, not a second business | Duplicating the whole business on every service page |
| Blog article | BlogPosting with author and publisher | Describes the article | Using a fake person as author |
| Page with a real FAQ section | FAQPage that mirrors visible questions | Content must match the page | Marking up questions that are not visible |
Our separate guide to FAQ sections and schema on service pages covers the last row in detail. This article concentrates on the business entity itself.
Choosing the right type
Google asks you to use the most specific LocalBusiness subtype that fits, and to put several types in an array when the business really fits more than one. It also notes that additionalType is not supported. The schema.org vocabulary lists many subtypes. Examples that appear directly beneath LocalBusiness include Dentist, ProfessionalService, LegalService, AutomotiveBusiness and RealEstateAgent, and broader groups such as MedicalBusiness, HealthAndBeautyBusiness and HomeAndConstructionBusiness (schema.org LocalBusiness). Deeper subtypes sit further down the tree, so check the type list before you settle on a name.
| Business | Start by checking this type family | Fallback if no exact match |
|---|---|---|
| Dental clinic | Dentist | MedicalBusiness |
| Other clinics and medical centres | Subtypes under MedicalBusiness | MedicalBusiness |
| Beauty salon, spa, aesthetic | Subtypes under HealthAndBeautyBusiness | HealthAndBeautyBusiness |
| AC, plumbing, painting, renovation | Subtypes under HomeAndConstructionBusiness | HomeAndConstructionBusiness |
| Garage and car services | AutomotiveBusiness and its subtypes | AutomotiveBusiness |
| Law, accounting, consultancy | LegalService, ProfessionalService | ProfessionalService |
| Property agency | RealEstateAgent | LocalBusiness |
The rule that keeps you honest: choose the type that a stranger would use to describe your company in one phrase, and do not select a type simply because it sounds more valuable.
The property worksheet: required, recommended, and your source of truth
Google's LocalBusiness page names name and address as required properties, with an address that includes as many PostalAddress fields as possible. Recommended properties include geo (latitude and longitude to at least five decimal places), openingHoursSpecification, telephone with country and area code, a working url, and priceRange under 100 characters (Local business structured data). Build a worksheet where every value has one source of truth, otherwise the website, the profile and the markup drift apart.
| Property | Status per Google | Source of truth | Common error |
|---|---|---|---|
| name | Required | Trade licence name and signage | Adding keywords such as the city or a service |
| address | Required | Premises document and signage | Missing country or postal fields |
| telephone | Recommended | The number that is answered | Missing +971 or +966 country code |
| url | Recommended | The live canonical page | Link that redirects or returns an error |
| geo | Recommended | A map pin placed at the entrance | Rounded coordinates that point to the next street |
| openingHoursSpecification | Recommended | Hours shown on the page | Holiday or Ramadan hours not updated |
| priceRange | Recommended | A short honest range | A long sentence or a promotional claim |
Notice that none of these require you to publish a price list. A priceRange is optional and can be omitted if you cannot state a stable range. Inventing a range just to fill the field creates a mismatch with what the page says.
A hypothetical JSON-LD example for a clinic
The block below is a hypothetical example with placeholder details, shown only to illustrate the shape of the markup. Replace every value with your real, visible details before use.
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Example Smile Clinic",
"url": "https://www.example.com/",
"telephone": "+971-4-000-0000",
"image": "https://www.example.com/images/clinic-front.jpg",
"priceRange": "AED 150 - AED 5,000",
"address": {
"@type": "PostalAddress",
"streetAddress": "Example Street, Example Tower, Office 101",
"addressLocality": "Dubai",
"addressCountry": "AE"
},
"geo": { "@type": "GeoCoordinates", "latitude": 25.00000, "longitude": 55.00000 },
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Saturday"],
"opens": "09:00:00",
"closes": "21:00:00"
}]
}Three details in the example are worth explaining. The telephone has a country code, as Google recommends. The opening hours use the hh:mm:ss format, and days are written as full names; Google also documents how to express hours past midnight, 24-hour opening, closed days and seasonal closures with validFrom and validThrough. And the type is the specific Dentist rather than the generic LocalBusiness. Place the script in the head or body of the page using the JSON-LD format that Google recommends.
Several branches, departments and seasonal hours
If you operate more than one location, Google says to mark up each location as its own LocalBusiness, and that the markup can go on any page although a page about that branch is most sensible. Give every branch its own address, phone and hours, and its own page with unique content such as access directions, the team available there and the services offered. For the content side of multi-branch work see multi-location SEO for service businesses.
Departments, such as a pharmacy counter inside a clinic or a showroom inside a store, can be nested under the department property, with their own properties where they differ. Google suggests naming them as the business name followed by the department name unless the department has its own brand.
Seasonal hours are a UAE-specific pain point. Ramadan hours, summer schedules and public holidays change what visitors see on the page, so the markup has to change too. Schedule a reminder in the calendar and update the visible text, the Business Profile and the markup in one sitting. A page that shows reduced hours while the markup says otherwise teaches nobody to trust it. See also our Ramadan marketing plan for the other tasks that change in that month.
What you should not mark up
Three habits cause most trouble. First, Google states that review and aggregateRating properties are recommended only for sites that review other local businesses, so a clinic or contractor should not wrap its own testimonials in star-rating markup. Second, do not mark up content that is not visible to users, such as a phone number that appears only in the code. Third, do not use markup to impersonate another person or organisation or to include fake reviews, which the general guidelines list as misleading.
Real testimonials still belong on the page as ordinary visible content, supported by photos and names where the customer agrees. If you need a refresher on gathering them honestly, read our guide to Google reviews strategy.
A test routine you can repeat after every change
Google's guidance on validation can be turned into a five-step routine:
- Run the page through the Rich Results Test and fix critical errors.
- Use the URL Inspection tool in Search Console to confirm that Google can access the page and that it is not blocked by robots.txt, noindex or a login.
- Request recrawling after the fix and allow time for reindexing.
- Make sure the page is in your sitemap.
- Check the Manual Actions and unparsable structured data reports in Search Console from time to time.
If you do not yet use Search Console regularly, start with our Search Console guide for business owners. Add a markup check to your release checklist whenever the contact details, branches or hours change, and test again after a redesign, since themes and plugins often overwrite structured data silently.
A consistency audit: four places that must agree
The most valuable schema task is not the code itself but the comparison. Print or list the same five facts as they appear in four places and tick each row only if all four match.
| Fact | Visible page | JSON-LD | Business Profile | Footer or contact page |
|---|---|---|---|---|
| Business name | Check | Check | Check | Check |
| Address | Check | Check | Check | Check |
| Phone number | Check | Check | Check | Check |
| Opening hours | Check | Check | Check | Check |
| Website address | Check | Check | Check | Check |
Each mismatch is a task with an owner: the developer fixes the markup, the marketer fixes the profile, and the owner decides which version is correct. If your website was built without these checks, they fit naturally into the website redesign checklist.
How we work at ZED
Structured data is a small piece of a bigger system, and we handle it inside the same four stages we use for every client: research, setup, call and WhatsApp tracking, and monthly reporting. During setup we build or fix the website, the local pages and the SEO plan so that the details a visitor sees are the details a crawler reads. Tracking then confirms that calls, WhatsApp messages and form enquiries are counted, and the monthly review shows which pages and areas produce useful enquiries. Read more about our SEO service and website service, how we describe our way of working on the about page, and the medical marketing case study. We do not promise rich results or rankings and we do not publish a price list; send your site address and we reply with an initial view.
Frequently asked questions
Is LocalBusiness schema required to rank on Google?
No. Google says valid markup makes a page eligible for rich results but does not guarantee they appear, and a structured data problem does not affect ranking in web search. Treat schema as clarity and hygiene, not as a ranking lever.
Which properties does Google require for LocalBusiness?
Google lists name and address as required. Recommended properties include geo, openingHoursSpecification, telephone, url and priceRange. Add them only when the same information is visible on your site.
Should I use JSON-LD or another format?
Google recommends JSON-LD, and its LocalBusiness examples use it. It is placed in a script tag and kept separate from your visible HTML, which makes it easier to maintain than inline formats.
Can I add star ratings from my own testimonials?
No. Google states that review and aggregateRating are recommended only for sites that review other local businesses. Showing your own testimonials as visible content is fine, but do not mark them up as review stars for your own company.
How should I mark up a company with several branches?
Mark up each location as its own LocalBusiness with its own address, phone number and hours, ideally on a dedicated page for that branch. Do not merge all branches into one block.
How do I test that my markup works?
Use the Rich Results Test, then URL Inspection in Search Console to confirm Google can reach the page. Request recrawling after changes and watch the Manual Actions and structured data reports.
What should the type be for a clinic?
Choose the most specific subtype that fits, such as Dentist for a dental clinic, or a subtype under MedicalBusiness. Google asks for the most specific type; check the schema.org type tree for the right name.
Can ZED add and check schema for my website?
Yes, as part of website and SEO work. Send your site address on WhatsApp and we reply with an initial view of what to check. We do not promise rich results or rankings.
Have your local markup checked
Send your website address and the number of branches on WhatsApp. We reply with an initial list of what to fix first, with no promise of rich results.
Send your site address on WhatsApp Call 01097079170