The essentials
- Definition: structured data is markup (in JSON-LD format) describing a page's content to the engines: here, a business, its details, its hours, its reviews.
- Type: LocalBusiness or a specific subtype (Restaurant, Dentist, Plumber, Store…).
- Key properties: name, address, telephone, openingHoursSpecification, geo, url, image, priceRange, sameAs.
- Effect: understanding by Google and by AI, possible rich results (hours, reviews), consistency with the Google listing.
The Schema.org structured data is a standard vocabulary, recognised by Google, Bing and AI assistants, that lets you describe explicitly what a page contains. For a local business, the LocalBusiness type declares the location: name, address, phone, hours, GPS coordinates, type of activity, reviews. Google uses it to understand the page, connect it to the Google Business Profile listing and, sometimes, show rich results. The markup goes in a JSON-LD script in the <head> of the local page.
Choosing the right type
LocalBusiness works for any business, but a specific subtype is preferable: Google and AI understand the activity better.
| Business | Schema.org type |
|---|---|
| Restaurant, café, bar | Restaurant, CafeOrCoffeeShop, BarOrPub |
| Retail | Store and subtypes (ClothingStore, Florist, HardwareStore) |
| Building trades | Plumber, Electrician, RoofingContractor, HVACBusiness, GeneralContractor |
| Healthcare | Dentist, Physician, MedicalClinic, Pharmacy |
| Services | LegalService, AccountingService, RealEstateAgent, AutoRepair, BeautySalon |
| Accommodation | Hotel, LodgingBusiness |
| Other | LocalBusiness (generic) or ProfessionalService |
The properties to fill in
| Property | Example | Importance |
|---|---|---|
name | The exact name, identical to the Google listing | Required |
address (PostalAddress) | Street, postcode, town, country | Required |
telephone | International format (+33…) | Strongly recommended |
url | The URL of the local page | Strongly recommended |
image | A photo of the business | Required for some rich results |
openingHoursSpecification | Days and hours, identical to the listing | Recommended |
geo (GeoCoordinates) | Latitude, longitude | Recommended |
priceRange | "€€" or a range | Recommended |
sameAs | The URL of the Google listing, social media, directories | Recommended (entity consistency) |
areaServed | The towns or area served | Useful for home-service businesses |
aggregateRating | Rating and number of reviews | Only for reviews collected on your own site, not Google's |
A complete example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Dupont Plomberie",
"image": "https://www.dupont-plomberie.fr/images/agence-nantes.jpg",
"url": "https://www.dupont-plomberie.fr/agences/nantes/",
"telephone": "+33240000000",
"priceRange": "€€",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 rue des Carmes",
"postalCode": "44000",
"addressLocality": "Nantes",
"addressCountry": "FR"
},
"geo": { "@type": "GeoCoordinates", "latitude": 47.2172, "longitude": -1.5534 },
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:00", "closes": "18:00" }
],
"areaServed": ["Nantes", "Saint-Herblain", "Rezé"],
"sameAs": [
"https://maps.google.com/?cid=XXXXXXXX",
"https://www.facebook.com/dupontplomberie"
]
}
</script>
For a network, each branch page carries its own block with its own details; the home page carries an Organizationblock. CMSs and SEO plugins (Yoast, Rank Math) generate this markup from fields you fill in.
The other types useful to a local business
| Type | Where | What it brings |
|---|---|---|
Organization | Home page | Overall identity: logo, contact, social profiles, description |
Service | Service pages | Describes each service and its area (areaServed) |
FAQPage | Pages with questions and answers | Possible rich results, easier extraction by AI |
Event | Open days, workshops | Display in event results |
Product with a Offer | Product pages | Price and availability in the results |
BreadcrumbList | Every page | A breadcrumb in the results |
Mistakes to avoid
- Marking up invisible information : everything in the JSON-LD must appear on the page. Google penalises misleading markup.
- Using aggregateRating with Google reviews : Google forbids reusing its own reviews in markup; reserve that property for reviews collected on your site.
- A NAP different from the listing : the markup must reproduce exactly the reference NAP .
- One block for several locations : one block per local page.
- Forgetting to update the hours or the phone number in the markup after a change.
Check
Google's rich results test and the Schema.org validator flag errors and missing properties. Search Console's "Enhancements" section lists the pages with valid or erroneous structured data. Correct markup has no immediate effect on ranking, but it strengthens the consistency of your entity for Google as for AI, which counts for GEO. It is part of the page template described in structuring your local pages and of check 15 in the local search audit.
sameAs property, carrying the URL of your Google Maps listing and your profiles, is the most under-used. It explicitly links the site, the listing and the social profiles into one entity, exactly what Google and AI assistants are trying to establish.
How GreenRed helps
Rather than juggling several tools, GreenRed's Site health module brings these metrics together in a single dashboard, compares them over time and tells you which actions come first. You can try it free, with no card, from the Pricing.
Frequently asked questions
Does LocalBusiness structured data improve ranking?
Not directly: Google says structured data isn't a ranking factor. It helps it understand the page, connect it to the Google Business Profile listing and can trigger rich results. That clarity indirectly benefits local SEO and citation by AI.
Can you put your Google rating in aggregateRating markup?
No. Google forbids using in markup reviews it collected itself or reviews from third-party sites. The aggregateRating property is reserved for reviews gathered and displayed on your own site, with a genuine collection system.
How do you add structured data on WordPress?
SEO plugins (Yoast, Rank Math, SEOPress) offer a "Local SEO" or "Schema" module where you fill in the business type, address, phone and hours; they generate the JSON-LD. For several locations, some modules allow per-page markup. Check the result with the rich results test.
Should you use Organization or LocalBusiness markup?
Both, in different places: Organization on the home page to describe the company as a whole (logo, contact, social profiles), LocalBusiness (or a subtype) on each location page to describe the physical place with its details and hours. For a single location, LocalBusiness is often enough, since it inherits from Organization.