Introduction
Welcome to the Magpie API, which provides programmatic access to the Magpie platform.
For our V1 API Docs, please visit this page.
Authentication
Provide
X-Api-Key
header:
GET /api HTTP/1.1
Host: magpie.travel
Accept: application/json
X-Api-Key: 58c068808359e091c310054e43c3c27a
or
api_key
query parameter:
GET /api?api_key=58c068808359e091c310054e43c3c27a HTTP/1.1
Host: magpie.travel
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{ "documentation": "https://docs.magpie.travel" }
Magpie API requires the X-Api-Key
header containing your API key to be
included for all requests:
X-Api-Key: <Your API Key>
Alternatively, the API key can be provided via the api_key
query parameter:
https://magpie.travel/api?api_key=<Your API Key>
If an API key was not given or it doesn't belong to an existing account, a 401
Unauthorized
response status is returned.
You can find the API key for your Magpie account on Profile -> Settings tab.
OCTO
OCTO API standard specification
Account
GET /api/accounts/getAccount/{accountId} HTTP/1.1
Host: magpie.travel
Accept: application/json
X-Api-Key: 58c068808359e091c310054e43c3c27a
HTTP/1.1 200 OK
Content-Type: application/json
{
"account": {
"id": "d7a11efb-da83-4715-b8b3-f2c2ce74f81e",
"name": "Skyline Sightseeing",
"telephone": "+1-555-123-4567",
"website": "https://www.skylinesightseeing.com",
"description": "Skyline Sightseeing is a renowned sightseeing tour agency located at Fisherman's Wharf in San Francisco, California. They offer comprehensive city tours using hop-on, hop-off double-decker buses and have packages covering major sites including Muir Woods, Alcatraz, and Wine Country. Known for high-quality service and diverse tour options, they ensure a memorable experience for every visitor. With tours available for 1-day and 2-day passes, as well as specialized night tours, they provide flexibility and convenience in exploring San Francisco's iconic landmarks.",
"category": "Tour Operator",
"secondary_category": "Transportation",
"logo": "https://assets.magpie.travel/accounts/logos/skyline.png",
"timeZone": "America/Los_Angeles",
"banner": "https://assets.magpie.travel/accounts/banners/skyline-banner.jpg",
"email": "[email protected]",
"locale": "en-US",
"linkedinHandle": "skylinesightseeing",
"facebookHandle": "Skyline",
"instagram_handle": "skysightseeing",
"twitterHandle": "skylinetours",
"youtubeHandle": "skylinechannel",
"tiktokHandle": "skylinetours",
"tripadvisorHandle": "skyline-sightseeing",
"googleHandle": "skylinesightseeing",
"tradeUrl": "https://trade.skylinesightseeing.com",
"tradeEmail": "[email protected]",
"requirements": "Having the tourists, investing in our company and leading to group of tourists.",
"productDescription": "Travel Guides, Tours, Escorted tours and more",
"bookingSystemsId": [
"Daniel test",
"TourOpp",
"Tripnect",
"NUITEE TRAVEL"
],
"faqs": [
{
"question": "What time do buses start in the morning",
"answer": "Buses start at 9am and stop at 5pm during the week, and 6pm on weekends."
},
{
"question": "How often do buses run",
"answer": "Buses run every 15-30 mins."
}
{
"question": "Are tickets to attractions included in the tour",
"answer": "No, the tour does not include entrance fees to attractions that we stop at. Always check ahead for availability of attractions, especially Alcatraz. "
}
],
"media": [
{
"src": "https://res.cloudinary.com/example/image/logo.png",
"type": "image/png",
"rel": "LOGO",
"title": "Company Logo",
"caption": "Official logo of the tour company",
"copyright": "© 2025 Tour Company"
},
{
"src": "https://res.cloudinary.com/example/image/cover.jpg",
"type": "image/jpeg",
"rel": "COVER",
"title": "Tour Cover Image",
"caption": "San Francisco Bus Tour panoramic view",
"copyright": "© 2025 Tour Company"
}
],
"locations": [
{
"title": "99 Jefferson Street, San Francisco, CA 94133, USA",
"shortDescription": null,
"types": "Business Address",
"place": {
"latitude": 37.807863999999995,
"longitude": -122.4139391,
"streetAddress": "99 Jefferson Street",
"addressLocality": "San Francisco County",
"addressRegion": "California",
"postalCode": "94133",
"addressCountry": "United States",
"postOfficeBoxNumber": "San Francisco County",
"identifiers": [],
"sameAs": []
}
},
{
"title": "99 Jefferson Street, San Francisco, CA 94133, USA",
"shortDescription": null,
"types": "Google Business Profile",
"place": {
"latitude": 37.807863999999995,
"longitude": -122.4139391,
"streetAddress": "99 Jefferson Street",
"addressLocality": "San Francisco County",
"addressRegion": "California",
"postalCode": "94133",
"addressCountry": "United States",
"postOfficeBoxNumber": "San Francisco County",
"identifiers": [],
"sameAs": []
}
}
]
}
}
Account Fields
The Account resource contains details about suppliers of Experiences (operators) in the Magpie platform.
Field | Type | Description |
---|---|---|
id |
uuid | Unique identifier for the account |
name |
string | Company name |
telephone |
string | Primary contact telephone number |
website |
string | Company website URL |
description |
text | Detailed description of the company |
category |
string | Primary business category |
secondaryCategory |
string | Secondary business category |
timeZone |
string | Company's primary time zone (IANA format) |
banner |
string | URL to company banner image |
email |
string | Primary contact email address |
locale |
string | Default locale for the account (IETF BCP 47 tag) |
linkedinHandle |
string | LinkedIn profile name |
facebookHandle |
string | Facebook profile name |
instagramHandle |
string | Instagram profile name |
xHandle |
string | X profile name |
youtubeHandle |
string | YouTube channel name |
tiktokHandle |
string | TikTok profile name |
tripadvisorHandle |
string | TripAdvisor listing name |
googleHandle |
string | Google Business Profile name |
tradeUrl |
string | URL for trade/B2B portal |
tradeEmail |
string | Contact email for trade partners |
requirements |
string | Requirements to work with us |
productDescription |
string | Product Description |
faqs[] |
array | Array of frequently asked questions related to the account |
faqs[].question |
string | The text of the frequently asked question |
faqs[].answer |
string | The detailed response to the corresponding question |
media[] |
array | List of media files hosted at stable URLs |
media[].src |
string | The URL of the media file. Must be stable and publicly accessible |
media[].type |
string | Specifies the type of the media file, which indicates its format and intended usage (e.g., image/jpeg, image/png, video/mp4, video/avi, external/youtube, external/vimeo) |
media[].rel |
string | Relationship of the media to the content (e.g., "LOGO", "COVER") |
media[].title |
string/null | Title or name of the media |
media[].caption |
string/null | Caption providing context about the media |
media[].copyright |
string/null | Copyright status or usage restrictions |
locations[] |
array | List of geographical locations associated with the account |
locations[].title |
string/null | Name of the location |
locations[].shortDescription |
string/null | Brief description of the location |
locations[].type |
string | Role of the location. (e.g., Business Address, GBP ) |
locations[].place |
array | Geospatial and postal address data for the location |
locations[].place.latitude |
float | Latitude of the location in decimal degrees |
locations[].place.longitude |
float | Longitude of the location in decimal degrees |
locations[].place.streetAddress |
string/null | Street address |
locations[].place.addressLocality |
string/null | City or locality |
locations[].place.addressRegion |
string/null | State or region |
locations[].place.postalCode |
string/null | Postal or ZIP code |
locations[].place.addressCountry |
string/null | Country |
bookingSystemsId[] |
array | External booking system identifier |
Products
GET /api/products/getProduct/{productId} HTTP/1.1
Host: magpie.travel
Accept: application/json
X-Api-Key: 58c068808359e091c310054e43c3c27a
HTTP/1.1 200 OK
Content-Type: application/json
{
"product": {
"id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"internalName": "Hop-On Hop-Off of San Francisco",
"reference": "HoHo-SF1",
"locale": "en",
"timeZone": "Europe/Madrid",
"allowFreesale": false,
"availabilityRequired": true,
"instantConfirmation": true,
"instantDelivery": true,
"availabilityType": ["OPENING_HOURS", "START_TIME"],
"deliveryMethods": ["TICKET", "VOUCHER"],
"deliveryFormats": ["QRCODE", "CODE128", "AZTECCODE", "PDF_URL", "PKPASS_URL"],
"redemptionMethod": ["DIGITAL", "MANIFEST", "PRINT"],
"title": "San Francisco Bus Tour - 2 Day Hop-On Hop-Off",
"shortDescription": "Discover San Francisco with our Hop On - Hop Off Bus Tour. Explore iconic sights, neighborhoods, and landmarks at your own pace.",
"description": "Get ready for an unforgettable journey as our open-top buses take you on a city tour of San Francisco. Immerse yourself in the energy of Chinatown, savor the coastal charm of Fisherman's Wharf, and admire the breathtaking Golden Gate Bridge. With live commentary from knowledgeable guides, you'll learn fascinating facts and stories about the city's history and culture. Visit North Beach, the cultural hub, and explore Union Square, filled with shopping and dining options. Get a taste of history and culture at Civic Center and soak in the bohemian vibes of Haight Ashbury. The 2-day ticket gives you the freedom to hop on and off as you please, allowing you to truly customize your San Francisco experience. Whether you're a solo traveler, a couple, or a family, our Hop On - Hop Off Bus Tour is the perfect way to discover the beauty and charm of San Francisco.",
"features": [
{
"type": "INCLUSION",
"shortDescription": "2 Day Ticket"
},
{
"type": "INCLUSION",
"shortDescription": "Multilingual audio commentary"
},
{
"type": "EXCLUSION",
"shortDescription": "Tips & gratuities"
},
{
"type": "EXCLUSION",
"shortDescription": "Souvenirs & attraction tickets"
},
{
"type": "HIGHLIGHT",
"shortDescription": "Explore iconic sights and neighborhoods"
},
{
"type": "HIGHLIGHT",
"shortDescription": "Multilingual audio commentary for a personalized experience"
},
{
"type": "HIGHLIGHT",
"shortDescription": "Best of of San Francisco from the top deck of an open-top bus"
},
{
"type": "PREBOOKING_INFORMATION",
"shortDescription": "You can redeem your ticket anyime, and Hop On and Off for the next 48 hrs"
},
{
"type": "PREBOOKING_INFORMATION",
"shortDescription": "Children under 2 years are free - no need to book a ticket for them"
},
{
"type": "PREARRIVAL_INFORMATION",
"shortDescription": "Carry a jacket as it can get cold on the bus - especially on the bridge."
},
{
"type": "PREARRIVAL_INFORMATION",
"shortDescription": "Redeem your tickets and start your tour at any time on the date you booked"
},
{
"type": "REDEMPTION_INSTRUCTION",
"shortDescription": "Present your mobile voucher at 2800 Leavenworth Street. Your voucher will be exchanged for your actual ticket to scan on the bus. Once we scan your voucher, each person in your party will have a ticket so you are free travel independently if you like. Tickets are valid for 48 hours from the time of redemption"
},
{
"type": "ACCESSIBILITY_INFORMATION",
"shortDescription": "The vehicles are Wheelchair accessible with ramp, which our staff will take care of. Please note that conditions around all of our Hop-On Hop-Off stops have varying levels of access. Please ask our staff if we can help with further guideance around the city."
},
{
"type": "BOOKING_TERM",
"shortDescription": "Your ticket is valid for the duration specified and allows travel on designated routes during operating hours, boarding only at official stops. Passengers are responsible for their personal belongings and must adhere to safety instructions while onboard. The company is not liable for delays caused by traffic, weather, or unforeseen events."
},
{
"type": "CANCELLATION_TERM",
"shortDescription": "Up to 24 hours before the beginning of the activity: full refund. Less than 24 hours before the beginning of the activity or no-show: no refund"
},
{
"type": "RESTRICTIONS",
"shortDescription": "Minimum age: 3. Maximum age: 99. Minimum Height: 60 inch. Maximum Height: 300 cm. Minimum weight: 15 kg. Not recommended for: People with heart ailments, people who suffer from neck pain. Dress Code: no shorts"
},
{
"type": "REQUIREMENTS",
"shortDescription": "License or certification required: C-class drivers license. Required to bring: Valid Passport. Required Information for Booking: Heights & Weights, Dates of Birth"
},
{
"type": "ADDITIONAL_INFORMATION",
"shortDescription": "Food and drinks are not included, but stops are mostly close to shops and restaurants. Travel dates are flexible, so no need to notify us if you want to use your tickets a day or two earlier of later"
}
],
"faqs": [
{
"question": "What time do buses start in the morning",
"answer": "Buses start at 9am and stop at 5pm during the week, and 6pm on weekends."
},
{
"question": "How often do buses run",
"answer": "Buses run every 15-30 mins."
}
{
"question": "Are tickets to attractions included in the tour",
"answer": "No, the tour does not include entrance fees to attractions that we stop at. Always check ahead for availability of attractions, especially Alcatraz. "
}
],
"media": [
{
"src": "https://res.cloudinary.com/example/image/logo.png",
"type": "image/png",
"rel": "LOGO",
"title": "Company Logo",
"caption": "Official logo of the tour company",
"copyright": "© 2025 Tour Company"
},
{
"src": "https://res.cloudinary.com/example/image/cover.jpg",
"type": "image/jpeg",
"rel": "COVER",
"title": "Tour Cover Image",
"caption": "San Francisco Bus Tour panoramic view",
"copyright": "© 2025 Tour Company"
},
{
"src": "https://res.cloudinary.com/example/image/gallery/image1.jpg",
"type": "image/jpeg",
"rel": "GALLERY",
"title": "Golden Gate Bridge",
"caption": "Iconic Golden Gate Bridge view from the tour bus",
"copyright": "© 2025 Tour Company"
},
{
"src": "https://res.cloudinary.com/example/image/gallery/image2.jpg",
"type": "image/jpeg",
"rel": "GALLERY",
"title": "Fisherman's Wharf",
"caption": "Bustling scene at Fisherman's Wharf",
"copyright": "© 2025 Tour Company"
}
],
"locations": [
{
"title": "99 Jefferson Street, San Francisco, CA 94133, USA",
"shortDescription": null,
"types": "Business Address",
"place": {
"latitude": 37.807863999999995,
"longitude": -122.4139391,
"streetAddress": "99 Jefferson Street",
"addressLocality": "San Francisco County",
"addressRegion": "California",
"postalCode": "94133",
"addressCountry": "United States",
"postOfficeBoxNumber": "San Francisco County",
"identifiers": [],
"sameAs": []
}
},
{
"title": "2800 Leavenworth St, 2800 Leavenworth St, San Francisco, CA 94133, USA",
"shortDescription": null,
"types": "Starts",
"place": {
"latitude": 37.8070176,
"longitude": -122.41875599999999,
"streetAddress": "2800 Leavenworth Street",
"addressLocality": "San Francisco County",
"addressRegion": "California",
"postalCode": "94133",
"addressCountry": "United States",
"postOfficeBoxNumber": "San Francisco County",
"identifiers": [],
"sameAs": []
}
},
{
"title": "99 Jefferson Street, San Francisco, CA 94133, USA",
"shortDescription": null,
"types": "Google Business Profile",
"place": {
"latitude": 37.807863999999995,
"longitude": -122.4139391,
"streetAddress": "99 Jefferson Street",
"addressLocality": "San Francisco County",
"addressRegion": "California",
"postalCode": "94133",
"addressCountry": "United States",
"postOfficeBoxNumber": "San Francisco County",
"identifiers": [],
"sameAs": []
}
}
],
"categoryLabels": [
"private-tours",
"multi-day",
"wheelchair-accessible",
"accommodation-included",
"food-included",
"drinks-included",
"skip-the-line"
],
"durationMinutesFrom": 2880,
"durationMinutesTo": null,
"commentary": [
{
"format": "IN_PERSON",
"language": "en"
},
{
"format": "RECORDED_AUDIO",
"language": "es"
},
{
"format": "WRITTEN",
"language": "de"
}
],
"defaultCurrency": "USD",
"availableCurrencies": [],
"pricingPer": [],
"options": [
{
"name": "Option Name",
"code": "Option Code",
"description": "Option Description",
"units": [
{
"id": "adult",
"type": "ADULT",
"option_id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"pricingFrom": [
{
"original": 5999,
"retail": 5999,
"net": 4999,
"currency": "USD",
"currencyPrecision": 2
}
]
},
{
"id": "child",
"type": "CHILD",
"option_id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"pricingFrom": [
{
"original": 3999,
"retail": 3999,
"net": 2999,
"currency": "USD",
"currencyPrecision": 2
}
]
}
]
}
]
}
}
Example for MP+ fields
{
"account": {
"id": "d7a11efb-da83-4715-b8b3-f2c2ce74f81e",
"name": "Skyline Sightseeing"
},
"timeZone": "Europe/Madrid",
"confirmationNecessary": false,
"startDate": "2021-05-27",
"endDate": "2028-05-26",
"category": "Tours & Sightseeing",
"redemptionType": "voucher",
"guideType": "Instructor",
"tripDifficulty": "Easy",
"emergencyPhone": "+7 8666066700",
"bookingMinPax": 5,
"bookingMaxPax": 15,
"maxGroupSize": 15,
"ageRestrictionType": "MinAge",
"ageRestrictionValue": 12,
"heightRestrictionType": "MaxHeight",
"heightRestrictionValue": 120,
"heightRestrictionUnit": "cm",
"weightRestrictionType": "MaxWeight",
"weightRestrictionValue": 120,
"weightRestrictionUnit": "Kg",
"dressCode": "Comfortable shoes and clothes",
"foodIncluded": "Snacks are available for purchase. Breakfast is included",
"drinksIncluded": "Soft drinks or tea. Alcoholic drinks available for purchase - must be 21 years of age."
}
The Product resource consists of the following fields:
OCTO Fields
Attribute | Type | Description |
---|---|---|
id |
string | The unique identifier of the product in Magpie |
internalName |
string | The name this suppliers calls the product |
reference |
string/null | An optional code this supplier might use to identify the product |
locale |
string (IETF BCP 47 tag) | A language code indicating what language this product content is in |
timeZone |
string (IANA tz identifier) | The IANA TimeZone name this product is located in |
allowFreesale |
boolean | Whether a booking can be made for this product without having to query availability first |
availabilityRequired |
boolean | Whether an availabilityId is required when creating a booking. Without this the booking will be open-dated and not have a specified travel date |
instantConfirmation |
boolean | Whether bookings will be immediately confirmed when a sale is made, otherwise the supplier will later either accept or reject the booking |
instantDelivery |
boolean | Whether tickets will be delivered immediately upon booking confirmation |
availabilityType[] |
array | What type of availability this product has. Values include: START_TIME for fixed departure times (e.g., tours), OPENING_HOURS for venues with operating hours where guests can visit anytime |
deliveryMethods[] |
array | How tickets will be delivered. Values include: TICKET (individually per unit), VOUCHER (one for the whole booking) |
deliveryFormats[] |
array | Formats for ticket delivery. Values include: QRCODE , CODE128 , AZTECCODE , PDF_URL , PKPASS_URL |
redemptionMethod[] |
array | How guests present tickets upon arrival. Values include: MANIFEST (name on list), DIGITAL (scan on mobile), PRINT (physical printout required) |
title |
string | The public, customer-facing name of the product. This name is displayed to end customers and should accurately represent the product for marketing and sales purposes |
shortDescription |
string/null | A brief, customer-facing description of the product. This field provides a concise overview of the product and can be null if no description is available |
description |
string/null | A detailed description of the product, offering in-depth information about it and relevant details. This field can be null if extended details are not provided |
features[] |
array | Array of feature objects with different types (INCLUSION, EXCLUSION, HIGHLIGHT, etc.) |
features[].type |
string | Type of feature (INCLUSION, EXCLUSION, HIGHLIGHT, REDEMPTION_INSTRUCTION, PREBOOKING_INFORMATION, PREARRIVAL_INFORMATION, ADDITIONAL_INFORMATION, BOOKING_TERM, CANCELLATION_TERM, ACCESSIBILITY_INFORMATION, RESTRICTIONS, REQUIREMENTS) |
features[].shortDescription |
string/null | Description of the feature |
faqs[] |
array | Array of frequently asked questions related to the product |
faqs[].question |
string | The text of the frequently asked question |
faqs[].answer |
string | The detailed response to the corresponding question |
media[] |
array | List of media files hosted at stable URLs. You can pass additional parameters (media_limit: to specify the number of images, media_offset: to skip a certain number of records such as logos or covers). |
media[].src |
string | The URL of the media file. Must be stable and publicly accessible |
media[].type |
string | Specifies the type of the media file, which indicates its format and intended usage (e.g., image/jpeg, image/png, video/mp4, video/avi, external/youtube, external/vimeo) |
media[].rel |
string | Relationship of the media to the content (e.g., "LOGO", "COVER", "GALLERY") |
media[].title |
string/null | Title or name of the media |
media[].caption |
string/null | Caption providing context about the media |
media[].copyright |
string/null | Copyright status or usage restrictions |
locations[] |
array | List of geographical locations associated with the product |
locations[].title |
string/null | Name of the location |
locations[].shortDescription |
string/null | Brief description of the location |
locations[].type |
string | Role of the location. (e.g., START, POINT_OF_INTEREST, END, REDEMPTION) |
locations[].place |
array | Geospatial and postal address data for the location |
locations[].place.latitude |
float | Latitude of the location in decimal degrees |
locations[].place.longitude |
float | Longitude of the location in decimal degrees |
locations[].place.streetAddress |
string/null | Street address |
locations[].place.addressLocality |
string/null | City or locality |
locations[].place.addressRegion |
string/null | State or region |
locations[].place.postalCode |
string/null | Postal or ZIP code |
locations[].place.addressCountry |
string/null | Country |
categoryLabels[] |
array | Labels representing categories applicable to the product (e.g., "private-tours", "wheelchair-accessible") |
durationMinutesFrom |
integer | Duration of the product in minutes. Minimum if flexible |
durationMinutesTo |
integer/null | Maximum duration if flexible, null if fixed duration |
commentary[] |
array | List of commentary options available |
commentary[].format |
string | Enum: IN_PERSON, RECORDED_AUDIO, WRITTEN, OTHER. Format of commentary |
commentary[].language |
string | IETF BCP 47 tag of language for commentary |
defaultCurrency |
string | ISO 4217 currency code for default pricing |
availableCurrencies[] |
array | List of ISO 4217 currency codes supported |
pricingPer[] |
array | Enum: UNIT, BOOKING. How pricing is applied |
options[] |
array | List of all options (variations of the product). Each product must have at least one option |
MP+ Fields
Attribute | Type | Description |
---|---|---|
account |
object | Contains ID and name of the company account that owns the product |
confirmationNecessary |
boolean | Customer is required to confirm before travel |
startDate |
date | The date when the product starts operating (optional) |
endDate |
date | The date when the product stops operating (optional) |
category |
string | The product category |
redemptionType |
string | Tickets help at office, or Voucher scanned / collected |
guideType |
string | Tour Guide, Host, Greeter, Instructor or Driver |
tripDifficulty |
string | Easy, Moderate or Challenging |
emergencyPhone |
string | Emergency Phone Number for guests |
bookingMinPax |
integer | Minimum guests per booking |
bookingMaxPax |
integer | Maximum guests per booking |
maxGroupSize |
integer | Maximum group size on the product |
ageRestrictionType |
string | Age restrictions for guests |
ageRestrictionValue |
integer | Age in years |
heightRestrictionType |
string | Height restrictions: Minimum or Maximum |
heightRestrictionValue |
integer | Height restriction value |
heightRestrictionUnit |
string | Height Unit: cm or inches |
weightRestrictionType |
string | Weight restrictions: Minimum or Maximum |
weightRestrictionValue |
integer | Weight restriction value |
weightRestrictionUnit |
string | Weight Unit: Kg or Lbs |
dressCode |
string | Dress code requirements for guests |
foodIncluded |
string | Food included in the product |
drinksIncluded |
string | Drink(s) included in the product |
Enum definition
Feature Types
Value | Description |
---|---|
INCLUSION |
Clearly lists what is included in the experience, emphasizing completeness and value. Examples: "Hotel pickup included," "Lunch provided," "All safety equipment supplied." This field is intended to be informational but can also be used as promotional, as inclusions can be unique features of products. |
EXCLUSION |
Specifies what is NOT included in the experience, helping manage expectations and reducing uncertainty. Examples: "Gratuities not included," "Admission tickets must be purchased separately." Typically, add items here that the guest might expect to be included, but is not. |
HIGHLIGHT |
Showcases key selling points or unique aspects to attract customers. Typically includes 3-5 distinct features. Examples: "Skip-the-line access to the Eiffel Tower," "Small-group expert-guided tour," "Private wine tasting." |
PREBOOKING_INFORMATION |
Highlights critical information customers must know before booking, to prevent cancellations or negative experiences. Examples: "Strict minimum age of 12 years," "Moderate fitness level necessary," "Participants must weigh under 220 lbs." |
PREARRIVAL_INFORMATION |
Provides essential instructions and tips for customers before arrival to ensure a smooth experience. Examples: "Lunch is not provided; please eat beforehand," "Bring photo ID for check-in," "Boat can be cold and windy - wear warm clothing." |
REDEMPTION_INSTRUCTION |
Gives clear, detailed instructions on how to redeem the booking. Includes information such as voucher presentation method, identification needed, and detailed directions. Examples: "Present mobile voucher at entrance," "Check-in at kiosk near gate 3," "Bring valid government-issued ID." |
ACCESSIBILITY_INFORMATION |
Describes the accessibility features or limitations, helping guests with specific needs understand suitability. Examples: "Wheelchair accessible throughout," "Service animals permitted," "Not suitable for guests with mobility impairments." |
BOOKING_TERM |
Defines the terms related to booking, payment, and reservation modifications. Examples: "Full payment required at booking," "Confirmation sent within 24 hours," "Changes permitted up to 48 hours in advance." |
CANCELLATION_TERM |
Outlines policies regarding cancellations, refunds, and penalties. Examples: "Full refund if cancelled 72 hours before," "No refunds within 24 hours of departure," "Flexible rescheduling allowed." |
RESTRICTIONS |
Lists conditions or limitations that customers must adhere to, sunch as height, weight and age restrictions. Examples: "Maximum weight limit of 250 lbs," "No pets allowed," "Alcohol consumption prohibited before activity." |
REQUIREMENTS |
Specifies mandatory conditions or documentation customers must meet or present. Examples: "Valid driver's license required," "Signed liability waiver needed," "Closed-toe shoes mandatory." |
ADDITIONAL_INFORMATION |
Acts as a catch-all category for supplementary details enhancing customer experience. Examples: "Bring sunscreen and sunglasses," "Weather conditions may affect itinerary," "Optional upgrades available upon request." |
Location Types
Value | Description |
---|---|
START |
The starting point or meeting location for the product or experience. This is where customers are expected to gather before the activity begins. |
END |
The final point or drop-off location where the activity concludes. |
BUSINESS_ADDRESS |
The official business address of the service provider or company offering the experience or product. |
GOOGLE_BUSINESS_PROFILE |
The location information associated with the provider's Google Business Profile, which may include contact details, photos, and reviews. |
REDEMPTION |
A location where customers must go to exchange tickets, collect passes, or redeem vouchers before proceeding to the starting point or experience (if applicable). |
POINT_OF_INTEREST |
A notable location or attraction that customers may see or pass by without stopping. Generally used for sightseeing locations. |
REDEMPTION |
A location where customers must go to exchange tickets, collect passes, or redeem vouchers before proceeding to the starting point or experience (if applicable). |
Category Label
Value | Description |
---|---|
private-tours |
Indicates tours conducted exclusively for a private group, with no other participants. |
multi-day |
Products that span multiple days, typically requiring overnight accommodations. |
wheelchair-accessible |
Activities or venues that provide accessibility features for wheelchair users. |
accommodation-included |
Products that include lodging as part of the package. |
food-included |
Activities that include meals or food services during the experience. |
drinks-included |
Activities that include beverages (alcoholic or non-alcoholic) during the experience. |
skip-the-line |
Products that offer expedited entry or priority access to attractions. |
Options
{
"options": [
{
"id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"name": "Option Name",
"reference": "Option Reference",
"description": "Option Description",
"units": [
{
"id": "adult",
"type": "ADULT",
"option_id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"pricingFrom": [
{
"original": 5999,
"retail": 5999,
"net": 4999,
"currency": "USD",
"currencyPrecision": 2
}
]
},
{
"id": "child",
"type": "CHILD",
"option_id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"pricingFrom": [
{
"original": 3999,
"retail": 3999,
"net": 2999,
"currency": "USD",
"currencyPrecision": 2
}
]
}
]
}
]
}
Option Fields
Field | Type | Description |
---|---|---|
id |
string | Unique identifier for this unit. |
name |
string | Customer-facing name of this option (e.g., "2-Day Package"). |
reference |
string/null | Optional code used to identify this option. |
description |
string/null | Detailed description of this option, including any special instructions or requirements. |
Units
{
"units": [
{
"id": "adult",
"type": "ADULT",
"option_id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"pricingFrom": [
{
"original": 5999,
"retail": 5999,
"net": 4999,
"currency": "USD",
"currencyPrecision": 2
}
]
},
{
"id": "child",
"type": "CHILD",
"option_id": "1fb7a9bc-3479-43a3-afe3-a788e508feba",
"pricingFrom": [
{
"original": 3999,
"retail": 3999,
"net": 2999,
"currency": "USD",
"currencyPrecision": 2
}
]
}
]
}
Unit Fields
Field | Type | Description |
---|---|---|
id |
string | Unique identifier for this unit (e.g., "4ba05d14-3c7c-433b-80e1-867e7a665829"). |
type |
string | The type of unit. |
option_id |
string | Identifier of the option this unit belongs to (e.g., "c84b3f76-5fe1-455c-a677-1aa00b17ebd1"). |
pricingFrom |
array | Contains pricing information for this unit. |
pricingFrom[].original |
integer | Original price in the smallest currency unit (e.g., cents). |
pricingFrom[].retail |
integer | Customer-facing price in the smallest currency unit. |
pricingFrom[].net |
integer/null | Net price (before markup) if available, or null. |
pricingFrom[].currency |
string | ISO 4217 currency code for this price. |
pricingFrom[].currencyPrecision |
integer | Number of decimal places for the currency (e.g., 2 for USD). |
Unit Types
Value | Description |
---|---|
ADULT |
Standard adult pricing category, typically for participants above a certain age threshold. |
CHILD |
Pricing category for younger participants, usually with age restrictions. |
YOUTH |
Category for adolescents/teenagers that falls between child and adult categories. |
SENIOR |
Special pricing category for older participants, typically with age minimums. |
STUDENT |
Special pricing for participants with valid student identification. |
FAMILY |
Package pricing for a defined group of mixed participants (e.g., 2 adults + 2 children). |
INFANT |
Category for very young participants (usually under 2-3 years), often free or heavily discounted. |
GROUP |
Pricing for a specified number of participants booking together. |
MILITARY |
Special pricing for active or retired military personnel with valid identification. |
RESIDENT |
Special pricing for local residents with proof of residency. |