Hầu hết các hướng dẫn về đánh dấu lược đồ LocalBusiness đều bao gồm các trường rõ ràng: name, address, telephone, openingHours. Hầu hết các cách triển khai dừng lại ở đó. Và hầu hết các doanh nghiệp chỉ triển khai những trường đó vẫn không được nhìn thấy bởi các công cụ AI, không phải vì lược đồ của họ sai, mà vì nó không hoàn chỉnh theo cách cụ thể quan trọng để trích dẫn AI.
Các trường mà các công cụ AI có trọng lượng nhất cho phân giải truy vấn cục bộ là những trường cụ thể vị trí: geo, hasMap, areaServed, sameAs. Đây là những trường cho phép các công cụ AI giải quyết doanh nghiệp của bạn như một thực thể địa lý rõ ràng, để khớp nó với các truy vấn cụ thể vị trí, và để xác nhận sự tồn tại của nó trên nhiều nguồn có thẩm quyền. Hướng dẫn này cung cấp cho bạn việc triển khai JSON-LD copy-paste hoàn chỉnh, bao gồm mọi trường vị trí, với giải thích về những gì mỗi trường làm cho khả năng hiển thị AI của bạn.
Tại sao các trường vị trí lại độc đáo quan trọng đối với AI
Các hướng dẫn lược đồ SEO truyền thống coi tọa độ geo là tùy chọn. Đối với kết quả phong phú của Google, tọa độ thực sự là tùy chọn, Google có thể địa chỉ của bạn. Đối với các công cụ AI, tọa độ đóng vai trò cơ bản khác: phân biệt thực thể.
Xem xét một doanh nghiệp tên "The Blue Door Café." Có thể có hàng chục doanh nghiệp có tên này hoặc tên tương tự trên toàn châu Âu. Khi một công cụ AI nhận được truy vấn "quán cà phê gần tôi với cà phê ngon", nó cần giải quyết thực thể chính xác. Chuỗi địa chỉ giúp, nhưng chúng dễ bị lỗi định dạng, "123 High St" so với "123 High Street" so với "123 High St, tầng 1" là kỹ thuật khác nhau mặc dù chúng mô tả cùng một vị trí.
Tọa độ địa lý là rõ ràng. "latitude": 52.3676, "longitude": 4.9041 không thể nhầm lẫn với bất kỳ điểm nào khác trên Trái đất. Khi lược đồ của bạn bao gồm tọa độ chính xác phù hợp với pin Hồ sơ Doanh nghiệp Google và vị trí Apple Maps của bạn, các công cụ AI có thể giải quyết thực thể của bạn với chắc chắn, và độ tin cậy trích dẫn tăng lên tương ứng.
Quá trình phân giải thực thể này được giải thích chi tiết trong [hướng dẫn của chúng tôi về cách Gemini đề xuất các doanh nghiệp địa phương] (/blog/how-gemini-ai-recommends-local-businesses) và trong bối cảnh rộng hơn của AEO có nghĩa gì đối với các doanh nghiệp địa phương.
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, /ai-seo-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.

