Pricing Models
Project Expedition products use one of four pricing models. Understanding which model a product uses is essential for correct availability checks and bookings.
Overview
| Model | Description | Common Use Cases |
|---|---|---|
| By Person Type | Price varies by traveler category | Day tours, walking tours, most activities |
| By Time Based | Price based on duration | Private chauffeur, equipment rentals |
| By Occupancy | Price based on group/room size | Private boat charters, multi-day trips |
| By API | Dynamic pricing from supplier | Go City passes, third-party tickets |
Identifying the Pricing Model
Call /return_availability and check the pricing_rates array inside each time_with_description entry. The pricing_rate value in each entry tells you which traveler categories or duration options are available:
{ "availability": [{ "date": "2025-06-15", "time_with_description": [{ "time": "7:00 am", "description": "Morning Departure", "price": 65.00, "pricing_rates": [ { "pricing_rate": "Adult", "min_age": 18, "max_age": 99, "min_quantity": 1, "max_quantity": 50 }, { "pricing_rate": "Child", "min_age": 5, "max_age": 17, "min_quantity": 0, "max_quantity": 10 }, { "pricing_rate": "Infant", "min_age": 0, "max_age": 4, "min_quantity": 0, "max_quantity": 5 } ] }] }]}The pricing_rate values indicate which parameters are valid for booking.
By Person Type (Most Common)
Price varies by traveler category: adults, children, seniors, students, infants.
Identifying
The pricing_rates array contains person-type entries such as "Adult", "Child", "Senior":
"pricing_rates": [ { "pricing_rate": "Adult", "min_age": 18, "max_age": 99, "min_quantity": 1, "max_quantity": 50 }, { "pricing_rate": "Child", "min_age": 5, "max_age": 17, "min_quantity": 0, "max_quantity": 10 }, { "pricing_rate": "Senior", "min_age": 65, "max_age": 99, "min_quantity": 0, "max_quantity": 10 }]Example Product
Cliffs of Moher Day Trip (PE12031)
- Adults: $65/person
- Children (ages 5-12): $45/person
- Senior (65+): $55/person
Availability Request
curl -H "access-token: YOUR_TOKEN" \ "https://apistage.projectexpedition.com/v1/return_availability?id=PE12031&date=2025-06-15&adults=2&children=1¤cy=EUR"Booking Request
{ "product_id": "PE12031", "date": "2025-06-15", "time": "7:00 am", "adults": "John Smith,Jane Smith", "children": "Tommy Smith", "phone": "+1 555 123 4567"}By Time Based
Price determined by duration or time slot selection.
Identifying
The pricing_rates array contains time-based entries like "2 Hours", "4 Hours", etc.:
"pricing_rates": [ { "pricing_rate": "2 Hours", "min_quantity": 1, "max_quantity": 1 }, { "pricing_rate": "4 Hours", "min_quantity": 1, "max_quantity": 1 }, { "pricing_rate": "8 Hours", "min_quantity": 1, "max_quantity": 1 }]Example Product
Private Chauffeur Service
- 2 hours: $150
- 4 hours: $280
- 8 hours: $500
Availability Request
curl -H "access-token: YOUR_TOKEN" \ "https://apistage.projectexpedition.com/v1/return_availability?id=PE54321&date=2025-06-15&4_hours=1¤cy=EUR"Booking Request
{ "product_id": "PE54321", "date": "2025-06-15", "time": "9:00 am", "4_hours": 1, "adults": "John Smith,Jane Smith", "phone": "+1 555 123 4567"}By Occupancy
Price based on total group size or room configuration.
Identifying
Look for quantity or room-type entries in the pricing_rates array.
Example Product
Private Boat Charter
- Up to 6 passengers: $500 flat rate
- 7-10 passengers: $750 flat rate
Availability Request
curl -H "access-token: YOUR_TOKEN" \ "https://apistage.projectexpedition.com/v1/return_availability?id=PE67890&date=2025-06-15&quantity=6¤cy=EUR"Booking Request
{ "product_id": "PE67890", "date": "2025-06-15", "time": "10:00 am", "quantity": 6, "adults": "John Smith,Jane Smith,Mike Jones,Sarah Jones,Tom Brown,Lisa Brown", "phone": "+1 555 123 4567"}By API
Dynamic pricing from an external supplier. These products often have multiple time slots with different descriptions.
Identifying
The pricing_rates array may include singular entries like "Adult", "Child" and the product often requires description for time slot selection:
"pricing_rates": [ { "pricing_rate": "Adult", "min_quantity": 1, "max_quantity": 20 }, { "pricing_rate": "Child", "min_quantity": 0, "max_quantity": 10 }]Example Product
Go City Explorer Pass
- Adult: Dynamic pricing
- Child: Dynamic pricing
- Multiple time slots: “Morning Departure”, “Afternoon Departure”
Availability Request
curl -H "access-token: YOUR_TOKEN" \ "https://apistage.projectexpedition.com/v1/return_availability?id=PE11111&date=2025-06-15&adult=2&child=1&description=Morning%20Departure"Booking Request
{ "product_id": "PE11111", "date": "2025-06-15", "time": "9:00 am", "adult": 2, "child": 1, "description": "Morning Departure", "adults": "John Smith,Jane Smith", "children": "Tommy Smith", "phone": "+1 555 123 4567"}Understanding pricing_rates
The /return_availability response includes pricing_rates with detailed rate information inside each time_with_description entry:
"pricing_rates": [ { "pricing_rate": "Adult", "min_age": 18, "max_age": 99, "min_quantity": 1, "max_quantity": 50 }, { "pricing_rate": "Child", "min_age": 5, "max_age": 17, "min_quantity": 0, "max_quantity": 10 }]Use this to:
- Display age requirements to customers
- Validate booking quantities before submission
- Show appropriate pricing options
Summary
When pricing_rate Contains | Use These Parameters |
|---|---|
"Adult", "Child", "Senior" (person types) | adults=N, children=N, etc., then names in booking |
"2 Hours", "4 Hours" (durations) | 2_hours=1 (select that duration) |
| Quantity-based entries | quantity=N (total group size) |
"Adult", "Child" (singular, API-priced) | adult=N, often with description |