Free Local Business Schema Generator for AI Search
Generate JSON-LD LocalBusiness schema with full NAP, opening hours, geo, and social profiles. Optimized for ChatGPT, Google AI Overviews, Perplexity local search. No sign-up.
Business Details
LocalBusiness SchemaThe public-facing name of your business.
Use the name as it appears on Google Business Profile — consistency is the #1 local-AI signal.
Pick the most specific Schema.org LocalBusiness subtype.
Specificity wins — Restaurant beats LocalBusiness for a café, Dentist beats MedicalBusiness for a dental office.
Minimum 50 characters. AI local search picks a primary source based on description depth.
0 / 1500Mention neighborhood/city, specialties, and unique details (e.g. 'wood-fired pizza in Capitol Hill').
Street number and name (no suite — put that here if you need to).
City or locality.
State, province, or region code.
Postal or ZIP code.
Two-letter ISO country code (e.g. US, GB, CA).
Public phone number in international format.
Phone is the primary disambiguation signal for AI local search — a consistent phone across NAP listings beats backlinks.
Canonical website URL.
Photo of the business (optional but strongly recommended).
Storefront photos appear directly in AI local answers. Use a real, recent shot, not a logo.
Dollar signs ($, $$, $$$, $$$$) or a range like $10–$30.
Decimal latitude (optional but improves map accuracy).
Decimal longitude (optional but improves map accuracy).
Opening Hours
Add rows for each day your business is open.
Opening hours are the #2 citation signal for AI local search after NAP — fill them in for every day.
Social Profiles / sameAs URLs
Links to Facebook, Instagram, LinkedIn, Yelp, Google Business Profile, etc.
sameAs is how AI engines confirm this business is the same entity they know from other platforms. Every link is a vote.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your business name",
"description": "What the business does…",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US"
},
"telephone": "+1-206-555-0123",
"url": "https://example.com"
}
AI Readiness Score
Get a 0–100 score showing how likely AI search engines are to parse and cite content from your page.
How to use this code:
- Copy the JSON-LD code above
- Paste inside
<script type="application/ld+json"> - Add the script tag to your location page
<head> - Validate with Google Rich Results Test ↗
See how ChatGPT answers — with and without your schema
Side-by-side comparison of what an AI assistant would return for a typical local business query, with vs. without the structured data you generated above.
Sample user query
“What are this business's hours and how do I reach them?”
Click Simulate to see the AI response without schema.
Click Simulate to see the AI response with schema.
How to install this schema on your site
Pick your platform. Every step includes a copy-paste-ready code block where it applies.
- 1
Install and activate a schema plugin: "Rank Math SEO", "Yoast SEO Premium", or "Schema Pro". For straight JSON-LD injection without a full SEO plugin, "WPCode" (formerly Insert Headers and Footers) is the simplest option.
- 2
In Rank Math: go to the post edit screen → Rank Math sidebar → Schema tab → Schema Builder → paste your JSON-LD. In Yoast Premium: the Schema tab auto-generates standard types; use the Custom Schema plugin add-on to inject custom types.
- 3
For WPCode: Code Snippets → Add Snippet → Custom Code (HTML/PHP) → paste the full <script type='application/ld+json'> tag. Set Location to 'Site Wide Header' or 'Specific Post/Page' depending on scope.
html<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ /* your Q&A pairs */ ] } </script> - 4
Publish the post. Open the live URL, view source, confirm the <script type="application/ld+json"> tag appears in the <head>.
- 5
Validate at search.google.com/test/rich-results.
What is LocalBusiness Schema?
LocalBusiness schema is the family of Schema.org types that describe a business tied to a physical location — restaurants, stores, professional services, healthcare practices, home-service providers, hotels. It tells search engines and AI systems the canonical facts: who you are, where you are, when you are open, how to contact you, and how you connect to your presence on other platforms. Without it, local search and AI local answers rely on scraping your HTML and reconciling it with third-party directories, which produces worse results for everyone.
The schema.org hierarchy is deep. At the top is LocalBusiness. Under it sit dozens of industry-specific subtypes: Restaurant, Bakery, CafeOrCoffeeShop, Store, ClothingStore, AutomotiveBusiness, Dentist, MedicalClinic, HairSalon, Plumber, Electrician, LodgingBusiness, Hotel, and many more. Each subtype inherits everything from LocalBusiness and adds specificity-relevant fields. A realistic Restaurant markup looks like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Acme Pizza",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US"
},
"telephone": "+1-206-555-0123",
"url": "https://acmepizza.com",
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": "https://schema.org/Monday",
"opens": "11:00", "closes": "22:00" }
],
"priceRange": "$$"
}
</script>That markup gives AI engines everything they need to answer questions like "what are Acme Pizza's hours" or "is there a pizza place open at 9pm near me" — without guessing and without cross-referencing unreliable third parties.
Why LocalBusiness Schema Matters for AI Search
Local queries have the highest AI-vs-blue-links substitution rate of any query class. When someone asks "where can I get dim sum near Pike Place," ChatGPT, Perplexity, and Google AI Overviews all respond with a synthesized list of businesses — not a map with pins. The businesses that appear in that synthesized list are almost never the ones with the most links; they are the ones with the cleanest, most consistent, machine-readable identity data. LocalBusiness schema is the primary vehicle for that identity data on your own site.
Here is what AI engines specifically extract and weight:
- NAP consistency triangulation: The business name, address, and phone from your schema are cross-referenced against every directory the AI engine has indexed. Perfect consistency across Yelp, Google Business, Apple Maps, and your schema creates a high-confidence entity; a single mismatch drops confidence to "probably the same but not certain" — which often means you don't appear in responses at all.
- Subtype-filtered intent matching: Queries like "find a 24-hour pharmacy" filter candidates to businesses with the Pharmacy subtype. A drugstore marked up as generic LocalBusiness is ineligible for that query even if it is literally a pharmacy.
- Opening-hours real-time reasoning: When a user asks "is X open now," the AI consults your OpeningHoursSpecification. Accurate hours are a citation signal; missing or stale hours are an anti-signal.
- Geo-anchored proximity ranking: Latitude/longitude lets the AI engine's spatial reasoner calculate distance from the user without round-tripping to a geocoder. Businesses with geo are faster to surface and less prone to being misplaced.
- Entity graph connections via sameAs: Each sameAs link is a vote that connects the schema-declared business to an external, independently-maintained identity. Five verified sameAs links beat fifty backlinks for local entity strength.
- Price-tier filtering: priceRange lets AI engines answer "cheap" / "moderate" / "upscale" queries correctly. Businesses without it are either left out of those queries or guessed at — usually wrongly.
The compounding effect matters here: an AI engine that successfully serves your business in one query is more likely to include you in adjacent ones. A single well-marked-up location page with complete schema and consistent NAP outperforms a whole site with weaker signals on the same local queries.
LocalBusiness Schema Best Practices
Pick the deepest matching subtype
A fine-dining restaurant is a Restaurant, not a FoodEstablishment. A pediatric dentist is a Dentist, not a MedicalClinic. Specificity unlocks type-specific filters.
Match NAP across every platform you control
Your website, Google Business Profile, Facebook, Yelp, and industry directories must all render the same name, address, and phone — character for character.
Fill opening hours for every day
Include closed days explicitly when needed. "Closed Mondays" omitted from schema is interpreted by AI engines as unknown hours, not a closed day.
Use international phone format
+1-206-555-0123, not (206) 555-0123. International format lets AI voice assistants dial directly.
Geocode with a dropped pin
Use Google Maps to drop a pin on your actual entrance. Copy lat/lng to 5 decimal places — the precision pays off in AI proximity queries.
Link real sameAs profiles only
Don't link abandoned MySpace or defunct Foursquare pages. Each dead link is an AI engine trust cost.
Sync schema with Google Business Profile
Whenever you update GBP hours, address, or phone, update the on-site schema the same day. Divergence is the #1 cause of AI engines losing confidence in your entity.
One page per physical location
Multi-location businesses need one URL per location with its own LocalBusiness schema. Lists of locations on a single page fragment your entity.
How to Install LocalBusiness Schema
WordPress
- 1Generate the JSON-LD above and click Copy.
- 2Install a schema plugin such as Rank Math, Yoast SEO Premium, or Schema Pro — all support LocalBusiness templates.
- 3Alternatively, paste the raw JSON-LD via a code-injection plugin like WPCode, scoped to the location page only.
- 4Make sure your theme isn't already outputting conflicting LocalBusiness schema — having two LocalBusiness objects for the same URL confuses AI engines.
- 5Validate the live URL with Google Rich Results Test.
Squarespace / Wix
- 1Copy the generated JSON-LD.
- 2In Squarespace, use Code Injection → Page Header on the specific location page.
- 3In Wix, use the Custom Code section (Settings → Custom Code) and target the location page only.
- 4Both platforms will render the script in the page head at publish time.
- 5Verify rendering by viewing source on the live URL, then run the Rich Results Test.
Static / Next.js site
- 1Keep one source-of-truth file per location (e.g. locations/seattle.json) with NAP, hours, geo.
- 2At build time, inject LocalBusiness JSON-LD into each location page from that data.
- 3Whenever hours or contact change, update the source file and rebuild — don't hand-edit generated pages.
- 4If you publish on a CDN with ISR/SSG, invalidate affected pages on data changes.
- 5Add a smoke test that validates every location page passes the Rich Results Test.