Большинство руководств по разметке схемы LocalBusiness охватывают очевидные поля: name, address, telephone, openingHours. Большинство реализаций останавливаются там. И большинство компаний, которые реализуют только эти поля, остаются невидимыми для AI механизмов, не потому, что их схема неправильна, но потому что она неполна в отношениях, которые конкретно имеют значение для цитирования AI.
Поля, которые AI механизмы взвешивают наиболее тяжело для разрешения локального запроса, - это локально-специфичные: geo, hasMap, areaServed и sameAs. Это поля, которые позволяют AI механизмам разрешить вашу компанию как однозначную географическую сущность, сопоставить её с локально-специфичными запросами и подтвердить её существование в нескольких авторитетных источниках. Это руководство даёт вам полную, копируемую реализацию JSON-LD, включая каждое поле локации, с объяснением того, что каждое поле делает для вашей видимости AI.
Почему поля локации уникально важны для AI
Традиционные руководства схемы SEO рассматривают geo координаты как опциональные. Для богатых результатов Google координаты действительно опциональны, Google может геокодировать ваш адрес. Для AI механизмов координаты выполняют принципиально отличающуюся функцию: разрешение сущности.
Рассмотрите компанию с названием "The Blue Door Café". По всей Европе может быть дюжины компаний с этим названием или похожими названиями. Когда AI механизм получает запрос "café рядом со мной с хорошим кофе", ей нужно разрешить правильную сущность. Строки адреса помогают, но они подвержены несоответствиям форматирования, "123 High St" против "123 High Street" против "123 High St, 1st floor" - технически разные строки даже если они описывают одно и то же местоположение.
Геокоординаты однозначны. "latitude": 52.3676, "longitude": 4.9041 не может быть спутана с какой-либо другой точкой на Земле. Когда ваша схема включает точные координаты, которые соответствуют вашей булавке Google Business Profile и вашему местоположению на Apple Maps, AI механизмы могут разрешить вашу сущность с уверенностью и доверие цитирования соответственно возрастает.
Этот процесс разрешения сущности подробно объясняется в нашем руководстве того, как Gemini рекомендует локальные компании и в более широком контексте что AEO означает для локальных компаний.
The Complete LocalBusiness JSON-LD Implementation
The following is a complete, production-ready JSON-LD block for a LocalBusiness. Adapt the @type to your specific business type (see the section below on choosing the right type). Every field is annotated with its purpose.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Maison Durand",
"alternateName": "Maison Durand Brasserie",
"description": "Traditional French brasserie in central Lyon serving seasonal Lyonnais cuisine since 1984. Reservations available for groups.",
"url": "https://www.maisondurand.fr",
"telephone": "+33-4-72-00-00-00",
"email": "contact@maisondurand.fr",
"address": {
"@type": "PostalAddress",
"streetAddress": "14 Rue Mercière",
"addressLocality": "Lyon",
"addressRegion": "Auvergne-Rhône-Alpes",
"postalCode": "69002",
"addressCountry": "FR"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.7640,
"longitude": 4.8357
},
"hasMap": "https://maps.google.com/?q=45.7640,4.8357",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "12:00",
"closes": "14:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "19:00",
"closes": "22:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "12:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Sunday"],
"opens": "12:00",
"closes": "15:00"
}
],
"servesCuisine": ["French", "Lyonnais"],
"priceRange": "€€",
"menu": "https://www.maisondurand.fr/menu",
"acceptsReservations": true,
"areaServed": {
"@type": "City",
"name": "Lyon"
},
"image": [
"https://www.maisondurand.fr/images/exterior.jpg",
"https://www.maisondurand.fr/images/interior.jpg",
"https://www.maisondurand.fr/images/menu-dish.jpg"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "284",
"bestRating": "5",
"worstRating": "1"
},
"sameAs": [
"https://www.google.com/maps/place/Maison+Durand+Lyon",
"https://www.facebook.com/MaisonDurandLyon",
"https://www.tripadvisor.com/Restaurant_Review-maisondurand",
"https://www.yelp.com/biz/maison-durand-lyon"
],
"founder": {
"@type": "Person",
"name": "Pierre Durand"
},
"foundingDate": "1984",
"currenciesAccepted": "EUR",
"paymentAccepted": "Cash, Credit Card, Visa, Mastercard",
"amenityFeature": [
{
"@type": "LocationFeatureSpecification",
"name": "Outdoor seating",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Wheelchair accessible",
"value": true
},
{
"@type": "LocationFeatureSpecification",
"name": "Wi-Fi",
"value": true
}
]
}
</script>
[Image: Browser developer tools showing the Elements panel with the HTML head section open, and the LocalBusiness JSON-LD script tag visible and expanded, showing the geo, sameAs, and openingHoursSpecification fields highlighted]
Field-by-Field Breakdown: The Location Fields That Matter
geo, Geocoordinates
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.7640,
"longitude": 4.8357
}
What it does: Provides the precise geographic location of your business as a machine-readable coordinate pair. AI engines use this for entity disambiguation and for resolving location-specific queries.
How to find your coordinates: Open Google Maps, right-click your business location, and select "What's here?" The coordinates appear at the bottom of the screen. Alternatively, your Google Business Profile pin location has coordinates accessible via the GBP dashboard.
Common mistake: Using approximate coordinates (e.g., city centre coordinates) rather than your actual building location. AI engines cross-reference coordinates across sources, an imprecise match reduces confidence.
hasMap, Map Link
"hasMap": "https://maps.google.com/?q=45.7640,4.8357"
What it does: Provides a direct link to your location on a mapping platform. This serves as a verification signal, AI engines and crawlers can follow this link to confirm your geographic location.
Best practice: Use a coordinate-based Google Maps URL rather than a place-name URL, as coordinates are unambiguous. You can also add a second hasMap value pointing to your MapAtlas or OpenStreetMap location for additional corroboration.
areaServed, Service Area
"areaServed": {
"@type": "City",
"name": "Lyon"
}
For businesses with a delivery or service radius, use GeoCircle:
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 45.7640,
"longitude": 4.8357
},
"geoRadius": "15000"
}
What it does: Tells AI engines the geographic area your business serves. This is essential for service businesses (plumbers, cleaners, delivery services) that cover an area beyond their physical address, and for "near me" query matching. A restaurant might use City. A delivery service covering a 15km radius would use GeoCircle with a radius in metres.
Common mistake: Omitting areaServed entirely. Without it, AI engines can only associate your business with queries containing your exact address or locality, not with the broader area you actually serve.
sameAs, Authoritative Profile Links
"sameAs": [
"https://www.google.com/maps/place/YOUR_PLACE_ID",
"https://www.facebook.com/yourbusiness",
"https://www.tripadvisor.com/Restaurant_Review-yourbusiness",
"https://www.yelp.com/biz/your-business"
]
What it does: Creates a corroboration network, links from your schema to the same entity appearing on authoritative external platforms. AI engines follow these links to verify that the entity on your website is the same as the entity on Google Maps, Facebook, and TripAdvisor. Each corroborating source increases citation confidence.
Minimum recommended sameAs links: Google Business Profile, Facebook, one industry-relevant directory (TripAdvisor for hospitality, Zocdoc for healthcare, Houzz for home services).
Common mistake: Including sameAs links that go to pages where your NAP information does not match your website. A mismatch in a sameAs target actively reduces confidence rather than increasing it.
The full NAP consistency picture is covered in our NAP consistency guide for AI search.
Choosing the Right @type
LocalBusiness is the base type. Using a more specific subtype gives AI engines better category signals. The most commonly used subtypes:
| Business Type | @type Value |
|---|---|
| Restaurant, café, bar | Restaurant, CafeOrCoffeeShop, BarOrPub |
| Hotel, B&B, hostel | Hotel, BedAndBreakfast, Hostel |
| Doctor, clinic | MedicalClinic, Physician |
| Dentist | Dentist |
| Gym, fitness studio | SportsActivityLocation, HealthClub |
| Lawyer | LegalService |
| Accountant | AccountingService |
| Retail shop | Store, or more specific: ClothingStore, ElectronicsStore |
| Museum, gallery | Museum |
| Tourist attraction | TouristAttraction |
| Real estate agency | RealEstateAgent |
If your specific type is not listed here, check the full Schema.org type hierarchy at schema.org/LocalBusiness.
How to Add JSON-LD to Your Website
Place the <script type="application/ld+json"> block inside the <head> element of every page that represents your business, at minimum your homepage and your contact/location page.
Static HTML sites: Paste the script tag directly into the <head> of your HTML file.
WordPress: Use the Yoast SEO or RankMath plugins (both have LocalBusiness schema fields in their settings), or add the raw JSON-LD via a header injection plugin.
Next.js / React: Add the script tag inside the <head> using next/head or the App Router's metadata API with a <script> element:
export default function Page() {
const schema = {
"@context": "https://schema.org",
"@type": "LocalBusiness",
// ... all fields
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
{/* page content */}
</>
);
}
Shopify: Add via the theme.liquid file's <head> section, or use a schema markup app from the Shopify App Store.
[Image: Screenshot of search.google.com/test/rich-results showing a LocalBusiness schema validation result with a green "Valid items detected" message and the detected fields listed: name, address, geo, openingHoursSpecification, aggregateRating]
Verifying Your Implementation
After adding your JSON-LD, verify it with two tools:
1. Google Rich Results Test, search.google.com/test/rich-results
Enter your page URL or paste your JSON-LD directly. The tool shows detected schema types, validates all fields, and flags errors. A valid LocalBusiness result means Google can read your markup correctly.
2. Schema.org Validator, validator.schema.org
More strict than Google's tool. Will flag deprecated properties and type mismatches that Rich Results Test sometimes misses.
3. MapAtlas AEO Checker, /aeo-checker
Specifically audits the AI citation signals, including location fields, NAP consistency against external sources, and review freshness, that Rich Results Test does not cover. Use this after Google validation to check the AI-specific layer.
Common Mistakes That Undermine AI Visibility
Using prose opening hours instead of openingHoursSpecification: "Mon–Fri 9am–6pm, Sat 10am–4pm, closed Sunday" is human-readable but not machine-readable. AI engines cannot reliably parse it for temporal query filtering.
Omitting geo because your address is complete: The address is for human comprehension. Geocoordinates are for machine resolution. You need both.
Mismatching sameAs targets: If your Facebook page has a different phone number than your website, the sameAs link creates a contradiction rather than corroboration. Fix the source before linking to it.
Stale aggregateRating values: Some implementations hardcode the rating count. A static "reviewCount": "47" that was accurate in 2023 but is now incorrect creates a data quality signal that reduces AI confidence. Either use a dynamic value or omit the field if you cannot keep it current.
Multiple JSON-LD blocks per page: If you have multiple schema scripts on one page, make sure they do not contradict each other. A page with one block saying "telephone": "+33-4-72-00-00-00" and another block saying "telephone": "+33 4 72 00 00 01" creates a conflict.
The Long-Term Compounding Effect
JSON-LD schema is not a one-time tactic. Each time an AI engine crawls your website and finds a complete, consistent, accurate schema block, the confidence score for your entity increases incrementally. Over time, this compounding builds a citation presence that becomes self-reinforcing: more citations generate more visits, more reviews, more mentions, which in turn generate more structured signal for AI engines to find.
The complete AEO guide for local businesses walks through how to build this compounding system across all the channels that feed AI citation engines, not just your website schema.
Start with the free MapAtlas AEO Checker to see your current schema completeness score, then use the AI Search Visibility solution to implement and monitor the full structured data stack. The JSON-LD above is the foundation, build on it consistently and your AI citation presence will grow with every engine update.

