Vacation Rental Schema Markup for AI Search: The JSON-LD That Works
AI assistants understand your rental fastest when your page includes
LodgingBusiness or VacationRental JSON-LD with
name, address, geo coordinates, priceRange, and
amenities. Below is a copy-paste example and exactly which fields matter —
and why missing geo kills "near [landmark]" recommendations.
Validate your schema free →
What is schema markup and why does AI need it?
JSON-LD turns your prose into machine-readable facts. Instead of hoping AI parses "sleeps four, two minutes from the beach" out of a paragraph, schema states it directly — and AI matches those structured facts to the questions travelers ask.
Which schema type should a vacation rental use?
Use LodgingBusiness (or its VacationRental
subtype). Both are recognized lodging types that let you express location,
price, amenities, and ratings. Accommodation works too, but
LodgingBusiness is the broadest, best-supported choice.
What fields does ChatGPT actually use?
Name, address/areaServed, geo lat/lng, priceRange,
amenities, check-in/out, maxOccupancy, and aggregateRating.
Why geo coordinates matter most
AI matches "stays near [landmark]" and "in [neighborhood]" off precise
latitude/longitude — not your prose. Skip geo and you vanish
from location-based queries even if your text names the landmark.
Copy-paste JSON-LD example for a vacation rental
Replace the placeholder values, then paste this into your page's <head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LodgingBusiness",
"name": "Sunset Cottage Byron Bay",
"description": "2BR self check-in cottage, 400m (5-min walk) to Main Beach.",
"url": "https://your-direct-site.com",
"telephone": "+61 2 5555 1234",
"priceRange": "$180-$240 per night",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Marine Parade",
"addressLocality": "Byron Bay",
"addressRegion": "NSW",
"postalCode": "2481",
"addressCountry": "AU"
},
"geo": { "@type": "GeoCoordinates", "latitude": -28.6431, "longitude": 153.6122 },
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "WiFi", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "Free parking", "value": true }
],
"checkinTime": "15:00",
"checkoutTime": "10:00"
}
</script>
Prefer it generated for you? The free check can produce this JSON-LD pre-filled from your own page.
How do I add this to my site without code?
Paste the block into your site's <head>, your SEO
plugin's "header scripts" field, or a page's custom-code setting. It must
end up in the served HTML — AI crawlers often don't run
JavaScript, so script injected client-side won't be seen.
How do I know my schema is valid and AI-ready?
Confirm it parses as JSON and includes the key fields, especially
geo. Then check your overall AI visibility
and turn that visibility into direct bookings.
Frequently asked questions
What schema type is best for a short-term rental?
LodgingBusiness or its VacationRental subtype. Both let you express location, price, amenities, and ratings that AI can read.
Do I really need geo coordinates in my schema?
Yes — geo lat/lng is how AI answers "stays near [landmark]." Without it you're invisible to location-based queries even if your text mentions the landmark.
Where do I put JSON-LD on my page?
In a <script type="application/ld+json"> tag in the served HTML. It must be in the source, not injected by JavaScript, since AI crawlers often skip JS.
Can I add schema to my Airbnb listing?
No — you don't control Airbnb's markup. Schema is a lever only on a site you control, which is also where bookings skip the OTA commission.
How do I check my schema is valid?
Make sure it parses as JSON and includes the key fields. CitationTest's free check confirms your JSON-LD is present, valid, and includes geo.
Check whether your schema is AI-ready. Paste your URL and get your 0–100 AI-readiness score plus the exact fixes, in seconds. No signup. Every direct booking you win from AI skips the ~15–25% OTA commission.
Check my visibility →