Skip to content

BeMyGuest API v2.0 (2.1)

The BeMyGuest API is the industry benchmark preferred by online travel agents, designed solely for Asia's attractions, tours and activities. This comprehensive API provides real-time access to a vast inventory of travel products.

Key Features:

  • Product Discovery: Search and retrieve detailed information for a wide range of travel products, including attractions, tours, and activities.
  • Real-Time Availability and Pricing: Check live availability and get up-to-date pricing for specific product types and dates.
  • End-to-End Booking Management: Create, confirm, and cancel bookings seamlessly.
  • Voucher Retrieval: Access and download booking vouchers directly through the API.
  • Configuration: Fetch essential configuration data such as supported languages, currencies, and locations to customize your integration.
Download OpenAPI description
Languages
Servers
Mock server

https://docs.bemyguest.com.sg/_mock/openapi/

Api Demo Server

https://api.demo.bemyguest.com.sg/

Api Production Server

https://api.bemyguest.com.sg/

Products

Endpoints for searching and retrieving product details.

Operations

Product-Types

Endpoints for retrieving product type information, pricing, and availability.

Operations

Request

Returns a list of all available product-types for a given product UUID.

This is useful for understanding the different variations or options available for a single product.

Security
Authorization
Path
uuidstring(uuid)required

UUID of product

curl -i -X GET \
  'https://docs.bemyguest.com.sg/_mock/openapi/v2/products/{uuid}/product-types' \
  -H 'X-Authorization: YOUR_API_KEY_HERE'

Responses

Successful Response Listing all Product Types for a Product

Bodyapplication:json
dataArray of objects(ProductTypeSummary)
data[].​uuidstring
data[].​titlestring
data[].​linksArray of objects(Link)
data[].​links[].​methodstringrequired
data[].​links[].​relstringrequired
data[].​links[].​hrefstringrequired
Response
application:json
{ "data": [ { … }, { … } ] }

Request

Retrieves the full details of a specific product-type using its UUID.

This includes information about pricing, availability, and booking requirements. You can specify which fields to return and the language for the response.

Security
Authorization
Path
uuidstring(uuid)required

UUID of product type

Query
fieldsstring

fields - comma separated list of fields to retrieve

languagestring

language - UUID or code may be provided

curl -i -X GET \
  'https://docs.bemyguest.com.sg/_mock/openapi/v2/product-types/{uuid}?fields=string&language=string' \
  -H 'X-Authorization: YOUR_API_KEY_HERE'

Responses

A successful response containing the product type details.

Bodyapplication/json
dataobject(ProductType)

The full ProductType Details information object

data.​uuidstring

UUID of product-type

data.​titlestring

Title of product type, always in English

data.​titleTranslatedstring

Title of product type translated on requested language

data.​descriptionstring

Description of product type, always in English

data.​descriptionTranslatedstring

Description of product translated on requested language

data.​durationDaysintegerint32

Duration of activity in days

data.​durationHoursintegerint32

Duration of activity in hours

data.​durationMinutesintegerint32

Duration of activity in minutes

data.​daysInAdvanceinteger or nullint32

How many days in advance booking can be made. NULL if not applicable

data.​cutOffTimestring or null

Booking can't be made after this time. NULL if not applicable

data.​isNonRefundableboolean

Product type non-refundable true/false

data.​allowChildrenboolean

Is a child allowed to book this product type

data.​allowInfantboolean

Is an infant allowed for this product type (there is no pricing for infants!)

data.​minInfantAgeinteger or nullint32

Minimum age allowed for an infant

data.​maxInfantAgeinteger or nullint32

Maximum age allowed for an infant

data.​maxGroupinteger or nullint32

Maximum number of group: sum of adults, children and senior or null when not applicable

data.​minGroupinteger or nullint32

Minimum number of group: sum of adults, children and senior or null when not applicable

data.​instantConfirmationboolean

TRUE then confirmed booking this product should return new Booking status = approved, but if we're out of stock of e-tickets it can still return a 'Waiting' status

data.​nonInstantVoucherboolean

TRUE = voucher needs manual processing

data.​directAdmissionboolean

