Schema.org markup is the closest thing search engines have to a machine-readable description of your content. Done right, it doubles your real estate in SERPs — rich snippets, featured cards, knowledge panels — without changing a single word of your prose. Done wrong, it sits invisible in your HTML doing nothing. Here are the four schemas every travel blog should ship in 2026, with code you can paste in tonight.
What is Schema.org and why Google loves it
Schema.org is a vocabulary maintained by Google, Microsoft, Yahoo and Yandex. It defines structured types — Article, TouristAttraction, FAQPage, Product — and properties for each. You add the markup as JSON-LD inside a <script type="application/ld+json"> tag in your <head>. Google reads it, validates it, and uses it to decide whether your page qualifies for rich results.
For travel content specifically, rich results can mean a star rating next to your title, a FAQ accordion below your link, a breadcrumb trail instead of an ugly URL, or — in the best case — a spot in the "Things to do" carousel above the organic results. That last one alone can 4-5x your CTR.
The 4 schemas travel blogs should ship
These four cover 90% of the SERP enhancements available to travel content:
TouristAttraction— for destination guides and things-to-do posts.TravelAction— for itinerary and booking-intent content.FAQPage— for any post with a Q&A section, which should be most of them.BreadcrumbList— for every page, no exceptions.
Code examples
TouristAttraction. Put this on a guide page about a specific place:
{
"@context": "https://schema.org",
"@type": "TouristAttraction",
"name": "Halong Bay",
"description": "UNESCO World Heritage site with 1,600 limestone karsts in northern Vietnam.",
"image": "https://yourblog.com/halong-bay.jpg",
"address": {
"@type": "PostalAddress",
"addressCountry": "VN",
"addressRegion": "Quang Ninh"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 20.9101,
"longitude": 107.1839
},
"touristType": ["Family", "Adventure", "Cultural"]
}FAQPage.Drop this on any post with a Q&A section. Google often shows the questions directly under your result:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Do I need a visa for Vietnam?",
"acceptedAnswer": {
"@type": "Answer",
"text": "French passport holders get 45 days visa-free since 2025."
}
}, {
"@type": "Question",
"name": "What is the best time to visit?",
"acceptedAnswer": {
"@type": "Answer",
"text": "October to April for the north, March to May for the south."
}
}]
}BreadcrumbList. Every page. This one is non-negotiable:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://yourblog.com"
}, {
"@type": "ListItem",
"position": 2,
"name": "Vietnam",
"item": "https://yourblog.com/vietnam"
}, {
"@type": "ListItem",
"position": 3,
"name": "Halong Bay Guide",
"item": "https://yourblog.com/vietnam/halong-bay"
}]
}TravelAction. Use this on itinerary posts where you describe a specific trip with origin and destination:
{
"@context": "https://schema.org",
"@type": "TravelAction",
"agent": { "@type": "Person", "name": "Traveler" },
"fromLocation": {
"@type": "City",
"name": "Paris",
"address": { "@type": "PostalAddress", "addressCountry": "FR" }
},
"toLocation": {
"@type": "City",
"name": "Hanoi",
"address": { "@type": "PostalAddress", "addressCountry": "VN" }
}
}Testing with Google Rich Results
Paste the URL of any page you've marked up into search.google.com/test/rich-results. The tool tells you which schema types it detected, whether they're valid, and which rich results your page qualifies for. Fix any errors before publishing — Google won't show rich results for invalid markup.
Once a page is live, monitor performance in Google Search Console under Enhancements. You'll see impressions and clicks broken down per rich result type, so you can A/B which schemas drive the most lift on your content.
Common mistakes
- Mismatched markup and content. See above. Google will eventually catch this and silently stop showing rich results.
- Multiple conflicting schemas. Don't put two
FAQPageblocks on the same page. Google picks one at random, often the wrong one. - Missing required properties.
TouristAttractionneedsname,image, andaddress. Without them, Google ignores the markup entirely. - Forgetting to update.If your visa rules change and your FAQ markup still says "30 days visa-free" when it's now 45, you're lying to Google and to readers.
AggregateRating markup is the #1 reason travel blogs get manual actions from Google. Be honest.Ship these four schemas on every relevant page and you'll see rich results within 2-4 weeks of Google's next crawl. Travel is one of the verticals where rich results matter most — visitors scan SERPs for the listing that looks most informative, and a breadcrumb + FAQ accordion + star rating beats a bare blue link every time.