Developers guide
Run a hotel, tour company, car rental or real-estate agency site on WordPress, Wix, Squarespace or your own stack? Embed your live Travia booking widget, theme it to match your brand, and read from our public search API — no SDK required.
Every Travia business gets a standalone, embeddable version of its listings and booking flow at a stable URL — one per vertical:
https://travia.ai/embed/stay/<your-business-slug>
https://travia.ai/embed/experience/<your-business-slug>
https://travia.ai/embed/cars/<your-business-slug>
https://travia.ai/embed/real-estate/<your-business-slug>You don't need to build these snippets by hand. In your business dashboard, open the Sell online (tours) or Developer (cars, real estate) section — the Widget Studio generates two ready-to-paste snippets with your slug and saved theme baked in:
Full widget (iframe)
Your entire listing + booking flow inside your page.
Booking button
A themed button that opens your Travia page — for sidebars, headers and blog posts.
A typical iframe snippet looks like this:
<iframe src="https://travia.ai/embed/experience/your-business-slug"
title="Book now"
style="width:100%;min-height:640px;border:0;border-radius:12px;"
loading="lazy"></iframe>WordPress (block editor)
WordPress (classic editor)
Switch the editor to the Text (HTML) tab and paste the snippet where you want the widget.
Wix / Squarespace / Webflow
Add an Embed / Codeelement and paste the iframe snippet. Give the element a height of at least 640 px.
Any other stack
It's a plain iframe — paste it into any HTML template. No script tags, no cookies required on your domain.
The Widget Studio's Theme design tab controls how the embed and button look on your site. Your theme is saved with your business and applies to the live embed immediately:
Save the theme first, then copy the snippet — the button snippet inlines your saved colours so it renders correctly even before the iframe loads.
Bookings that come through your embed carry source=embed attribution automatically. In your dashboard's Analytics → Channels view you can see exactly how many bookings your own website drives versus Travia search, so you can measure the widget like any other channel.
Read-only search across every vertical is open — no key needed for browsing published inventory. Base URL:
https://api.travia.ai/api/v1| Endpoint | What it returns | Useful params |
|---|---|---|
| GET /stay/search | Hotels, rooms & stays | city, checkIn, checkOut, minGuests |
| GET /experience/search | Tours, treks & activities | city, category, minPrice, maxPrice |
| GET /car/search | Rental cars | city, vehicleType, transmission |
| GET /real-estate/search | Property listings | city, listingType, propertyType, minPrice, maxPrice |
| GET /events/search | Traveler-organized events | city, category, when, lat, lng, radius |
| GET /flight/search | Flight metasearch offers | from, to, departureDate, adults |
All list endpoints share one envelope and support page and limit:
curl "https://api.travia.ai/api/v1/experience/search?city=Pokhara&limit=5"
{
"success": true,
"data": [ ... ],
"message": "…",
"page": 1,
"size": 5,
"total": 42
}Fair use applies — cache responses on your side and keep polling reasonable. Endpoints that create or modify data (bookings, listings) require an authenticated account or an organization API key.
Business organizations can issue scoped API keys for server-to-server integrations. Keys are managed per organization with role-based permissions (create, rotate, revoke) — so a developer on your team can hold key access without owning the business account. If you're building a deeper integration (channel manager, PMS sync, partner inventory), talk to us and we'll set your organization up with the right scopes.
Stuck on an embed or an API response? We answer integration questions like any other support request.