TRUE, the voucher allows direct admission, otherwise customer needs to redeem vouchers. Information about voucher redemption is showed in voucherUse and voucherRedemptionAddress

data.​voucherUsestring or null

Instruction on how to use the voucher

Default "null"
data.​voucherUseTranslatedstring or null

voucherUser translated on request language

Default "null"
data.​voucherRedemptionAddressstring or null

Voucher redemption address if client needs to redeem a voucher.

Default "null"
data.​voucherRedemptionAddressTranslatedstring or null

voucherRedemptionAddress translated on requested language.

Default "null"
data.​voucherRequiresPrintingboolean

TRUE voucher needs to be printed. Otherwise, it can be presented eg. on mobile device

data.​meetingTimestring or null

Meeting time

Default "null"
data.​meetingAddressstring or null

Meeting location address

Default "null"
data.​meetingLocationstring or null

Instructions about meeting location

Default "null"
data.​meetingLocationTranslatedstring or null

Translated version of meetingLocation on requested language

Default "null"
data.​cancellationPoliciesArray of objects

Cancellation Policies only applicable for refundable product

data.​cancellationPolicySummarystring or null

Summary of Cancellation Policies for refundable product

data.​ticketTypesArray of objects(TicketTypes)

List of all ticket types for this product type

data.​ticketTypes[].​typestringrequired
data.​ticketTypes[].​labelstringrequired
data.​ticketTypes[].​allowedbooleanrequired
data.​ticketTypes[].​minintegerint32required
data.​ticketTypes[].​maxintegerint32required
data.​ticketTypes[].​minAgeintegerint32required
data.​ticketTypes[].​maxAgeintegerint32required
data.​ticketTypes[].​recommendedMarkupnumberDeprecatedrequired
data.​ticketTypes[].​parityPricenumberDeprecatedrequired
data.​ticketTypes[].​gateRatePriceintegerint32Deprecatedrequired
data.​validityobject

Four validity types of the e-tickets/vouchers currently available:

data.​timeslotsArray of objects

Available timeslots for product, might be null. If the ProductType has timeslots, the timeslotUUID of the product is REQUIRED in Check a Booking and Create a new booking methods

data.​timezonestring

Timezone of the product type

data.​optionsobject(ProductTypeOptions)

Booking options

data.​options.​perBookingArray of objects(ProductTypeOption)>= 0 items

Options per booking array

data.​options.​perBooking[].​uuidstringrequired
data.​options.​perBooking[].​namestringrequired
data.​options.​perBooking[].​nameTranslatedstringrequired
data.​options.​perBooking[].​descriptionstringrequired
data.​options.​perBooking[].​descriptionTranslatedstringrequired
data.​options.​perBooking[].​requiredbooleanrequired
data.​options.​perBooking[].​addOnbooleanrequired
data.​options.​perBooking[].​formatRegexstringrequired
data.​options.​perBooking[].​inputTypeintegerint32required
data.​options.​perBooking[].​minNumberintegerint32required
data.​options.​perBooking[].​maxNumberintegerint32required
data.​options.​perBooking[].​validFromstringrequired
data.​options.​perBooking[].​validTostringrequired
data.​options.​perPaxArray of objects(ProductTypeOption)>= 0 items

Options that are required/available for each person on the booking

data.​options.​perPax[].​uuidstringrequired
data.​options.​perPax[].​namestringrequired
data.​options.​perPax[].​nameTranslatedstringrequired
data.​options.​perPax[].​descriptionstringrequired
data.​options.​perPax[].​descriptionTranslatedstringrequired
data.​options.​perPax[].​requiredbooleanrequired
data.​options.​perPax[].​addOnbooleanrequired
data.​options.​perPax[].​formatRegexstringrequired
data.​options.​perPax[].​inputTypeintegerint32required
data.​options.​perPax[].​minNumberintegerint32required
data.​options.​perPax[].​maxNumberintegerint32required
data.​options.​perPax[].​validFromstringrequired
data.​options.​perPax[].​validTostringrequired
data.​hasOptionsboolean

true/false, indicate whether product type has booking options.

