
Key Takeaways
- 1What schema markup for local business does and does not do
- 2Which schema types a local business should use
- 3LocalBusiness schema example, property by property
- 4Service schema and FAQPage schema for local businesses
- 5Indian specifics: GST number, address format and +91 phone numbers
Quick Answer
Schema markup for a local business is a block of JSON-LD on your website that tells Google your business type, name, address, phone, hours, map position and services in a format it reads without guessing. Use the most specific LocalBusiness subtype (Dentist, TireShop, RealEstateAgent), add Service for each service page and FAQPage where you answer questions, keep every value identical to your Google Business Profile, and test it with the Rich Results Test. Done right it takes a developer two to four hours for one location.
This guide is for Indian business owners and the developers who build their websites. It shows the schema types that matter for a local business, a worked example you can copy property by property, the Indian specifics around GST numbers, addresses and +91 phone numbers, how to test the result, and the mistakes we fix most often. By the end you will know exactly what to ask your developer for and how to check that they did it.
What schema markup for local business does and does not do
Schema markup, also called structured data, is a vocabulary maintained at schema.org that search engines agree to read. For a local business the useful format is JSON-LD: a script block in the page that lists facts as property and value pairs. Google reads it to confirm what kind of business the page describes and to match the page to your Google Business Profile.
It is a relevance and trust signal, not a ranking trick. Schema will not put a tyre shop with ten reviews above one with two hundred. What it does is remove doubt: when the profile, the page text and the markup all say the same name, address, phone and hours, Google can connect your website to your map listing with confidence, and that connection is what lets the website support the map pack ranking. Our guide on how to rank on Google Maps explains where that fits among the other factors.
Which schema types a local business should use
- A LocalBusiness subtype on each location page. Schema.org has dozens: Dentist, MedicalClinic, Pharmacy, Hospital, Restaurant, Bakery, JewelryStore, HardwareStore, FurnitureStore, ClothingStore, TireShop, AutoRepair, AutoPartsStore, RealEstateAgent, Plumber, Electrician, AccountingService, LegalService, BeautySalon, ProfessionalService. Pick the most specific one that is true. A software company or an agency uses ProfessionalService or plain LocalBusiness.
- Organization on the homepage. Name, legal name, logo, founding date, alternate names people search (a short form of your brand), social profile links and a contact point. Google uses this for the brand knowledge panel rather than the map.
- Service on each service page. Names the service, who provides it (your LocalBusiness), the area served and optionally a price or price range in INR.
- FAQPage on pages with a real question and answer section. Google restricted the dropdown rich result to government and health sites in 2023, so do not expect the visual. The markup still helps search engines and AI answer systems read the page, and it costs nothing if the FAQs are genuine.
- BreadcrumbList and WebPage are generic site markup your developer usually adds once for the whole site.
Avoid marking up a single page as three different things. One location page, one LocalBusiness subtype, with Service blocks that point back to it through an @id.
LocalBusiness schema example, property by property
The table uses JK Tech Hub's own office as the worked example because it is public and real. Replace each value with yours. Property names are case sensitive.
| Property | Example value | Notes for Indian businesses |
|---|---|---|
| @context | https://schema.org | Always exactly this |
| @type | ProfessionalService (or Dentist, TireShop, Bakery, RealEstateAgent) | Most specific true subtype of LocalBusiness |
| @id | https://jktechhub.com/#business | A stable identifier other blocks can reference |
| name | JK Tech Hub | Match the profile and the signboard, no keywords added |
| alternateName | jktechhub | The short form customers actually type |
| url | https://jktechhub.com | The location page, or the homepage for a single location |
| telephone | +917265004040 | Country code, no spaces or hyphens; the same number as the profile |
| image | https://jktechhub.com/office.jpg | A real photo of the premises, at least 1200 px wide |
| address, @type PostalAddress | streetAddress: 617, Shivalay Complex, Nr. Virat Weigh Bridge, Mavdi; addressLocality: Rajkot; addressRegion: Gujarat; postalCode: 360004; addressCountry: IN | Complex and landmark go in streetAddress; state spelled out; two-letter country code |
| geo, @type GeoCoordinates | latitude and longitude of the pin from Google Maps | Copy from the profile pin, not from a geocoding guess |
| openingHoursSpecification | dayOfWeek Monday to Saturday, opens 10:00, closes 19:00 | 24-hour format; one block per distinct schedule |
| priceRange | ₹45,000 to ₹10,00,000 (or a band like ₹₹) | Optional; use INR or rupee symbols, never a blank string |
| areaServed | Rajkot, Gujarat, India as City, State and Country objects | Only places you genuinely serve |
| hasMap | The Google Maps URL of your listing | Links the page to the exact pin |
| sameAs | Your social profile URLs | Helps Google connect the brand across sites |
Written out as JSON-LD, the top of the block reads: {"@context": "https://schema.org", "@type": "ProfessionalService", "@id": "https://jktechhub.com/#business", "name": "JK Tech Hub", "telephone": "+917265004040", "url": "https://jktechhub.com", and so on, with each property separated by a comma.
The address is a nested object: "address": {"@type": "PostalAddress", "streetAddress": "617, Shivalay Complex, Nr. Virat Weigh Bridge, Mavdi", "addressLocality": "Rajkot", "addressRegion": "Gujarat", "postalCode": "360004", "addressCountry": "IN"}.
Hours are a list of objects: "openingHoursSpecification": [{"@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "opens": "10:00", "closes": "19:00"}]. The whole block sits inside a script tag of type application/ld+json in the page head or body; your developer knows the wrapper.
Service schema and FAQPage schema for local businesses
Service
Each service page gets its own block: {"@context": "https://schema.org", "@type": "Service", "name": "Wheel alignment", "serviceType": "Wheel alignment", "provider": {"@id": "https://example.com/#business"}, "areaServed": {"@type": "City", "name": "Rajkot"}, "offers": {"@type": "Offer", "priceCurrency": "INR", "price": "500"}}. The provider line is the important one: it points at the @id of your LocalBusiness block so Google knows who performs the service without repeating the whole address.
For a page listing many services, use hasOfferCatalog on the LocalBusiness block with an OfferCatalog that contains one Offer per service. A dental clinic with 11 treatments and a CA firm with eight filings both fit this pattern.
FAQPage
Mark up only questions and answers that are visible on the page, word for word. The block is {"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Do you accept UPI?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, all UPI apps, cards and cash."}}]}, with one Question object per FAQ. Hidden or invented FAQs are a policy violation and can cost you other rich results.
Indian specifics: GST number, address format and +91 phone numbers
GST number. There is no GST property in schema.org. The Organization type has a generic taxID and vatID, and Google does not use either for local results. Put your GSTIN on invoices, the footer and the contact page as visible text; leave it out of the markup.
Address format. Indian addresses carry a shop number, a complex name, a landmark and a road, which do not map neatly to a single street line. Put all of that in streetAddress, in the order a courier would read it. addressLocality is the city, addressRegion is the state written in full, postalCode is the six-digit PIN, and addressCountry is IN. Do not put the area name (Mavdi, Kalawad Road) in addressLocality; it belongs in streetAddress.
Phone numbers. Write telephone as +91 followed by the ten digits, with no spaces, zero or hyphen: +917265004040. If the profile shows a landline, write it as +91, the STD code without the leading zero, then the number. Use the same number on the profile and in the footer text.
Multiple locations. One LocalBusiness block per location page, each with its own @id, address, phone and hours. The homepage carries the Organization block and can list the branches through a department or subOrganization property. A Rajkot and Morbi business needs two blocks, not one with two addresses.
Ratings. Google treats a star rating you write about your own business as self-serving and ignores or penalises it on LocalBusiness and Organization. Do not copy your Google rating into aggregateRating; let the profile show it.
How to test schema markup
- Paste the page URL into Google's Rich Results Test. It shows which items Google recognises and flags missing required fields such as name or address.
- Paste the same URL into the Schema Markup Validator at validator.schema.org. It checks the vocabulary itself, including subtypes Google does not show rich results for.
- Open the page source on the live site, not the staging site, and confirm the block is present. Markup injected by a script after load is sometimes missed.
- Compare every value with the Google Business Profile side by side: name, address spelling, phone, hours.
- After a week, check the Enhancements section of Search Console for errors on the marked-up pages.
Common schema markup mistakes we fix on Indian business sites
- The address in the markup differs from the profile by a floor number, a landmark or the spelling of the road.
- telephone written as 072650 04040 or 7265004040 instead of +917265004040.
- addressRegion left blank or written as GJ; addressCountry written as India instead of IN.
- The same LocalBusiness block with the head office address pasted on every page, including the branch pages.
- Organization and LocalBusiness blocks on the same page with different names or phone numbers.
- An aggregateRating copied from Google reviews, or a five-star rating with no reviews on the page.
- A FAQPage block whose questions do not appear anywhere in the visible page.
- A website builder or plugin generating a generic LocalBusiness block that nobody edited, so the name reads "My Business".
What we have seen on Rajkot business websites
JK Tech Hub builds and audits websites for shops, clinics, builders and factories across Rajkot and Gujarat, and schema is the website-side fix that most often turns out to be missing or broken even on recently built sites.
A tyre dealer on Gondal Road had a well-reviewed profile and a new website, but the website builder had generated a LocalBusiness block with the template's placeholder name and no address. Replacing it with a TireShop block carrying the real NAP, the pin coordinates and hours, plus Service blocks for alignment, balancing and puncture repair, was part of the work that moved the dealer into the 3 pack for "tyre shop Gondal Road" over the following two months.
A dental clinic near 150 Feet Ring Road had MedicalClinic markup with the owner's old mobile number from the website's first version, while the profile and the signboard showed the clinic landline. Once the two matched, the clinic's website started appearing below the map pack for treatment queries it had been absent from. The SEO for doctors in Rajkot page covers that work.
A casting unit in Metoda GIDC with a single-page export website had no markup at all. Adding an Organization block with the legal name, the short brand name as alternateName and the social profiles, plus a LocalBusiness block for the plant, gave the company a brand knowledge panel within weeks. Overseas buyers searching the brand name now see the address, phone and logo without opening the site.
What this means for your business
Schema is a two to four hour job for one location that most Indian business websites still do not have correctly. Ask your developer for a LocalBusiness subtype block on each location page, a Service block on each service page, an Organization block on the homepage, and a screenshot of the Rich Results Test with no errors. Then check the values against your profile yourself; the markup only helps when the two agree.
If you are also fixing the profile, citations and reviews, work through the local SEO checklist in order; schema sits on the website side of that list. A free SEO audit will show whether your current site has any markup at all and whether it matches your profile.
Related reading and next step
- Local SEO services in Rajkot
- Local SEO checklist for Indian businesses
- Google Business Profile optimization checklist
- Technical SEO checklist for Indian businesses
- Website development services
For a fixed quote on adding and testing schema markup across your website, or on a local SEO plan that includes it, send your URL through the contact page or on WhatsApp.
Tags
Continue exploring
Pages on JK Tech Hub related to this article.
