Back to BlogSEO and Digital Marketing

Schema Markup for Local Business in India: Types, Example, Testing

Jay PipaliyaPublished October 9, 20269 min read✓ Last Updated: 2026-10-08
Schema Markup for Local Business in India: Types, Example, Testing

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.

PropertyExample valueNotes for Indian businesses
@contexthttps://schema.orgAlways exactly this
@typeProfessionalService (or Dentist, TireShop, Bakery, RealEstateAgent)Most specific true subtype of LocalBusiness
@idhttps://jktechhub.com/#businessA stable identifier other blocks can reference
nameJK Tech HubMatch the profile and the signboard, no keywords added
alternateNamejktechhubThe short form customers actually type
urlhttps://jktechhub.comThe location page, or the homepage for a single location
telephone+917265004040Country code, no spaces or hyphens; the same number as the profile
imagehttps://jktechhub.com/office.jpgA real photo of the premises, at least 1200 px wide
address, @type PostalAddressstreetAddress: 617, Shivalay Complex, Nr. Virat Weigh Bridge, Mavdi; addressLocality: Rajkot; addressRegion: Gujarat; postalCode: 360004; addressCountry: INComplex and landmark go in streetAddress; state spelled out; two-letter country code
geo, @type GeoCoordinateslatitude and longitude of the pin from Google MapsCopy from the profile pin, not from a geocoding guess
openingHoursSpecificationdayOfWeek Monday to Saturday, opens 10:00, closes 19:0024-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
areaServedRajkot, Gujarat, India as City, State and Country objectsOnly places you genuinely serve
hasMapThe Google Maps URL of your listingLinks the page to the exact pin
sameAsYour social profile URLsHelps 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

  1. 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.
  2. 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.
  3. 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.
  4. Compare every value with the Google Business Profile side by side: name, address spelling, phone, hours.
  5. 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.

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

schema markup for local businesslocal business schemalocalbusiness schema exampleschema markup indiastructured data for small businessjson-ld local businessservice schema

Need Help with SEO & Marketing?

Our team at JK Tech Hub is ready to help you build the right solution for your business. Let's discuss your project.

Contact Us