data.​hasFileUploadOptionsboolean

true/false, indicate whether product type has booking option that require file upload

data.​hasPriceOptionsboolean

true/false, indicate whether product type has booking option which has a price.

data.​hasRequiredPriceOptionsboolean

true/false, indicate whether product type has booking option which has a price and required is TRUE

data.​isBmgVoucherboolean

true/false, indicate whether product type using BMG own voucher code

data.​firstAvailabilityDatestringDeprecated

First date that is available for booking. 'False' if there is no availability date Use calendar endpoint to check availability

data.​allowAdultsbooleanDeprecated

Is an adult allowed to book this product type true/false. Use the ticketTypes object for this information

data.​minPaxinteger or nullint32Deprecated

Minimum number of adults. NULL if not applicable. Use the ticketTypes object for this information

data.​maxPaxinteger or nullint32Deprecated

Maximum number of adults. NULL if not applicable. Use the ticketTypes object for this information

data.​minAdultAgeinteger or nullint32Deprecated

Minimum age allowed for an adult. NULL if not applicable. Use the ticketTypes object for this information

data.​maxAdultAgeinteger or nullint32Deprecated

Maximum age allowed for an adult. NULL if not applicable. Use the ticketTypes object for this information

data.​hasChildPricebooleanDeprecated

Does product has child price

data.​minChildreninteger or nullint32Deprecated

Minimum number of children or null when not allowed. NULL if not applicable. Use the ticketTypes object for this information

data.​maxChildreninteger or nullint32Deprecated

Maximum number of children or null when not allowed. NULL if not applicable. Use the ticketTypes object for this information

data.​minChildAgeinteger or nullint32Deprecated

Minimum age allowed for a child. NULL if not applicable. Use the ticketTypes object for this information

data.​maxChildAgeinteger or nullint32Deprecated

Maximum age allowed for a child. NULL if not applicable. Use the ticketTypes object for this information

data.​allowSeniorsbooleanDeprecated

Is a senior allowed to book this product type. Use the ticketTypes object for this information

data.​minSeniorsinteger or nullint32Deprecated

Minimum number of seniors. NULL if not applicable. Use the ticketTypes object for this information

data.​maxSeniorsinteger or nullint32Deprecated

Maximum number of senior. NULL if not applicable. Use the ticketTypes object for this information

data.​minSeniorAgeinteger or nullint32Deprecated

Minimum age allowed for a senior. NULL if not applicable. Use the ticketTypes object for this information

data.​maxSeniorAgeinteger or nullint32Deprecated

Maximum age allowed for a senior. NULL if not applicable. Use the ticketTypes object for this information

data.​recommendedMarkupnumber or nullDeprecated

Recommended markup to adult prices if you want to match with BMG's recommended prices (RRP). Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​childRecommendedMarkupnumber or nullDeprecated

Recommended markup for child prices if you want to match with BMG's recommended prices (RRP). Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​seniorRecommendedMarkupnumber or nullDeprecated

Recommended markup for senior prices if you want to match with BMG's recommended prices (RRP). Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​adultParityPricenumber or nullDeprecated

Minimal retail price for adult. Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​childParityPricenumber or nullDeprecated

Minimal retail price for child. Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​seniorParityPricenumber or nullDeprecated

Minimal retail price for senior. Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​adultGateRatePricenumber or nullDeprecated

The rate that an adult get directly at the attraction website or gate. Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​childGateRatePricenumber or nullDeprecated

The rate that a child get directly at the attraction website or gate. Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​seniorGateRatePricenumber or nullDeprecated

The rate that a senior get directly at the attraction website or gate. Null if not applicable. Use either the calendar endpoint or price-list endpoint to check pricing

data.​isSrvEligiblebooleanDeprecated

true/false. indicate whether this product type is available for Singapore Rediscover Vouchers Promo.

