Schema markup is JSON code you add to your website that tells Google explicitly: this is a local business, this is what type, this is their service area, these are their hours, this is their rating. Without it, Google has to infer all of that from your page content — and it often gets it wrong or misses it entirely.
Here are the five schema types that matter for small business owners. You can add these to any HTML page by pasting the code in a <script type="application/ld+json"> block before your closing </body> tag.
1. LocalBusiness
This is the foundation. It tells Google you're a local business — what type, where you are, and how to reach you. Here's what it looks like for a small business:
{
"@context": "https://schema.org",
"@type": ["LocalBusiness", "ProfessionalService"],
"name": "Sunrise Studio",
"telephone": "+1-555-555-0100",
"email": "[email protected]",
"url": "https://sunrisestudio.com",
"description": "Portrait and event photography studio serving clients across the metro area.",
"address": {
"@type": "PostalAddress",
"streetAddress": "1234 Main St",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "30.2672",
"longitude": "-97.7431"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "18:00"
}
],
"priceRange": "$$",
"areaServed": ["Austin","Round Rock","Cedar Park","Pflugerville","Georgetown"]
}
Replace the @type value with the right schema.org type for your business. Examples: "Photographer," "Dentist," "AccountingService," "FitnessCenter," "Restaurant," "LegalService." Google maintains the full list at schema.org/LocalBusiness.
2. AggregateRating
This pulls your review stars into Google search results — the gold stars you see under some business names in search. To display them, Google needs to see schema markup telling it you have reviews. Add this inside your LocalBusiness schema:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "47",
"bestRating": "5",
"worstRating": "1"
}
Update the ratingValue and reviewCount monthly or whenever you hit a new milestone. This won't magically generate stars if Google hasn't indexed reviews, but it signals that reviews exist and where to find them.
3. Service
For each major service you offer, add a Service schema. This helps Google match your site to searches for specific services, not just your business name:
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Family Portrait Sessions",
"serviceType": "Photography",
"provider": {
"@type": "LocalBusiness",
"name": "Sunrise Studio"
},
"areaServed": {
"@type": "City",
"name": "Austin"
},
"description": "Outdoor and studio family portrait sessions for all ages. Full gallery delivery within 2 weeks."
}
Add one Service block per major service offering. If you do 8 services, add 8 blocks. Each one adds keyword coverage Google can match to specific searches.
4. FAQPage
If your site has a FAQ section — and it should — add FAQPage schema. Google can display your FAQ answers directly in search results as expandable dropdowns. This takes up more real estate on the results page and drives more clicks:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How far in advance should I book a session?",
"acceptedAnswer": {
"@type": "Answer",
"text": "2-4 weeks is ideal for most sessions. Peak seasons (spring and fall) book out faster — 6-8 weeks is safer if you have a specific date in mind."
}
},
{
"@type": "Question",
"name": "How long until I receive my photos?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Gallery delivery within 2 weeks for standard sessions, 3 weeks for weddings. You'll receive a link to download your full gallery via email."
}
}
]
}
5. BreadcrumbList
Breadcrumb schema tells Google your site's hierarchy, which helps with site structure and can show the path (Home > Services > Family Portraits) in search results. Simple and quick to add on any service page:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://sunrisestudio.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Services",
"item": "https://sunrisestudio.com/services"
},
{
"@type": "ListItem",
"position": 3,
"name": "Family Portraits",
"item": "https://sunrisestudio.com/services/family-portraits"
}
]
}
How to verify it's working
After you add schema markup, use Google's Rich Results Test (search.google.com/test/rich-results) to confirm it parses correctly. Paste your URL or your code directly. It will show you which schema types Google found and flag any errors. Fix the errors before you launch — malformed schema is worse than no schema.
Schema won't fix a broken site. But on a site that's already reasonably well-built, adding these five schema types is one of the highest-leverage things you can do for local SEO. Most of your competitors haven't done it.
Want a site that does this for your small business?
We build mobile-first, SEO-ready business sites for as little as $199. Live in 3 days. $49/month after that. Start with a free mockup.
Get my free mockup