VANITYPASS
B2B APIExperiences

Experiences

Tours, activities, and attractions — search, book, wishlist, and manage.

Experiences

Experience endpoints live under /v1/travel/experiences. Access 300K+ tours, activities, and attractions across 2,500+ destinations. Authentication requires Authorization: Bearer <token>.

Discovery

Search Experiences

POST /v1/travel/experiences

Full search with filters — location, date, category, price range.

{
  "destination_id": "d-london",
  "start_date": "2025-06-01",
  "end_date": "2025-06-07",
  "categories": ["sightseeing", "food-and-drink"],
  "currency": "USD",
  "pax": 2
}

POST /v1/travel/experiences/search

Search by keyword across all destinations.

{
  "query": "cooking class Rome",
  "currency": "USD"
}

Get Experience Details

GET /v1/travel/experiences/{product_code}

Full product details — description, inclusions, cancellation policy, meeting point, photos.

Get Categories

GET /v1/travel/experiences/categories

Returns all experience categories and sub-categories.

Get Filters

GET /v1/travel/experiences/filters

Returns available filter options (price range, duration, languages, etc.).


Curated & Recommendations

Curated Experiences

GET /v1/travel/experiences/curated

Editorial picks — top-rated and staff-selected experiences.

GET /v1/travel/experiences/popular-destinations

Top destinations sorted by booking volume.

Nearby Experiences

POST /v1/travel/experiences/nearby

Find experiences near a GPS coordinate.

{
  "lat": 51.5074,
  "lng": -0.1278,
  "radius_km": 5
}

Experiences by Category

GET /v1/travel/experiences/category/{category_id}

Returns experiences in a specific category.


Availability & Pricing

Check Availability

GET /v1/travel/experiences/{product_code}/availability

Returns available dates, time slots, and pricing for a product.

Query paramTypeDescription
start_datestringISO 8601 start date
end_datestringISO 8601 end date
paxintegerPassenger count
currencystringISO 4217 currency code

Calculate Price

POST /v1/travel/experiences/calculate-price

Get exact pricing for a specific date, time slot, and pax combination before booking.

{
  "product_code": "4026LOND",
  "date": "2025-06-03",
  "time_slot": "10:00",
  "pax": { "adults": 2, "children": 1 }
}

Bookings

Hold Booking

POST /v1/travel/experiences/bookings/hold

Reserve availability for up to 15 minutes while the user completes payment.

{
  "product_code": "4026LOND",
  "date": "2025-06-03",
  "time_slot": "10:00",
  "pax": { "adults": 2 },
  "lead_traveller": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane@example.com",
    "phone": "+447700900000"
  }
}

Response: booking_id + hold_expires_at timestamp.

Get Hold Details

GET /v1/travel/experiences/bookings/{booking_id}/hold

List Bookings

GET /v1/travel/experiences/bookings

Returns the authenticated user's experience booking history.

Get Booking Details

GET /v1/travel/experiences/bookings/{booking_id}


Recent Searches

Get Recent Searches

GET /v1/travel/experiences/recent

Returns the user's recent experience searches.

Clear Recent Searches

DELETE /v1/travel/experiences/recent


Wishlists

List Wishlists

GET /v1/travel/experiences/wishlists

Create Wishlist

POST /v1/travel/experiences/wishlists

{ "name": "Rome Trip 2025" }

Get Wishlist

GET /v1/travel/experiences/wishlists/{wishlist_id}

Update Wishlist

PUT /v1/travel/experiences/wishlists/{wishlist_id}

Delete Wishlist

DELETE /v1/travel/experiences/wishlists/{wishlist_id}

Add Item to Wishlist

POST /v1/travel/experiences/wishlists/{wishlist_id}/items

{ "product_code": "4026LOND" }

Remove Item from Wishlist

DELETE /v1/travel/experiences/wishlists/{wishlist_id}/items/{product_code}

Get All Wishlisted Product Codes

GET /v1/travel/experiences/wishlists/product-codes

Returns a flat list of product codes across all wishlists — useful for marking items as saved in search results.