Response
application/json
{ "data": { "adultGateRatePrice": 68, "allowAdults": true, "allowChildren": false, "allowInfant": false, "allowSeniors": false, "cancellationPolicies": [], "cancellationPolicySummary": "", "childGateRatePrice": null, "childParityPrice": null, "childRecommendedMarkup": null, "cutOffTime": null, "daysInAdvance": null, "description": "Enjoy 5% Off for 2nd Pax!", "descriptionTranslated": "Enjoy 5% Off for 2nd Pax!", "directAdmission": true, "durationDays": 0, "durationHours": 2, "durationMinutes": 0, "firstAvailabilityDate": "2025-09-01", "hasChildPrice": false, "hasFileUploadOptions": false, "hasOptions": true, "hasPriceOptions": false, "hasRequiredPriceOptions": false, "instantConfirmation": true, "isBmgVoucher": true, "isNonRefundable": true, "links": [ … ], "maxAdultAge": 99, "maxChildAge": null, "maxChildren": null, "maxGroup": null, "maxInfantAge": null, "maxPax": 2, "maxSeniorAge": null, "maxSeniors": null, "meetingAddress": null, "meetingLocation": "Make your own way", "meetingLocationTranslated": "Make your own way", "meetingTime": null, "minAdultAge": 13, "minChildAge": null, "minChildren": null, "minGroup": null, "minInfantAge": null, "minPax": 1, "minSeniorAge": null, "minSeniors": null, "nonInstantVoucher": false, "options": [], "maxNumber": null, "minNumber": null, "name": null, "nameTranslated": null, "price": null, "required": true, "uuid": null, "validFrom": null, "validTo": null } }

Get price and availability calendar

Request

Provides a calendar view of pricing and availability for a specific product-type.

You must provide a date_start and date_end to define the period you are interested in. The date range cannot exceed six months.

Security
Authorization
Path
uuidstring(uuid)required

UUID of product type

Query
date_startstring(date)

date_start - product's prices start date, format YYYY-MM-DD

date_endstring(date)

date_end - product's prices end date, must not be greater than six months from the current date, format YYYY-MM-DD

curl -i -X GET \
  'https://docs.bemyguest.com.sg/_mock/openapi/v2/product-types/{uuid}/price-lists?date_start=2019-08-24&date_end=2019-08-24' \
  -H 'X-Authorization: YOUR_API_KEY_HERE'

Responses

A successful response containing a calendar of pricing and availability.

Bodyapplication/json
dataArray of objects(AvailabilityDate)
data[].​availabilityArray of objects or null(Availability)

For all-day products, this contains the daily number of tickets available. For timeslot products, this will be null, and availability is found within each timeslot.

data[].​availability[].​categorystring
Example: "adult"
data[].​availability[].​quantityinteger
Example: 117
data[].​availability[].​typestring
Example: "shared"
data[].​datestring

travel date

data[].​weekdaystring

weekday of travel

data[].​currencystring

currency UUID

data[].​cancellationPolicyArray of objects

Cancellation policy for the product type.

data[].​pricesArray of objects(PriceDetail)

An array of price configurations. Different timeslots can be linked to a specific price configuration using the priceId.

data[].​prices[].​idstring(uuid)
Example: "cb57b5c6-376c-47f5-ad09-606d6850f5e1"
data[].​prices[].​ratesArray of objects(RateDetail)
data[].​prices[].​rates[].​amountnumber
Example: 98
data[].​prices[].​rates[].​categorystring
Example: "adult"
data[].​prices[].​rates[].​currencystring
Example: "SGD"
data[].​prices[].​rates[].​formatstring
Example: "S$98.00"
data[].​prices[].​rates[].​metaobject or Array of arrays
Example: {"markup":16.8639}
One of:
object
data[].​prices[].​rates[].​type"nettPrice" (string) or "retailPrice" (string) or "recommendedPrice" (string) or "minimumSellingPrice" (string)(PriceTypes)
One of:
string("nettPrice")
data[].​timeslotsArray of objects

Timeslot availability for the travel day. Will be null for all-day products.

data[].​timeslots[].​startTimestring(time)
Example: "08:00"
data[].​timeslots[].​endTimestring(time)
Example: "08:00"
data[].​timeslots[].​uuidstring(uuid)
data[].​timeslots[].​priceIdstring(uuid)

Links to a specific price object in the top-level prices array.

