---
title: "Product availability and pricing"
method: GET
path: "/products/{productId}/availability"
tags: ["Availability & Pricing API"]
---

# Product availability and pricing

`GET /products/{productId}/availability`

## Path parameters

- `productId` integer, required

## Query parameters

- `currency` string
- `lang` string
- `start_date` string, date
- `end_date` string, date
- `skip_to_first_available_day` boolean

## Headers

- `Authorization` string, required

## Response `200`

Successful operation.

- object
  - `success` boolean
  - `capped_at` string, nullable — The capped date that is used to limit the availability information in the response. For example, *capped_at* 2020-08-19 means the last information in the response is 2020-08-18. We capped the endpoint response to a maximum of 31 days per request to manage the response time of the endpoint.
  - `next_available_date` string, nullable — The first available date for the product. For example, *next_available_date* 2020-08-19 means that the first date in which there is availability and the product can bo sold is 2020-08-18.
  - `sales_enabled` boolean — Indicates whether the product is available for sale or not.
  - `dynamic_pricing` boolean — If true, the price depends on the day and timeslot, as well as the day on which the data is requested. Products with dynamic pricing can have different prices for one date for one variant ID, and it allows for active price changes from the supplier.
  - `max_tickets_per_order` number, nullable — Maximum total number of tickets of any product variant that can be purchased in one order. Returned as `null` if no restriction applies.
  - `min_tickets_per_order` number, nullable — Minimum total number of tickets of any product variant that can be purchased in one order. Returned as `null` if no restriction applies.
  - `dates` object[] — Availability information for the specific dates.
    - `date` string — Date of the availability information. Format YYYY-MM-DD.
    - `availability` number — Maximum number of tickets that can be purchased together for this date.
    - `price` number, nullable — Listing price per date. Can be null if there is no availability.
    - `currency` string — The currency used in the *price*.
    - `timeslots` object[] — List of available timeslots for a product in the venues timezone using the format HH:MM.
      - `time` string — Information on time of the availability. Format HH:MM or whole_day for a product without timeslots.
      - `availability` number — Maximum number of tickets that can be purchased together for this timeslot.
      - `timezone` string — Timeslot timezone, following the venue timezone. In tz format.
      - `variants` object[]
        - `id` integer — Variant identifier.
        - `currency` string — The currency used in the *price_component*.
        - `max_tickets` integer — Maximum number of tickets available for the specific variant.
        - `price_mediation` object — Variant price components for mediation partners. All amounts in currency as defined on the request.
          - `sale_ticket_value_incl_vat` number, nullable — Basic price of a single ticket from the supplier. If `booking_fee_incl_vat` contains a value > 0, `sale_ticket_value_incl_vat` value should be shown to the customer as Face Value Price.
          - `booking_fee_incl_vat` number, nullable — Booking fee. If `booking_fee_incl_vat contains a value` > 0, this value should be shown to the customer at checkout.
          - `total_retail_price_incl_vat` number, nullable — Total retail price including VAT. The amount corresponds with the sum of `sale_ticket_value_incl_vat` and `booking_fee_incl_vat.` Any additional charges to this price are for the risk of the Distributor.
          - `distributor_commission_excl_vat` number, nullable — Distributor commission excluding VAT. Products with dynamic pricing have the final amount in the invoice.
          - `prediscount_price_incl_vat` number, nullable — Pre-discount price returned in case a discount applies to the `price` of this product.
          - `estimated_partner_rate` number, nullable — As an intermediary of Tiqets, you receive a partner commission for your services in accordance with your partner contract. The Estimated Partner Rate is merely displayed to indicate the estimated difference between the ticket retail price (including VAT) and your estimated partner commission (excluding VAT). No rights can be derived from this estimation. The terms of your partner contract shall prevail and take precedence in all cases.
        - `price_son` object — In the past, this object returned price components for the now deprecated SON pricing type. This object can be completely ignored and is only returned for compatibility with legacy integrations. All values are always returned as `null`.
          - `net_payment_by_distributor` number, nullable — Always `null`.
          - `venue_legal_mode` string, nullable — Always `null`.
          - `collection_of_fee_on_behalf_of_venue` number, nullable — Always `null`.
          - `distributor_discount_excl_vat` number, nullable — Always `null`.
          - `payable_vat_by_tiqets` number, nullable — Always `null`.
          - `distributor_booking_fee_excl_vat` number, nullable — Always `null`.
          - `face_value_price_excl_vat` number, nullable — Always `null`.
          - `face_value_price_incl_vat` number, nullable — Always `null`.
          - `tiqets_retail_price_incl_vat` number, nullable — Always `null`.
          - `distributor_commission_excl_vat` number, nullable — Always `null`.
        - `pricing_restriction` string, nullable — Deprecated field; always `null`. Always follow 'total_retail_price_incl_vat' and do not change the price.
  - `variants` object[]
    - `id` integer — Variant identifier.
    - `label` string — Localized label for the variant.
    - `valid_with_variant_ids` integer[], nullable — List of variant_ids. If the list is not `null`, this variant can only be booked in combination with at least one of the listed variant_ids. A common use case are infant variants which require an adult variant.
    - `description` string, nullable — Localized description for the variant with embedded age ranges.
    - `requires_visitors_details` string[], nullable — For products that require visitor's details, this is a list of additional data fields required when placing an order. Please find the detailed requirements of the individual elements in the documentation of our Booking API endpoints.
    - `variant_type` 'adult' | 'youth' | 'child' | 'infant' | 'senior' | 'family' | 'regular' | 'reduced' — Variant type classification information. This field is intended to enable partners to do machine matching/processing of certain properties of a variant.
    - `maximum_visitors_per_ticket` integer — Number of visitors that can use one ticket of this type. If the variant is not of type family, the value is always 1. Family variants can typically be used by more than one visitor, a detailed description can be found in the label and description of the variant.
    - `languages` string[], nullable — List of the languages of available tour guides for this variant. The format generally follows ISO 639-1 codes; for languages that do not have a 639-1 code, it is in 639-3.
    - `language_selection` string[], nullable — List of the languages of available tour guides for this variant. The format follows ISO 639-3 codes. If this is not `null`, customers need to select a language on the tiqets.com checkout. Please refer to [How to implement language selection](https://developers.tiqets.dev/integration-guides/product-integration/how-to-implement-language-selection) for more details.
    - `is_addon` boolean — True if the variant is an addon that can only be sold in combination with a non-addon variant. False if the variant can be sold as stand-alone.
    - `group_ids` integer[] — List of group ID, associated with the variant. NOTE: Multiple IDs can be associated with one variant.
    - `cancellation` object — Cancellation information.
      - `window` integer, nullable — The cancellation window in hours corresponds to the cancellation policy.
      - `policy` 'before_timeslot' | 'before_date' | 'never' — Indicates the cancellation policy of the product. Possible values: - before_date: Cancellation is possible until X hours (returned as `window`) before midnight on the visit date. - before_timeslot: Cancellation is possible until X hours (returned as `window`) before the booked timeslot (if the product makes use of timeslots) or the opening hour of the venue (if the product does not have timeslots). - never: Cancellation is not possible for this product.
    - `min_per_order` integer, nullable — The minimum number of tickets required to create an order.
    - `max_per_order` integer, nullable — The maximum number of tickets allowed to create an order.
  - `groups` object[] — Group ID and label description.
    - `id` integer
    - `name` string

## Other responses

- `400` — Bad Request -- Check your request parameters (typo in parameter or invalid value).
- `401` — Unauthorized -- Your API key is incorrect.
- `403` — Forbidden -- The endpoint or parameters are not allowed for the matching API key.
- `404` — Not Found -- Requested resource/endpoint could not be found.
- `405` — Method Not Allowed -- Check your request method.
- `429` — Too Many Requests -- We currently apply a fair-use policy, but we might enforce limits in the future.
- `500` — Internal Server Error -- We had a problem with our server. Try again later.
- `503` — Service Unavailable -- We're temporarily offline for maintenance. Please try again later.

---

[API](https://skmtc.net/tiqets/apis/tiqets-distributor-api.md) · [All operations](https://skmtc.net/tiqets/apis/tiqets-distributor-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tiqets/tiqets-distributor-api/versions/eaf9cf96606a/schema)