data[].​timeslots[].​availabilityArray of objects(Availability)
data[].​timeslots[].​availability[].​categorystring
Example: "adult"
data[].​timeslots[].​availability[].​quantityinteger
Example: 117
data[].​timeslots[].​availability[].​typestring
Example: "shared"
data[].​timezonestring

Timezone of the product type

data[].​optionsArray of objects

booking options for product type for travel date, containing two arrays: perBooking (one option per booking) and perPax (one option for each pax)

data[].​voucherValidityobject

voucher validity for travel date, object containing validity for different ticket types

Response
application/json
{ "data": [ { … } ] }

Check availability and price for a single date

Request

Checks the real-time availability and price for a specific product-type on a single given date.

It is highly recommended to use this endpoint to confirm availability before proceeding with a booking.

Security
Authorization
Path
uuidstring(uuid)required

UUID of product type

datestring(date)required

Date YYYY-MM-DD

curl -i -X GET \
  'https://docs.bemyguest.com.sg/_mock/openapi/v2/product-types/{uuid}/price-lists/{date}' \
  -H 'X-Authorization: YOUR_API_KEY_HERE'

Responses

A successful response containing availability and pricing for a specific date

Bodyapplication/json
dataobject(AvailabilityDate)

Availability and Price For Specified Date

data.​availabilityArray of objects or null(Availability)

For all-day products, this contains the daily number of tickets available. For timeslot products, this will be null, and availability is found within each timeslot.

data.​availability[].​categorystring
Example: "adult"
data.​availability[].​quantityinteger
Example: 117
data.​availability[].​typestring
Example: "shared"
data.​datestring

travel date

data.​weekdaystring

weekday of travel

data.​currencystring

currency UUID

data.​cancellationPolicyArray of objects

Cancellation policy for the product type.

data.​pricesArray of objects(PriceDetail)

An array of price configurations. Different timeslots can be linked to a specific price configuration using the priceId.

data.​prices[].​idstring(uuid)
Example: "cb57b5c6-376c-47f5-ad09-606d6850f5e1"
data.​prices[].​ratesArray of objects(RateDetail)
data.​prices[].​rates[].​amountnumber
Example: 98
data.​prices[].​rates[].​categorystring
Example: "adult"
data.​prices[].​rates[].​currencystring
Example: "SGD"
data.​prices[].​rates[].​formatstring
Example: "S$98.00"
data.​prices[].​rates[].​metaobject or Array of arrays
Example: {"markup":16.8639}
One of:
object
data.​prices[].​rates[].​type"nettPrice" (string) or "retailPrice" (string) or "recommendedPrice" (string) or "minimumSellingPrice" (string)(PriceTypes)
One of:
string("nettPrice")
data.​timeslotsArray of objects

Timeslot availability for the travel day. Will be null for all-day products.

data.​timeslots[].​startTimestring(time)
Example: "08:00"
data.​timeslots[].​endTimestring(time)
Example: "08:00"
data.​timeslots[].​uuidstring(uuid)
data.​timeslots[].​priceIdstring(uuid)

Links to a specific price object in the top-level prices array.

data.​timeslots[].​availabilityArray of objects(Availability)
data.​timeslots[].​availability[].​categorystring
Example: "adult"
data.​timeslots[].​availability[].​quantityinteger
Example: 117
data.​timeslots[].​availability[].​typestring
Example: "shared"
data.​timezonestring

Timezone of the product type

data.​optionsArray of objects

booking options for product type for travel date, containing two arrays: perBooking (one option per booking) and perPax (one option for each pax)

data.​voucherValidityobject

voucher validity for travel date, object containing validity for different ticket types

Response
application/json
{ "data": { "date": "2025-08-20", "weekday": "Wednesday", "cancellationPolicy": [], "currency": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d", "availability": [ … ], "timezone": "Asia/Singapore", "options": [], "voucherValidity": { … }, "prices": [ … ] } }

Bookings

Endpoints for creating and managing bookings.

Operations

Configuration

Endpoints for retrieving API configuration data.

Operations

Requests

Schemas that define requests.

Responses

Schemas that define API responses.

Webhooks