# Emerging Travel Group API > Full-text documentation for the Emerging Travel Group (ETG) API — hotel inventory search, booking, and post-booking management across the B2B, Affiliate, Content, and Midoffice surfaces. This file aggregates every documentation page as plain text for LLM consumption.--- # Overview Source: https://docs.emergingtravel.com/docs/overview/ The Emerging Travel Group (ETG) API documentation will guide you through the process of making a hotel booking. To learn more about the benefits of API integration, check our website. Before using the API, the relevant agreement must be signed. Once integration is complete, certification may be required. --- # Glossary Source: https://docs.emergingtravel.com/docs/glossary/ Quick reference for the terms used across the ETG API documentation. Detailed descriptions follow below. Term Definition API Key token An alphanumeric value generated by the ETG and assigned to a partner contract; used as the credential for HTTP Basic authentication. Partner contract type The kind of API partner contract (Affiliate or B2B); one API key type represents exactly one contract type. Dump An archive file with hotels’ information returned by certain requests, delivered as a temporary, time-limited download link in the Zstd format. SERP Search Engine Results Page — the mechanism for preliminary searching for a hotel with available accommodation matching the given search conditions. Email address The address of the person responsible for your client support and API integration, specified in the account Contacts section. Order group A logical group of orders that represents a single invoice in your account and is paid for in one payment. Supplier types The categories of inventory sources the ETG aggregates: direct chains, direct extranet, OTA, wholesaler, DMC, switch, GDS, and consolidator. API Key token An alphanumeric value generated by the ETG and assigned to a partner contract. Partner contract type The ETG Partner Program offers the following API contract types: Affiliate — Affiliate API. B2B — B2B API. For more details on both types, contact your account manager. ℹ️ One API key type represents only one type of the API partner contract. Dump An archive file with hotels’ information given by some requests. The ETG forms archives in the Zstd format. Each archive should be processed. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Old or previously saved URLs will no longer work after expiration. Dump structure Each archive contains a list of objects divided by the newline character. Each object represents a hotel in the JSON format. Each JSON has structure of the data object given in the Retrieve hotel content call response: B2B. Affiliate. Incomplete dump content example {"address": "Gabriele-Tergit-Promenade 19, Berlin", "amenity_groups": [{"amenities": ...} {"address": "Passeig De Gracia, 68, Barcelona", "amenity_groups": [{"amenities": ...} ... Search Engine Results Page (SERP) A mechanism for preliminary searching for a hotel with available accommodation that meets the given search conditions. Email address The email address of the person responsible for your client support and API integration. Make sure that an email address is specified in: The Contacts section. The contact type properties named Technical questions and API. Order group An order group represents an invoice in your account. The scenario for using an order group: You manually group orders into an invoice within your account. You make a single payment for the invoice. Supplier types Direct chains An association of multiple hotels operating as a collective under unified management. A direct connection may allow the ETG to access the entire portfolio of hotels directly. Direct extranet Hotels with direct contracts with the ETG. Online Travel Agency (OTA) B2C platforms and websites where customers can book hotels online. Wholesaler Players that have direct contracts with hotels worldwide that: Have dedicated contract teams that resell rates to B2B or/and B2C partners. Don’t operate their own B2C websites. Work with partners who either list inventory on their platforms or further resell it. Destination Management Company (DMC) Local players who sign direct contracts with hotels in specific countries. They leverage relationships with local hotels to obtain competitive prices. Often better than large wholesalers or OTAs. Switch (or BedBanks 2.0) Platforms that directly connect with hotels. Global Distribution System (GDS) A technical platform that delivers published rates from a hotel Central Reservation System (CRS) to the end user. Consolidator Companies that engage in wholesale purchasing to resell inventory to B2B and B2C clients --- # Integration Guide Source: https://docs.emergingtravel.com/docs/integration-guide/ This document will guide you through implementing ETG API v3 and provide you with an action plan for upcoming months. Integration Stages Overview The integration consists of 3 stages: Before starting the integration, make sure you have an account in our system. If you’re new to ETG and don’t have an account yet, complete the Registration Stage on our website. If you’re already registered and have an API key, skip this step. ℹ️ Access to the API and technical support is available only for registered partners. The Integration Stage is where you develop the integration independently. Before you start building, we recommend: reviewing this page for a summary of the key integration steps, read the ETG Best Practices for API to ensure efficient implementation, and explore the ETG API documentation for detailed endpoint descriptions and parameters. Please feel free to ask any questions about the API logic during this stage — we’re happy to help. The Certification Stage is where API Launch team reviews your implementation to verify that the integration follows the required API workflow and complies with ETG integration requirements. Before the certification review begins, you must provide the required certification information, including the Pre-certification Checklist and additional integration details requested by the ETG team. For a detailed description of the process, see Certification and Production access section. Below, you will find the recommended API workflow with endpoints to be integrated. Make sure to integrate all required endpoints. Recommended Workflow Please find the recommended workflow diagram with mandatory and required endpoints listed below: Recommended Flow (Prebook from Hotelpage)Alternative Flow (Prebook from Search) sequenceDiagram participant C as Client participant YS as Your System participant ETG as ETG API Note over C, ETG: Search Step C->>YS: Requests city search YS->>YS: Convert city to ETG hotel ids, region or geo search YS->>ETG: Search by Hotel IDs, Region or Geo request ETG-->>YS: Search by Hotel IDs, Region or Geo response YS-->>C: Show city search results C->>YS: Choose the hotel and moves to hotel page YS->>ETG: Retrieve hotelpage request ETG-->>YS: Retrieve hotelpage response YS-->>C: Show hotelpage with room prices C->>YS: Choose the rate Note over C, ETG: Prebook from hotelpage step C->>YS: Start the Prebook YS->>ETG: Prebook request with 'price_increase_percent' alt AVAILABLE ETG-->>YS: AVAILABLE YS-->>C: Continue booking process by opening the booking form alt AVAILABLE (Price changed) YS-->>C: Show new price to client and ask - continue booking with new price (Y/N)? C->>YS: Yes, continue with new price end Note over C, ETG: Booking Step C->>YS: Open the booking form YS->>ETG: Create booking process request ETG-->>YS: Create booking process response YS-->>C: Show the booking form C->>YS: Fills all necessary data C->>YS: Starts the booking process YS->>ETG: Start booking process request ETG-->>YS: Start booking process response loop Every second, until the status is 'ok' YS->>ETG: Check booking process request ETG-->>YS: Check booking process response end YS-->>C: Show the success page else NOT AVAILABLE ETG-->>YS: NOT AVAILABLE (Error no_available_rates) YS-->>C: Show that rate is not available and cannot be booked end sequenceDiagram participant C as Client participant YS as Your System participant ETG as ETG API Note over C, ETG: Search Step C->>YS: Requests city search YS->>YS: Convert city to ETG hotel ids, region or geo search YS->>ETG: Search by Hotel IDs, Region or Geo request ETG-->>YS: Search by Hotel IDs, Region or Geo response YS-->>C: Show city search results C->>YS: Choose the hotel and room with specific rate Note over C, ETG: Prebook from search step YS->>YS: Start the Prebook search step YS->>ETG: Prebook request with 'price_increase_percent' alt AVAILABLE ETG-->>YS: AVAILABLE YS-->>C: Continue booking process by opening the booking form alt Price changed YS-->>C: Show new price to client and ask - continue booking with new price (Y/N)? C->>YS: Yes, continue with new price end Note over C, ETG: Booking Step C->>YS: Open the booking form YS->>ETG: Create booking process request ETG-->>YS: Create booking process response YS-->>C: Show the booking form C->>YS: Fills all necessary data C->>YS: Starts the booking process YS->>ETG: Start booking process request ETG-->>YS: Start booking process response loop Every 3s, until the status is 'ok' or failure YS->>ETG: Check booking process request ETG-->>YS: Check booking process response end YS-->>C: Show the success or failed page else NOT AVAILABLE ETG-->>YS: NOT AVAILABLE (Error no_available_rates) YS-->>C: Show that rate is not available and cannot be booked end Each API method has request and response samples, field descriptions and corresponding error codes. You can find them in the documentation section corresponding to your API type: https://docs.emergingtravel.com/ 1. Static Data Step Hotel static data stands for all information about the hotels and includes full content like images and additional content data. Use Content API to retrieve, store, and regularly update hotel static / content data on your side before implementing the live search and booking flow. The static content received via Content API should be stored in your system and used together with live availability data from search and hotelpage responses. 1.1 Retrieve hotel static data Recommended Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/static/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/static/ Retrieve possible values and translations for static hotel and room parameters. 1.2 Retrieve filter values Required Endpoint Sandbox: https://api-sandbox.worldota.net/api/content/v1/filter_values Endpoint Production: https://api.worldota.net/api/content/v1/filter_values Retrieve available filter values for selecting relevant hotels via Content API. 1.3 Retrieve hotel IDs by filter Required Endpoint Sandbox: https://api-sandbox.worldota.net/api/content/v1/hotel_ids_by_filter/ Endpoint Production: https://api.worldota.net/api/content/v1/hotel_ids_by_filter/ Get the list of hotel IDs matching the required filters. 1.4 Retrieve hotels content by IDs Required Endpoint Sandbox: https://api-sandbox.worldota.net/api/content/v1/hotel_content_by_ids/ Endpoint Production: https://api.worldota.net/api/content/v1/hotel_content_by_ids/ Retrieve hotel static / content data for the selected hotels. 2. Search 2.1 Search by Methods One of the endpoints is required Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/search/serp/region/ - calling this endpoint will return a list of all available hotels within the specified region. https://api-sandbox.worldota.net/api/b2b/v3/search/serp/hotels/ - calling this endpoint will return a list of specific hotels (max 300 in one request; it is advisable to send 300 hotels in one SERP request). https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/ - calling this endpoint will return a list of all hotels within a specified radius of a particular longitude and latitude. Endpoint Production: https://api.worldota.net/api/b2b/v3/search/serp/region/ https://api.worldota.net/api/b2b/v3/search/serp/hotels/ https://api.worldota.net/api/b2b/v3/search/serp/geo/ Search by methods are used to search for hotels with available accommodations that match specified search conditions. However, allowing users to select rates at this stage is not advisable, as the rates may not align with those presented in the subsequent single hotel search on the Retrieve hotelpage (B2B, Affiliate) and/or Prebook rate from hotelpage step (B2B, Affiliate) request. During this first search step using Search by methods, we recommend displaying one or two of the lowest rates for each hotel. In the second step, when using Retrieve hotelpage (B2B, Affiliate) and/or Prebook rate from hotelpage step (B2B, Affiliate) for a single hotel search, all available rates for the selected hotel should be displayed. 2.2 Retrieve hotelpage Required Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/search/hp/ Endpoint Production: https://api.worldota.net/api/b2b/v3/search/hp/ Retrieve hotelpage (B2B, Affiliate) should be used exclusively for hotels the end user has shown interest in. Requests should not be made for every hotel retrieved by region ID or hotel IDs; requests should only be made when the user selects a specific hotel. The recommended storage duration for retrieved rates is up to 1 hour. The availability window for booking requests using this method may extend beyond this timeframe, varying based on internal factors. This endpoint will provide detailed information on a particular hotel with all the prices for rates. We do not recommend matching rates between one of the Search by methods and Retrieve hotelpage (B2B, Affiliate) responses. However, if your logic requires such matching, please contact our API support team — we will advise you on the recommended implementation approach. 3. Prebook Prebook updates the availability of the requested rate. This method attempts to find a comparable or similar rate if the original rate is unavailable. Implementing the Prebook method is recommended. If method is not used: The risk of receiving a soldout error at the booking stage increases. The order confirmation process will take longer. The price_increase_percent (B2B, Affiliate) feature allows ETG to identify the best alternative rate within the price increase range. If this feature is implemented, your clients should be notified of any price changes before proceeding to the booking step. Please note that you can specify price_increase_percent and choose from 0 to 100. If that’s the case, you must notify the end user of the price change. The nuances of integrating the Prebook has been elaborated in the Best Practices. There are two Prebooks available, depending on the partners’ product workflow as it was highlighted in the visual diagrams above: 3.1 Prebook rate from hotelpage step Recommended Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/prebook/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/prebook Prebook rate from hotelpage step (B2B, Affiliate) should be implemented after Retrieve hotelpage (B2B, Affiliate), and must be excluded from the booking flow. 3.2 Prebook rate from search step Recommended Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/serp/prebook/ Endpoint Production: https://api.worldota.net/api/b2b/v3/serp/prebook/ Prebook rate from search step (B2B, Affiliate) should be implemented if partner does not use Retrieve hotelpage (B2B, Affiliate), and wants to start booking on the search step. This call must be excluded from the booking flow. If you need this call, please contact our API support team and include a workflow diagram plus the details below (use case, workflow description, expected traffic, and calling strategy). This helps us validate capacity and recommend the safest implementation approach. 4. Booking step ℹ️ To reliably obtain final booking statuses, you must implement at least one of the following endpoints: Check booking process (B2B, Affiliate) Receive booking status webhook (B2B, Affiliate). It is required to implement at least one of these methods. Otherwise, your system may never receive the booking confirmation status, which can lead to missed or outdated data. Both methods may be implemented in parallel for redundancy and improved reliability. 4.1. Create booking process Required Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/form/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/order/booking/form/ This endpoint is called to create a booking on the ETG end and link that order with the order in your system. Create Booking Process — Error Handling ℹ️ The number of retries should be limited to 10. sequenceDiagram participant User participant API User->>API: Create booking process request alt status == "ok" API-->>User: Response: "ok" User->>User: Go to Start booking process else error in (duplicate_reservation, double_booking_form, unknown, timeout) or HTTP status code 5xx loop Retry with new partner_order_id (until status == "ok" or other error) User->>API: Retry Create booking process with new partner_order_id API-->>User: Response alt status == "ok" User->>User: Go to Start booking process else error in retryable set User->>User: Continue retry else other error User->>User: Show error and stop end end else other error API-->>User: Response error User->>User: Show error and stop end4.2. Start booking process Required Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/ This endpoint is called to start the booking process. During this step, we are sending the booking request to our suppliers and direct hotel partners to make a booking. Hence, the booking status will be in progress. Consequently, you are required to implement the last endpoint to get the final booking status. The last endpoint is either the Check booking process (B2B, Affiliate) or Receive booking status webhook (B2B, Affiliate). Please note that you can implement them both, but one of them is required. Start Booking Process — Error Handling sequenceDiagram participant User participant API User->>API: Start booking process alt status == "ok" or error is timeout/unknown or HTTP status code 5xx API-->>User: Response: status == "ok" or error is timeout/unknown or HTTP status code 5xx User->>User: Proceed to Check Booking Process else API-->>User: Response: other error User->>User: Show error and stop end4.3. Check booking process Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ This endpoint is used to receive the final booking status. One should keep calling this endpoint until the status processing changes either to ok or final failure status. Please note that the status ok during the Check booking process (B2B, Affiliate) only indicates a successful booking. Check Booking Process — Error Handling sequenceDiagram participant User participant API User->>API: Check booking process alt status == "ok" API-->>User: Booking is successfully confirmed else status == "processing" or error is (timeout/unknown) or HTTP status code 5xx loop Wait and poll (until status is "ok", final error, or booking timeout reached) User->>API: Check Booking Process alt status == "ok" API-->>User: Booking is successfully confirmed User->>User: Stop polling else status == "processing" or error is (timeout/unknown) or HTTP status code 5xx API-->>User: Still processing or transient error, continue polling else status is final error (e.g., soldout, provider, book_limit) or booking timeout reached API-->>User: Return final error or booking timeout User->>User: Stop polling, show error end end else status is final error (e.g., soldout, provider, book_limit) or booking timeout reached API-->>User: Return final error or booking timeout User->>User: Stop, show error end4.4 Receive booking status webhook If you decide to work with the Receive booking status webhook (B2B, Affiliate), ETG will send you the final booking status, and you will be only responsible for correctly responding to our webhooks. If you would like to work with Receive booking status webhook (B2B, Affiliate), please provide us with a callback URL. The detailed logic of how to work with webhooks can be found in Best Practices for API and API documentation. The differences between “Check booking process” and “Receive booking status webhook” are: “Check booking process” “Receive booking status webhook” To obtain the final status, the partner must perform a series of requests in accordance with Retry logic (B2B, Affiliate). The statuses will either indicate status ok, or include a list of final failure error codes. ETG will send the final status right after receiving the booking status from the supplier. These statuses will be either confirmed or failed. It will provide the reason for the booking failure. No specific reason for booking failure will be provided. Please also find our Best Practices for API for the integration, which will give more exact recommendations and outline integration expectations. 5. Post-Booking 5.1 Retrieve bookings Optional Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/info/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/order/info/ Returns detailed information for a successfully created booking, including fields that may appear with delay (such as the [hotel confirmation number]((/docs/b2b-api/post-booking/retrieve-bookings/), Affiliate)). Booking data is synchronized asynchronously and may not be available immediately after booking completion. Early requests may return an empty response. This endpoint must not be used to check booking confirmation status. For this purpose, please use either: Receive booking status webhook (B2B, Affiliate) call. Check booking process (B2B, Affiliate) call. 5.2 Cancel booking Recommended Endpoint Sandbox: https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/cancel/ Endpoint Production: https://api.worldota.net/api/b2b/v3/hotel/order/cancel/ This should be used if a booking needs to be canceled. --- # Best Practices for API Source: https://docs.emergingtravel.com/docs/best-practices-for-apiv3/ This document highlights the best practices and recommendations for integration. It aims to provide crucial information to consider when developing an integration and addresses frequently asked questions. ⚠️ Use only field values, IDs, API keys, and any static content provided for a specific environment (sandbox, testing, or production) within that environment. For example, use sandbox data only in the sandbox environment. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. 1. General 1.1 Products and Certifications Our API can be integrated with different products and methods for reselling rates. The main focuses are on: Website or Mobile app, where ETG rates are presented on a website or mobile application you developed. API, where ETG rates are being sold via your API, which your end-users integrate into their product. Each product requires its independent certification, which can occur simultaneously or sequentially. More information is available in Certification and Production access in the Certification section. 1.2 Payment Types Depending on the partnership model, ETG provides different payment_type (B2B, Affiliate). Affiliate now - ETG charges the card provided during the booking process. Please integrate Create credit card token for this payment type, as ETG charges the end-user or your corporate card. The now payment method is currently unavailable in the Sandbox environment. hotel - payment at the hotel: some of the rates will require credit card data, some not. Refer to the API response below to identify such rates: "is_need_credit_card_data": true, "is_need_cvc": true, "type": "hotel", Please integrate Create credit card token (B2B, Affiliate) for this payment type. For B2B API deposit - the payment comes from your deposit. The partner is responsible for charging the end-user. 1.3 Workflow Please find the recommended workflow with endpoints in the Integration Guide. Also, please refer to ETG API documentation for request and response sample as well as error descriptions. Note that we expect the diagram of your workflow during the Certification with mentioned ETG endpoints integrated to our workflow. 1.4 IPs Whitelist Justification: To ensure the security of system credentials and safeguard access, clients integrating the ETG APIv3 are required to provide their IP addresses for whitelisting Please provide the list of the IP addresses that must be whitelisted on our end. In addition, please specify if you need our IP addresses to be whitelisted on your end so we can provide our list. 1.5 Test environment For testing and getting acquainted with our functionality, we provide two separate environments: sandbox and test. However, all actual bookings are processed exclusively in the production environment. Please note that the test API key allows you to book rooms only in our demo hotel (‘hid’ = ‘8473727’ or ‘id’ = ’test_hotel_do_not_book’). It cannot be used for booking real hotels. If you try to book a real hotel with this key, you will encounter a sandbox_restriction error. Please make bookings with refundable rates containing data such as free_cancellation_before: “2024-12-05T20:00:00”. Otherwise, you may receive an insufficient_b2b_balance error. 2. Hotel Static 2.1 Hotel Static Data upload and updates We expect you to keep your hotel static data updated as frequently as possible, preferably daily. To achieve this, please use Content API, which provides flexible and incremental access to hotel descriptive content. To synchronize hotel static data with your system, follow this recommended flow: Retrieve static parameter lists and translations: Use the Retrieve hotel static data (B2B, Affiliate) endpoint to obtain possible values and translations for static hotel and room parameters. Retrieve available filter values: Use the Retrieve filter values endpoint to get available filter values for efficient hotel selection. Retrieve hotel IDs by filters: Use the Retrieve hotel IDs by filter endpoint to fetch applicable hotel IDs meeting your filter criteria. Retrieve full content by hotel IDs: Use the Retrieve hotels content by IDs endpoint to download static hotel content, including descriptions, images, amenities, and more for the selected hotels. Store this static content in your system and refresh it regularly (ideally daily, or as frequently as your business processes allow) to ensure your booking interface always operates with the most up-to-date information. Do not request hotel content data from the Content API during live user search sessions. The Content API is intended exclusively for offline content synchronization and must not be called simultaneously with search or booking requests. Download and update static data in advance, outside of active user operations. Additional Information If you need hotel review information, please refer to the Retrieve hotels review by IDs endpoint of the Content API. Please note that initial data synchronization may require processing a significant amount of records. Supporting incremental updates using timestamps or specific filters is highly recommended. By storing and regularly updating static hotel content via the Content API, you ensure that user-facing booking and search flows always operate on up-to-date, locally-cached information. Live API requests should be reserved for availability and pricing only. 2.2 Mapping logic and mapping updates You are expected to map our hotels and hotel IDs to the corresponding hotels and identifiers in your system. This is necessary because each supplier may provide slightly different information for the same hotel — such as pictures, descriptions, and contact details. For example, addresses may be formatted differently or contain subtle variations. Proper mapping allows you to merge these differences and select the most accurate and relevant hotel data, images, and amenities to show your customers. Updating mapping data Use the Content API to regularly retrieve and update hotel static content for your mapping logic. We strongly recommend using the updated_since parameter in the Retrieve hotel IDs by filter method to identify hotels where information has changed since your last update. For example: "updated_since": "2024-04-12 00:00:00" This will return a list of hotels that have had changes after “2024-04-12 00:00:00”. On your next update, simply use the timestamp from your previous synchronization. After obtaining the list of updated hotel IDs, use the Retrieve hotels content by IDs method to retrieve content only for those hotels. Perform the mapping process as frequently as possible to ensure your system always operates on up-to-date data. During certification, be prepared to explain your mapping logic and update frequency. Do not request hotel content data from the Content API during live user search sessions. The Content API is intended exclusively for scheduled, offline content synchronization and must not be used simultaneously with search or booking requests. 2.3 Hotel important information In hotel static data Retrieve hotels content by IDs one can find parameters: metapolicy_struct — additional accommodation conditions. metapolicy_extra_info — additional hotel information. ℹ️ If you don’t have a similar structure and want to present information in a clear, user-friendly format, follow our implementation guidance and practical examples, see Metapolicy_struct. We expect the information in these parameters to be parsed and displayed to the end-user since it contains essential data related to hotel rules, additional fees, or any other important information. For example, some hotels expect guests to provide their passport only and not their other IDs. 2.4 Room Static data To use room static data like images and amenities, you must use rg_ext fields. The rg_ext is a group of parameters that are unique room identifiers in the hotel; it can be found in the search and hotel static responses. Room images and descriptions can be obtained only by matching all rg_ext fields from the search with rg_ext from the hotel static. 3. Search Step This section is related to the following methods: Search by region (B2B, Affiliate), Search by geo coordinates (B2B, Affiliate), Search by hotel IDs (B2B, Affiliate), Retrieve hotelpage (B2B, Affiliate), and Prebook rate from hotelpage step (B2B, Affiliate), Prebook rate from search step (B2B, Affiliate). 3.1 Prebook Prebook confirms availability of a specific rate. If rate is no longer available, propose a substitute within defined price_increase_percent. The price_increase_percent parameter can be from 0% to 100%. If you work with price_increase_percent, then it is mandatory to display that the price has changed to the end-user. ⚠️ The Prebook method recommended timeout is 60 seconds, with a minimum of 30 seconds (which may lead to a decrease in availability). Please note that the Prebook method does not support incoming search timeouts. The timeout can only be adjusted on the ETG side. Search logic depends on the partner’s product. There are two types of search logic possible: Recommended Flow (Prebook from Hotelpage): One of the Search by methods - Retrieve hotelpage (B2B, Affiliate) - Prebook rate from hotelpage step (B2B, Affiliate). Prebook rate from hotelpage step should be implemented after Retrieve hotelpage (B2B, Affiliate), and must be excluded from the booking flow. The logic of working with book hashes during the Prebook rate from hotelpage step is the following: You get the book hash that starts with “h-…” during Retrieve hotelpage. Use that book hash that starts with “h-…” in the Prebook rate from hotelpage step request. In return, the Prebook rate from hotelpage step will give you a book hash that starts with “p-….”. That book hash that starts from “p-….” should be used during Create booking process (B2B, Affiliate). Alternative Flow (Prebook from Search) One of the Search by methods - Prebook rate from search step (B2B, Affiliate), where due to the absence of the hotel page, the search_hash from the SERP calls is required to proceed with the booking when specified as the hash for the Prebook rate from search call. Prebook rate from search step should be implemented after one of SERP calls and must be excluded from the booking flow. The logic of working with book hashes during the Prebook rate from search step is the following: You get the search hash that starts with “sr-…” during one of SERP calls. Use that search hash that starts with “sr-…” in the Prebook rate from search step request. In return, the Prebook rate from search step will give you a book hash that starts with “p-….”. That book hash that starts from “p-….” should be used during Create booking process (B2B, Affiliate). If you need this call, please contact us. 3.2 Cache The caching recommendations depend on your product’s logic. We usually don’t recommend caching and encourage working with real, live data. The longer a rate is stored in the cache, the higher the possibility that it may no longer be available later. If you provide approximate prices during the first search step (which refers to the SERP, using any of the three available methods) and then update the prices during the second search step (Hotelpage), then it doesn’t matter how long you cache the first step results. If you match Search by methods and Retrieve hotelpage (B2B, Affiliate) by match_hash then we don’t recommend caching at all. Caching the responses of Retrieve hotelpage (B2B, Affiliate) and Prebook rate from hotelpage step (B2B, Affiliate) is prohibited. 3.3 Children Logic The child’s age should be specified in the Search by and Retrieve hotelpage (B2B, Affiliate) requests in brackets [15]. Moreover, our system supports stays of up to 30 nights, with up to 6 adults and 4 children in one room. Individuals aged 17 years and below are considered children. The check-in date must be less than or equal to 730 days from today. 3.4 Multiroom booking ETG supports up to 9 rooms at one rate, but does not support different room types at one rate. To be able to book multiple rooms, please specify it in the Search by and Retrieve hotelpage (B2B, Affiliate) requests in the guests parameter. Example for searching 2 rooms For example, to book 2 rooms: Room 1: 2 adults. Room 2: 2 adults and 1 7-years old child. "guests": [ { "adults": 2, "children": [] }, { "adults": 2, "children": [7] }, ] Example for /booking/finish/ request with multiple rooms When proceeding with booking, you need to provide detailed guest information for each room in the rooms parameter. { "rooms": [ { "guests": [ { "first_name": "Martin", "last_name": "Smith" }, { "first_name": "Eliot", "last_name": "Smith" } ] }, { "guests": [ { "first_name": "Olga", "last_name": "Jordan" }, { "first_name": "Alexander", "last_name": "Jordan" }, { "first_name": "Ben", "last_name": "Button", "age": 7, "is_child": true } ] } ] } 3.5 Taxes and fees Taxes and fees must be excluded from the final price. ETG API sends both included and non-included taxes. Non-included taxes must be displayed to the end-user separately. To find non-included taxes, please refer to tax_data.taxes parameter and search for taxes with included_by_supplier: false data. For example, "id": "test_hotel_do_not_book", "hid": 8473727, "rates": [ { "match_hash": "m-5ab93916-be48-5bc0-953f-69eba410b3af", "search_hash": null, "daily_prices": [ "0.80" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "75.20", "show_amount": "0.80", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, // - this tax shouldn’t be added to the total price and should be excluded and shown separately "amount": "1130.10", "currency_code": "HNL" }, { "name": "electricity_fee", "included_by_supplier": true, // - this price is included in the price sent in “amount”, “show_amount”, “commission_info.charge.amount_net”, and “commision_info.charge.amount_gross” "amount": "0.02", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": false, // - this tax shouldn’t be added to the total price and should be excluded and shown separately "amount": "3.70", "currency_code": "HNL" }, { "name": "vat", "included_by_supplier": false, // - this tax shouldn’t be added to the total price and should be excluded and shown separately "amount": "679.74", "currency_code": "HNL" } If your local legislation requires the final price to include taxes, reach out to our API support team for guidance on how to present taxes to end users and calculate the final price correctly. 3.6 Search timeouts Our system can work with dynamic timeouts during searches (Search by methods and Retrieve hotelpage (B2B, Affiliate). To do so, please send a timeout parameter with an integer value. The logic of the dynamic timeout is below: If you send us the desired timeout in the API requests, our system will follow that timeout and provide responses within the requested timeout. If you don’t send us the desired timeout in the API requests, then our system will follow the timeout configured on your Production Key. The recommended timeout for Search by methods and Retrieve hotelpage is 30s. We are open to discussing search timeouts during certification. 3.7 Cancellation policies Please parse cancellation policies from Search by methods and Retrieve hotelpage (B2B, Affiliate) from the parameter cancellation_penalties.policies. The cancellation policies might have three layers: "start_at": null, "end_at": "2025-10-21T08:59:00" // from the moment of booking until this time, the booking is refundable without penalty "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2025-10-21T08:59:00" // - within this timeframe, the cancellation is possible with a partial penalty "end_at": "2025-10-21T08:59:00", "amount_charge": "116.80", "amount_show": "1.60", "commission_info": { "show": { "amount_gross": "2.00", "amount_net": "1.60", "amount_commission": "0.40" }, "charge": { "amount_gross": "146.00", "amount_net": "116.80", "amount_commission": "29.20" } } }, { "start_at": "2025-10-21T08:59:00" // - from this moment, the cancellation is possible with a full penalty "end_at": null, "amount_charge": "241.60", "amount_show": "2.40", "commission_info": { "show": { "amount_gross": "3.00", "amount_net": "2.40", "amount_commission": "0.60" }, "charge": { "amount_gross": "302.00", "amount_net": "241.60", "amount_commission": "60.40" } } } ], "free_cancellation_before": "2025-10-21T08:59:00" }, free_cancellation_before: “2025-10-21T08:59:00” - means that end-users are allowed to cancel the booking without penalties before 2025-10-21T08:59:00. After that, full or partial cancellation penalties will apply. The rate with free_cancellation_before": null - means that there is no free cancellation. The penalties will apply immediately when the user decides to cancel. It is important to note that we send the cancellation policies via API in the UTC+0. 3.8 Citizenship/residency Justification: If the passport country is not sent in the API requests, and the hotel in a specific country has citizenship based price adjustments, then the customer will have to pay additionally at the front desk, which ultimately will result in bad customer experience or even a dispute. We expect the residency parameter to be sent in the Search by and Retrieve hotelpage (B2B, Affiliate) requests. Please note that by residency, we mean passport country. We require this information because prices may change for specific regions based on this residency parameter. The rates in the search response are provided according to the citizenship of the first guest provided in the search request. Citizenship should be the same for each guest in every search request. Provide the real guests’ citizenship in the residency field. 3.9 Meal types We expect our partners to match our meal types with those in their systems. Please don’t make the meal type better than the one we’ve sent. If you don’t find the corresponding meal type on your end, please create one and worsen the meal type in your system. Please use meal_data.value to display meals specific to rates. To get the full list of meals, please call the endpoint: Retrieve hotel static data (B2B, Affiliate) All possible options will be listed under the meals parameter. 3.10 Final price / Commission ETG v3 API works with both net and gross prices. Please parse the corresponding parameter depending on your type of prices. Net Prices ℹ️ Applicable only to B2B-API. Please work with amount or show_amount. The difference between amount and show_amount is that amount stands for the price of your selected currency for our reconciliation, meanwhile show_amount is the currency requested in Search by (B2B, Affiliate) or Retrieve hotelpage (B2B, Affiliate) request. Please note that if you work with net prices, then you are responsible for calculating your commission or markup. Gross Prices ℹ️ Applicable only to Affiliate-API. Please work with amount or show_amount. The difference between amount and show_amount is that amount stands for the price of your selected currency for our reconciliation, meanwhile show_amount is the currency requested in the Search by (B2B, Affiliate) or Retrieve hotelpage (B2B, Affiliate) request. Please note that if you work with gross prices, then ETG is responsible for calculating the commission, and our API sends prices with your commission included. Fake Gross Prices ℹ️ Applicable only to B2B-API. With this commission model you display to the end-user commission_info.charge.amount_gross or commission_info.show.amount_gross but pay to ETG the price specified in commission_info.charge.amount_net in the currency specified in your contract. Please note that if you work with fake gross prices, the ETG is responsible for calculating the agreed commission. Still ETG will charge a net price from you. Please do not add excluded taxes to the final price; they should be displayed separately. If you need to change your commission model, please contact your Account Manager or Sales Manager. 3.11 Room name reflection Please be informed to parse the room_name parameter and display it to your client. 3.12 Early check-in / Late check-out The Early check-in / Late check-out is currently unavailable in the Sandbox environment. ETG v3 API supports early check-in and late check-out. Guests can ask for early check-in and late check-out options, which allow checking in before the usual time and leaving after the regular check-out time, depending on agreement and availability, and often with an extra fee. ℹ️ When working with upsells, ensure clarity for the end-user and avoid overwhelming them with options, follow our implementation guidance and practical examples, see Upsells. 3.13 Hotel chunk size Our system supports up to 300 hotels in 1 request for Search by hotel IDs (B2B, Affiliate). The recommended amount of hotels in a chunk depends on the Search by hotel IDs timeout. 4 Card Payments The Card Payments is currently unavailable in the Sandbox environment. This information is applicable to affiliate contracts that are using card payments, where ETG charges end-users on partner’s behalf. To work with card payments, we expect you to provide the return_path URL. 4.1 Endpoints Logic Create credit card token Since ETG will be charging the end-user, we expect you to send us the credit card data using the Create credit card token (B2B) endpoint. The endpoint request sample body can be found in our Create credit card token (Affiliate). We expect you to create pay_uuid and init_uuid independently. Start booking process Please ensure to include pay_uuid, init_uuid and return_path in your request for Start booking process (B2B, Affiliate). The sample request should look like this: "user": { "email": "asdfds@foo.com", "comment": "comment", "phone": "12312321" }, "partner": { "partner_order_id": "asd123", "comment": "partner_comment", "amount_sell_b2b2c": "10" }, "language": "en", "rooms": [ { "guests": [ { "first_name": "Marty", "last_name": "Quatro" }, { "first_name": "Marta", "last_name": "Quatro" } ] } ], "upsell_data": [ { "name": "early_checkin", "uid": "d7b56e81-b874-40ee-b195-e2f73d1ec714" }, { "name": "late_checkout", "uid": "c4013ea8-3ffd-4eee-bbbc-37693670031e" } ], "payment_type": { "type": "now", "amount": "8", "currency_code": "EUR", "pay_uuid": "797870e3-e1f0-470a-87b3-38694f58bed1", "init_uuid": "c44ef1ba-595b-437f-ad14-74ce39a0f9ad" }, "return_path": "https//api.hotel.com/return_path/v1/hotel-booking/3ds" } 4.2 How to work with 3ds We might send the address for completing 3ds authentication with GET or POST method during Check booking process (B2B, Affiliate). Please refer to the endpoint page for examples. Please find the logic of working with them in our ETG API documentation. Please note that you can encounter error: 3ds and status: 3ds. The difference is: Error: 3ds is the error indicating that the authorization has failed Status 3ds is the status indicating that the end-user needs to proceed with 3ds authentication Please note that the validation process is mandatory. We will check how you work with card payment logic to ensure everything is correct. 4.3 Requirements on cards used for testing purposes Once you reach the Start booking process (B2B, Affiliate), kindly provide the actual first name and last name. Kindly do not place any unsupported symbols, special characters, or numbers within the name field. The guest’s email and phone number should be real (otherwise, our anti-fraud system may block such a booking attempt as suspicious). Do not provide any test email addresses such as (name+2@youremail.com or test@test.com). When using Affiliate API, please do not use your corporate email (e.g., @corporateemail.com) (because our system recognizes it as a b2b account email, and this may block the booking). Please don’t use different emails in combination with different bank cards. For example, if you used a specific card with a certain email for your initial booking, ensure that subsequent bookings are made using the same email and card combination. Please use a real bank card with a sufficient balance, and ensure to enter the card details without errors. 5. Booking Step 5.1 Receiving the final booking status You can use the Check booking process (B2B, Affiliate) endpoint AND / OR Receive booking status webhook (B2B, Affiliate) to get the final booking status. One of these options is mandatory for the implementation. Order can be shown as confirmed only after receiving ok status from the Check booking process response or confirmed from the Receive booking status webhook. If you use the Check booking process (B2B, Affiliate) call, follow the recommendations Retry logic (B2B, Affiliate). If you have any limitations for this step, contact the API support team. 5.2 Booking cut-off The booking cut-off (also known as booking timeout) is a specific timeframe within which ETG must complete the booking. If the booking is not completed by the end of the cut-off period, the order will be automatically marked as failed. This booking cut-off is configured manually after negotiating with the partner during certification. Please note that the ETG v3 API doesn’t support dynamic booking timeouts. 5.3 Errors and Statuses Processing Logic Each booking endpoint has a unique logic of processing statuses and errors as it impacts the final booking status. The each logic for both front-end and backend is provided and elaborated in the table below. Please note that the logic for each endpoint should be integrated strictly as it’s presented. Endpoint: https://api.worldota.net/api/b2b/v3/hotel/order/booking/form/ Status or Error Logic on FE Logic on BE Status ok In Progress or waiting for status Proceed to call the /order/booking/finish/ (B2B, Affiliate) endpoint 5xx status code In Progress or waiting for status Proceed to call the /order/booking/form/ (B2B, Affiliate) endpoint until you receive status ok. Allowed to make up to 10 repeated requests. If within these 10 requests you haven’t received the status ok, restart the search process. Error timeout In Progress or waiting for status Proceed to call the /order/booking/form/ endpoint until you receive status ok. Allowed to make up to 10 repeated requests. If within these 10 requests you haven’t received the status ok, restart the search process. Error unknown In Progress or waiting for status Proceed to call the /order/booking/form/ endpoint until you receive status ok. Allowed to make up to 10 repeated requests. If within these 10 requests you haven’t received the status ok, restart the search process. Error contract_mismatch Failed Stop the booking process and show the user that the booking has failed. Refer to the documentation to learn what to do in this case. Error double_booking_form In Progress or waiting for status Change the partner_order_id and retry the call again. Error duplicate_reservation In Progress or waiting for status Change the partner_order_id and retry the call again. Error hotel_not_found Failed Stop the booking process and show the user that the booking has failed. Refer to the documentation to learn what to do in this case. Error insufficient_b2b_balance Failed Stop the booking process and show the user that the booking has failed. Refer to the documentation to learn what to do in this case. Error reservation_is_not_allowed Failed Stop the booking process and show the user that the booking has failed. Refer to the documentation to learn what to do in this case. Error rate_not_found Failed Stop the booking process and show the user that the booking has failed. Refer to the documentation to learn what to do in this case. Error sandbox_restriction Failed Stop the booking process and show the user that the booking has failed. Refer to the documentation to learn what to do in this case. Endpoint: https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/ Status or Error Logic on FE Logic on BE Status ok In Progress or waiting for status Proceed to call the “/order/booking/finish/status/” (B2B, Affiliate) endpoint. 5xx status code In Progress or waiting for status Proceed to call the “/order/booking/finish/status/” endpoint. Error timeout In Progress or waiting for status Proceed to call the “/order/booking/finish/status/” endpoint. Error unknown In Progress or waiting for status Proceed to call the “/order/booking/finish/status/” endpoint. Error booking_form_expired Failed Stop the booking process and show the user that the booking has failed. Error rate_not_found Failed Stop the booking process and show the user that the booking has failed. Error return_path_required Failed Stop the booking process and show the user that the booking has failed. Endpoint: https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ Status or Error Logic on FE Logic on BE Status ok Success Stop calling the /order/booking/finish/status/ (B2B, Affiliate) and show the user that the booking is successful. Status processing In Progress or waiting for status Continue calling the /order/booking/finish/status/ at regular intervals within the booking timeout. Error timeout In Progress or waiting for status Continue calling the /order/booking/finish/status/ at regular intervals within the booking timeout. Error unknown In Progress or waiting for status Continue calling the /order/booking/finish/status/ at regular intervals within the booking timeout. 5xx status code In Progress or waiting for status Continue calling the /order/booking/finish/status/ at regular intervals within the booking timeout. Error block Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error charge Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error 3ds Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error soldout Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error provider Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error book_limit Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error not_allowed Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. Error booking_finish_did_not_succeed Failed Stop calling the /order/booking/finish/status/ and show the user that the booking has failed. 5.4 Known errors Only applicable to the Check booking process In Check booking process (B2B, Affiliate), if you encounter 3ds, block, book_limit, booking_finish_did_not_succeed, provider, or soldout errors, please consider the booking failed. These are the final failure errors. 5.5 Webhooks Only applicable to Receive booking status webhook If you choose to integrate the Receive booking status webhook (B2B, Affiliate) alone, please integrate the Create booking process and Start booking process methods. Handle our callbacks properly and respond with a 200 OK status when you receive them. Errors such as timeout, unknown, and the 5хх status code do not indicate the booking failure. The logic of working with these errors is explained below: Create booking process (B2B, Affiliate) Start booking process (B2B, Affiliate) If you get errors such as timeout, unknown, or the 5хх status code, you should make another request with a new partner_order_id. The maximum number of calls is limited to 10. If you get errors such as timeout, unknown, or other 5хх status code, you should wait for the webhook notification within the predefined timeout period to confirm the booking status. 1. The failure booking status will come as failed in webhook notification. 2. If no webhook notification is received within this time, the booking should be treated as unsuccessful. In case of doubt, please check the order status in Ratehawk Backoffice. 5.6 Booking statuses on the partner/platform side Here is the list of ETG statuses: some are present during the booking step, and some are applicable during the post-booking step. Please map the booking flow statuses according to the table below: Booking Status Corresponding status or error Check booking process Corresponding status or error in webhooks Success (required) Status Ok Confirmed Failed (required) Errors 3ds, block, book_limit, booking_finish_did_not_succeed, charge, decoding_json, endpoint_exceeded_limit, endpoint_not_active, endpoint_not_found, incorrect_credentials, invalid_auth_header, invalid_params, lock, no_auth_header, not_allowed, not_allowed_host, order_not_found, overdue_debt, provider, soldout, unexpected_method Failed In progress (required) Processing, timeout, unknown, and 5xx status code Not applicable as webhook informs confirmed and failed statuses only. Cancelled (optional) Not present during the booking flow, can be seen in Order Information endpoint Not present during the booking flow, can be seen in Order Information endpoint No-show (optional) Not present during the booking flow Not present during the booking flow 5.7 Confirmation e-mails When calling Start booking process (B2B, Affiliate), please follow the below logic of emails: For B2B API "user": { "email": "asdfds@corporateemail.com", //- we expect to receive one fixed corporate email for B2B API with your domain "comment": "comment", "phone": "12312321" }, For Affiliate "user": { "email": "asdfds@gmail.com" // - we expect to receive the end-user email here "comment": "comment", "phone": "12312321" }, 6. Post Booking Step 6.1 Retrieve bookings The Retrieve bookings (B2B, Affiliate) endpoint shouldn’t be used for checking the booking final status and should be excluded from the booking flow. If you are using the Retrieve bookings endpoint, please wait some time after receiving the successful response from Check booking process (B2B, Affiliate) or Receive booking status webhook (B2B, Affiliate) before calling Retrieve bookings. The order data might take some time to synchronize and appear in this endpoint API response. Please be informed that we don’t change the rate details during the booking process, so there is no need to check that and reconfirm if the details have changed. 6.2 Cancel booking If you received the timeout error when canceling the order, please call the Cancel booking (B2B, Affiliate) endpoint one more time. --- # Certification and Production access Source: https://docs.emergingtravel.com/docs/certification/ Each product requires an independent certification. Certification of one product does not automatically apply to other products. Products may be certified sequentially or in parallel and can be launched independently once certified. The certification process approximately takes 14 to 30 days and is conducted in written form to allow partners to implement required changes asynchronously. The certification timeline depends on the current state of the integration, the number of review iterations, and whether identified issues require changes or are accepted by the partner with financial responsibility. ℹ️ Partners must design and implement their integration in strict accordance with the Integration Guide and Best Practices before starting the certification process. Certification Flow Step 1. Execute Certification Test Cases Executing certification test cases is a mandatory requirement. Without completed test cases, ETG cannot verify correct integration behavior and finalize certification. Test cases depend on the API key type used for certification and are described below. Certification Test Cases — Sandbox API Keys The following test cases are mandatory for partners using Sandbox API keys. They validate correct booking logic, error handling, and edge-case processing. All scenarios are reproducible using the Sandbox environment. Detailed instructions for reproducing specific errors are provided in the Sandbox documentation. Test Scenario Validation logic Mandatory for Multiroom booking with mixed adults and children • Confirm correct request creation for multibooking feature • Confirm child age logic • Confirm final booking status Partners supporting multiroom booking Booking with children Confirm child age logic All partners Booking with specifying the Uzbekistan guest’s citizenship • Confirm correct request creation during search All partners Rate price increase at the prebook step • Confirm price_increase_percent logic • Confirm book_hash logic in Prebook Partners allowing price change during Prebook Successful booking after unknown errors • System continues polling /booking/finish/status until receiving status ok All partners Failed booking resulting in soldout error after unknown error • System keeps treating booking as in progress and continues polling until soldout • Booking is then failed All partners Failed booking resulting in book_limit error after unknown error • System correctly identifies the book_limit error and fails the booking due to timeout expiry All partners Certification Test Cases — Test API Keys The following test cases are mandatory for partners using Test API keys. They must be executed using a test hotel. Test case description Test case purpose Create a successful single-room booking: 2 adults + 1 child (5 y.o) with citizenship Uzbekistan Validate correct handling of guest composition and residency logic Create a successful multi-room booking (if supported): Room 1 — 2 adults + 1 child (5 y.o); Room 2 — 2 adults. Validate multi-room booking support and correct room-level guest distribution If multi-room or bookings with children are not supported, partners must explicitly confirm this limitation. Step 2. Provide Access and Required Materials Depending on the product type, the following information must be provided. Website or Mobile App Partners must provide access to test search and booking functionality where ETG is activated as a Provider. One of the following options is required: Access to the website has been provided. Access to the website cannot be granted — a video recording or step-by-step screenshots covering the full flow (search → booking → cancellation) must be provided. The installation file of the mobile application is provided. API Applicable where partners are activated as a Provider for third-party integrations. API documentation used by partner’s clients. Logs for completed test booking (described below in the step 3), including: Partner API request and response. ETG API request and response. Preferably in JSON format. Step 3. Complete the Pre-Certification Checklist Partners must complete the Pre-certification Checklist applicable to their integration type. Launch member will be sent to you upon request. The checklist is completed by the partner. Submission of the completed checklist is a mandatory requirement to start certification. The checklist format and content may differ depending on the integration type. To receive the relevant checklist, please contact our API support team. Step 4. Review and Feedback ETG reviews the integration based on: Compliance with Best Practices. Provided access and materials. Pre-certification Checklist. Test case results. If required, ETG may request clarifications or changes to ensure correct implementation, alignment with platform standards, and to minimize potential operational and financial risks. Communication is conducted via email. Step 5. Certification Approval Certification is considered completed when: All mandatory checklist items are approved. No blocking issues remain, or remaining issues are accepted by the partner as known limitations with associated financial responsibility. ETG QA team confirms certification completion after final verification. Once approved, the product may be launched independently, even if other products are still undergoing certification. Step 6. Production Access Certification confirms that the integration is technically ready to work with real hotel inventory. To receive a Production API key and access real bookings, partners must complete the API partnership formalisation process after certification. Support If you have any questions regarding the certification process, please contact us. --- # API support recommendations Source: https://docs.emergingtravel.com/docs/api-support-recommendations/ Common Specify the issue as clearly as possible. Always highlight the goal you want to achieve. Reporting details of the issues Provide: The exact call with its endpoint that causes the issue. The request and the response in the format it was sent and received. The response logs in the JSON format. Specify the issue timestamp. It will be helpful to determine the cause of the issue. Identification Specify your contract number. Specify the of the API key you were using. Addressees of the request Address the ETG API-related questions to the API support team. Otherwise, contact your account manager. --- # Authorization Source: https://docs.emergingtravel.com/docs/fundamentals/authorization/ The sandbox host: https://api-sandbox.worldota.net. The test and production host: https://api.worldota.net. The API key is the sequence of characters used to send API requests. The ETG: Requires HTTP Basic Authentication via the API key. Grants the following API key types: sandbox — the sandbox envitonment. test— the test environment. production— the production environment. Sandbox environment Use the sandbox API keys to safely test accommodation search, booking, and cancellation without impacting real data or financial transactions. The sandbox environment lets you explore various scenarios using sample properties before working in production. Test environment Use test API keys only to book the test hotel with hid - 8473727 or id - test_hotel_do_not_book. ⚠️ The test hotel implies real bookings with all financial responsibilities. Production environment Use the production API keys to book hotels available via the ETG API. You may have several production API keys across different contracts. API key in account You can find the created API keys in the API section of your contract settings. Access to this section is provided for the Master account only. API key structure The API key structure consists of the two values: :. KEY_ID API key ID. Use it as an HTTP Basic Authentication username. API_KEY API key access token. Use it as an HTTP Basic Authentication password. Keep this value confidential. Otherwise, a third party may gain access to and misuse your data. Request limits Each endpoint has a limit on the number of requests. To discuss changes to these limits, contact your account manager. The limit is specified in the corresponding header of the call response. The ETG API provides: The maximum number of requests allowed per specified period. The number of remaining requests in the current period. The timestamp indicating the expiration of the limitation period. X-RateLimit-SecondsNumber The number of seconds during which requests can be executed within the X-RateLimit-RequestsNumber. X-RateLimit-RequestsNumber The maximum number of requests that can be executed within the X-RateLimit-SecondsNumber. X-RateLimit-Remaining The number of remaining requests in the current period: Within the X-RateLimit-SecondsNumber. Out of the X-RateLimit-RequestsNumber. X-RateLimit-Reset The string with the date and time when the X-RateLimit-SecondsNumber expires. The format is YYYY-MM-DDTHH:MM:SS in the UTC+0 time zone. Limits example "X-RateLimit-SecondsNumber": 1 "X-RateLimit-RequestsNumber": 10 "X-RateLimit-Remaining": 9 "X-RateLimit-Reset": "2018-08-14T08:54:11" --- # Requests Source: https://docs.emergingtravel.com/docs/fundamentals/requests/ You should send requests via the HTTPS protocol. There are requests with: GET method—for obtaining data. POST method—for creating, updating, and deleting. The request body and the data field are in the JSON format. The GET example: curl -g --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/?data={"id":"city_hotel_berlin_east","language":"en"}' The POST example: curl --user ':' --data '{"id":"city_hotel_berlin_east","language":"en"}' "https://api.worldota.net/api/b2b/v3/hotel/info/" ℹ️ To view your request limit, use the Retrieve endpoints call: B2B. Affiliate. Increasing limits is possible for a live key after separate approval, depending on the expected sales volume. Limits are increased only after certification is completed. --- # Responses Source: https://docs.emergingtravel.com/docs/fundamentals/responses/ The response is an object in JSON format. Its fields are listed below. The example: { "data": { "data_3ds": null, "partner_order_id": "asd123", "percent": 100 }, "debug": null, "error": null, "status": "ok" } data The response main data. Required field. ℹ️ You might get a response with empty availability. It means that the request is correct but no data matches the request. The empty availability indicators: The null value. A value of the successful status. debug Additional information about the response. Contains: The initial request parameters in JSON format. And/or the HTTP status code. Can have the null value if the request was made without warnings or errors. Detailed structure of debug Each API response may include the optional debug field, which contains technical and diagnostic information. This field is intended primarily for debugging, development, and troubleshooting. Structure example: "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/hotels", "is_active": true, "is_limited": true, "remaining": 997, "requests_number": 1000, "reset": "2025-09-18T07:34:00", "seconds_number": 60 }, "request": { "checkin": "2025-10-25", "checkout": "2025-10-26", "residency": "us", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 8659684 ], "currency": "USD", "timeout": 50 }, "method": "POST", "real_ip": "2a09:bac1:6f20:8::81:41", "request_id": "0908428fac35a5e10b424af54234825d", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-09-18T07:33:31.840932", "validation_error": "checkin date must be current or future date" } Description of fields: api_endpoint: Info about rate limits and endpoint activity (url, is_active, is_limited, remaining, requests_number, reset, seconds_number). request: The full structure of the partner’s request as received. method: HTTP request method (e.g. POST, GET). real_ip: The detected client IP. request_id: Unique internal request ID. key_id, api_key_id: Identifiers of your API key. utcnow: UTC timestamp of request handling start. validation_error: Error description (present only for requests with invalid parameters). ℹ️ The debug field is not intended for production monitoring. Its structure may change without notice. error The error description. Can have the null value if the request was made without errors. status The HTTP status code description. --- # Errors Source: https://docs.emergingtravel.com/docs/fundamentals/errors/ Error fields The debug response field has information on your error. { "data": null, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/info/", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2018-08-16T12:12:37", "seconds_number": 1 }, "api_key_id": 1304, "method": "GET", "real_ip": "62.76.100.3", "request_id": "68c1141361db8c82835ea268486d7c6f", "utcnow": "2018-08-16T12:12:36.328390" }, "error": "decoding_json", "status": "error" } 400 Invalid parameters The error occurs if all required data isn’t passed. Check the validation_error field and pass the required data. { "data": null, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/order/info/", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2018-08-23T09:59:38", "seconds_number": 1 }, "api_key_id": 1304, "method": "POST", "real_ip": "52.29.104.100", "request_id": "7f4937bdabe8bb13d4980dcd77a16117", "utcnow": "2018-08-23T09:59:37.495757", "validation_error": "value \"page_number\" is required but None" }, "error": "invalid_params", "status": "error" } Not allowed host The error occurs if it is forbidden to request your host or IP. ℹ️ To discuss a change to the permission, contact the API support team. { "data": null, "debug": { "real_ip": "52.29.104.100", "request_id": "7b76e52a742f714e6686761fab48cfa3", "utcnow": "2018-08-23T11:31:44.235203" }, "error": "not_allowed_host", "status": "error" } Unexpected method The error occurs if the request was made using an unsupported HTTP method. Use the POST and GET methods instead. { "data": null, "debug": { "api_key_id": 1304, "real_ip": "52.29.104.100", "request_id": "19925f65c2763212bbe37294178b6fa6", "utcnow": "2018-08-23T09:56:37.677774" }, "error": "unexpected_method", "status": "error" } Invalid Json body type The request body must be a JSON object ({}), but received a different JSON type (e.g., array, string, number). { "data": null, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/order/booking/form/", "is_active": true, "is_limited": true, "remaining": 289, "requests_number": 290, "reset": "2025-08-05T15:20:00", "seconds_number": 600 }, "api_key_id": 1304, "method": "POST", "real_ip": "10.8.43.143", "request_id": "4f75423b026798027165be29ff56141b", "utcnow": "2025-08-05T15:12:00.046036" }, "error": "body_must_be_json_object", "status": "error" } 402 Overdue debt The error occurs if you have an overdue debt. ℹ️ Contact your account manager. { "data": null, "debug": { "real_ip": "52.29.104.100", "request_id": "36f4a2ae479cc0eba8e3ddf7d09bba14", "utcnow": "2018-08-23T10:11:08.045023" }, "error": "overdue_debt", "status": "error" } 403 Authorization header The error occurs if the request: Has no authorization header. Has invalid data in the authorization header. The error response field can have the following values: no_auth_header. invalid_auth_header. ℹ️ Check the Authorization section. { "data": null, "debug": { "real_ip": "52.29.104.100", "request_id": "563c919d77000963a4ef9ade0988b21b", "utcnow": "2018-08-23T10:03:28.794712" }, "error": "no_auth_header", "status": "error" } Endpoint is not found The error occurs if you don’t have permission to use the call. ℹ️ To discuss a change to the permission, contact your account manager. { "data": null, "debug": { "api_key_id": 1775, "method": "POST", "real_ip": "10.11.0.23", "request_id": "45141c733a1f4d534a0518c513d3641b", "status": 403, "utcnow": "2018-08-14T12:51:58.715639" }, "error": "endpoint_not_found", "status": "error" } Authentication and Authorization Errors ℹ️ In case of recurring unauthorized requests over a considerable period, the ETG may ban the IP address of sent requests. Incorrect API credentials This error occurs if you have used incorrect API credentials. ℹ️ Make sure your API key and other authentication details are valid. For additional help, contact your account manager. { "data": null, "debug": { "real_ip": "52.29.104.100", "request_id": "e6ff36a9e635825743e7ded8c05739a0", "utcnow": "2018-08-23T09:34:43.673713" }, "error": "incorrect_credentials", "status": "error" } API access disabled API access is disabled for your account. ℹ️ For inquiries about enabling API access, please contact your account manager. { "data": null, "debug": { "request": { "checkin": "2025-07-18", "checkout": "2025-07-19", "residency": "KW", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "id": "test_hotel_do_not_book", "currency": "KWD" }, "key_id": 0, "validation_error": null }, "status": "error", "error": "api_access_disabled" } Not allowed The error occurs if your API key doesn’t have permission to use this API call. ℹ️ To discuss a change to the permission, contact your account manager. { "data": null, "debug": { "real_ip": "52.29.104.100", "request_id": "7b76e52a742f714e6686761fab48cfa3", "utcnow": "2018-08-23T11:31:44.235203" }, "error": "not_allowed", "status": "error" } Endpoint is not active The error occurs if the endpoint is deactivated. ℹ️ To discuss a change to the activation, contact your account manager. { "data": null, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/info/", "is_active": false, "is_limited": true, "requests_number": 1, "seconds_number": 20 }, "api_key_id": 496, "method": "GET", "real_ip": "10.11.0.23", "request_id": "61c015d15d325f0bb945db5d027fc35c", "utcnow": "2018-08-16T12:38:38.481018" }, "error": "endpoint_not_active", "status": "error" } 429 Limit is exceeded The error occurs if you have exceeded the number of requests for an endpoint. ℹ️ To discuss a change in the limit, contact your account manager. { "data": null, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/info/", "is_active": true, "is_limited": true, "remaining": -1, "requests_number": 1, "reset": "2018-08-16T12:32:40", "seconds_number": 20 }, "api_key_id": 496, "method": "GET", "real_ip": "10.11.0.23", "request_id": "8dd3efd24bdd6a9272770936e5108f8c", "utcnow": "2018-08-16T12:32:26.161565" }, "error": "endpoint_exceeded_limit", "status": "error" } Endpoint is locked This error occurs if requests for an endpoint meet both conditions: Several requests use the same partner_order_id field value. One request is sent twice within a short amount of time. { "data": null, "debug": { "real_ip": "52.29.104.100", "request_id": "2c2264a2f3f64b9032624e99ddd49976", "utcnow": "2018-08-23T11:43:27.101799" }, "error": "lock", "status": "error" } 5xx errors Errors with the 5xx HTTP status code may occur. Typically due to a timeout in the ETG services. In this case, do both: Retry the request. Limit the number of repeated identical requests. For these calls, refer to the descriptions of the call errors: Create booking process (B2B, Affiliate). Start booking process (B2B, Affiliate). Check booking process (B2B, Affiliate). Example of unknown error The error occurs if something else has gone wrong. { "data": null, "debug": null, "error": "unknown", "status": "error" } --- # Security features Source: https://docs.emergingtravel.com/docs/fundamentals/security-features/ URLs The ETG API requires you to provide the URLs from your server side. General The host URL from your account settings. Card payments The return path URL form the return_path field in the Start booking process call (B2B, Affiliate). This ensures the safety of card data transfer during the booking process: You send a booking request to ETG API. The ETG API extracts the domain with the HTTPS scheme from the return_path field. The ETG API extracts the host (without the HTTPS scheme). The ETG API checks compatibility of the host and domain: If they match, the ETG API redirects the user to the provided URL. If they don’t match: The ETG API marks the booking attempt as failed. The ETG API may redirect the user to the ETG site. --- # Sandbox Source: https://docs.emergingtravel.com/docs/fundamentals/sandbox/ What is Sandbox? The Sandbox is a test environment where you can make API calls using your regular credentials and sample properties, without affecting real accommodations, bookings, or financial transactions. With the Demand API sandbox, you can: Safely test API calls for accommodation search, availability, reservations, and cancellations. Explore various test accommodation scenarios without impacting live production data. Before using the sandbox environment and test properties, make sure you meet all the requirements for accessing our endpoints. Sandbox limitations Use only API keys and field values obtained in the sandbox environment; do not mix with production or other environments. Not all API features and methods are supported; availability depends on your sandbox API key. Many request and response fields have fixed or limited values (for example, language is always en, and currency is typically USD or EUR). The number of results per request is limited (commonly up to 5 or 1000 items, depending on the method). Some fields and error scenarios are not supported or always return default/test values. Payment-related scenarios (such as 3D Secure and credit card flows) are not available in the sandbox. The sandbox is intended for safe testing only; no real bookings, charges, or data changes occur. For detailed information on method-specific limitations, refer to the documentation for each API endpoint. Sandbox properties Feature/Case HID ID Hotels with metapolicy_struct and metapolicy_extra_info 6362880 6682380 pullman_dubai_jumeirah_lakes_towers__hotel_and_residence hotel_monsieur Hotels with tax_data 10595223 10654204 key_view_the_residences staycae_upper_crest_downtown_view Hotel with vat_data 10678836 lux_the_pad_executive_suite_burj_khalifa_view_4 Hotel with 10% prebook price increase 8819557 rosa_bell_motel_los_angeles Hotel with 20% prebook price increase 9744270 aparthotel_adagio_paris_montmartre_by_pierre_vacances Hotel with all available meals 10047711 downtown_la_vacation_apartments_by_stay_city_rentals_3 Hotel with no availability for HN residency 8142632 apartamenty_sadovoe_koltso_paveletskaia Hotel with double price for HN residency 6471709 sadovoye_koltso_apartment_1905_goda Hotels with match_hash difference between SERP and HP 8608790 10724071 coeur_de_paris__pompidou silkhaus_private_beach_unique_1bdr_in_emaar_beachfront Hotel with taxes and VAT, all meal types, static room groups and metapolicy info 10004834 conrad_los_angeles Test hotels In addition to the hotels listed in the “Feature/Case” table, the sandbox contains over 2,000 additional hotels. These hotels do not have any special properties and are intended for partners who need to perform tests involving large data sets (for example, availability or search requests). Booking can also be performed with these hotels. The hotel IDs for these properties are not listed here, as they have standard, non-specific characteristics. ℹ️ Test hotel data should be accessed exclusively by making appropriate API requests to the sandbox environment. Direct downloads or references to internal services or URLs are not supported and should not be used. Test cases Test Scenario How to reproduce Multiroom booking with mixed adults and children Create a successful multi-room booking with the following criteria: • Hotel with hid 10004834 • 2 rooms • In 1 room: 2 adults and a child (3 y.o.) • In 2nd room: 2 adults and 3 children (1 y.o., 5 y.o., 17 y.o.) Booking with children Create a successful booking with the following criteria: • Hotel with hid 10004834 • 1 room • 2 adults and 2 children (0 and 17 y.o.) Booking with specifying the Uzbekistan guest’s citizenship Create a successful booking with the following criteria: • Hotel with hid 10004834 • Citizenship (residency): Uzbekistan • 1 room • 2 adults Rate price increase at the prebook step Create a successful booking and trigger a rate price increase: • Hotel with hid 8819557 • 1 room • 10% Prebook increase Successful booking after unknown errors Create a successful booking with unknown error in the /booking/finish and /booking/finish/status endpoint in any hotel In the booking request use partner_order_id which ends unknown_success Failed booking resulting in soldout error after unknown error Create a failed booking with unknown error in /booking/finish and the /booking/finish/status endpoints resulting in soldout error in any hotel In the booking request use partner_order_id which ends unknown_soldout Failed booking resulting in book_limit error after unknown error Create a failed booking with unknown error in both /booking/finish and /booking/finish/status endpoints, resulting in book_limit error in any hotel In the booking request use partner_order_id which ends unknown_book_limit Errors reproducing Use the following test accommodation IDs in your requests to reproduce error scenarios with the endpoints. Each property is a mock hotel or apartment created exclusively for testing and simulating various error responses. Dump endpoints Error code How to reproduce dump_not_ready Request dump with any valid language except en Retrieve hotel content Error code How to reproduce hotel_not_found Request nonexistent hotel slug Search methods (SERP/HP) Error code How to reproduce 5xx, unknown, etc. N/A (unable to reproduce in sandbox) validation errors Handled like in production (send invalid data in according field) Prebook (HP/SERP) Error code How to reproduce 5xx, unknown, etc. N/A (unable to reproduce in sandbox) invalid_params Handled like in production (send invalid data in according field) prebook_disabled / prebook_from_serp_disabled Contract’s setting rate_not_found Request nonexistent rate hash contract_mismatch Request with hash h-00000000-0000-0000-0000-000000000000 no_available_rates N/A (unable to reproduce in sandbox) Create booking process Error code How to reproduce contract_mismatch Request with hash h-00000000-0000-0000-0000-000000000000 double_booking_form Request multiple times with same partner_order_id insufficient_b2b_balance Unable to reproduce duplicate_reservation Request with previously used for booking partner_order_id (unable to reproduce both in sandbox and prod, requires manual orderlog deletion to prevent double_booking_form error) hotel_not_found Use rate from Hotelpage with book_hash starting with e0000001 (e.g. h-e0000001-8beb-43c4-b2d9-7e698efac087) reservation_is_not_allowed Setting on API key rate_not_found Request with random hash in valid format sandbox_restriction Setting on API key Start booking process Error code How to reproduce book_hash_not_found N/A (unable to reproduce in sandbox) booking_form_expired Use partner_order_id field ending with booking_form_expired text on Booking Form stage chosen_payment_type_was_not_available_on_booking_form Send payment type which was not present in Booking Form response credit_card_required N/A (cc payments not supported yet) double_booking_finish Call Booking Finish method twice for same partner_order_id email Use partner_order_id field ending with email text on Booking Form stage incorrect_chosen_payment_type Send invalid currency_code (not applicable to hotel payment type) incorrect_guests_number Send invalid guests number incorrect_children_data Send invalid children data incorrect_rooms_number Send invalid rooms number insufficient_b2b_balance Use partner_order_id field ending with insufficient_b2b_balance text on Booking Form stage order_not_found Send non-existing partner_order_id rate_not_found N/A (unable to reproduce in sandbox) return_path_required N/A (cc payments not supported yet) unauthorized_group_booking Send invalid rooms number (>9 rooms) arrival_date_differs_from_checkin_date Send invalid arrival_date not_enough_credit_card_data N/A (cc payments not supported yet) incorrect_init_uuid_format N/A (cc payments not supported yet) incorrect_pay_uuid_format N/A (cc payments not supported yet) sandbox_restriction Try booking non-test hotel with sandbox (is_production=false) key supplier_data_required Send empty object supplier_data field unknown Any unknown_* case from Booking Finish Status will return unknown on Booking Finish request Check booking process Error code How to reproduce block N/A (cc payments not supported yet) charge N/A (cc payments not supported yet) 3ds N/A (cc payments not supported yet) not_allowed N/A (cc payments not supported yet) soldout Use partner_order_id field ending with soldout text on Booking Form stage book_limit Use partner_order_id field ending with book_limit text on Booking Form stage provider Use partner_order_id field ending with provider text on Booking Form stage order_not_found Request nonexistent partner_order_id booking_finish_did_not_succeed Request after calling Booking Finish with error result Unknown Use partner_order_id ending with following strings to reproduce different unknown error behaviors Error code How to reproduce unknown_success Status request returns unknown error, after some time it returns ok as final status unknown_provider Status request returns unknown error, after some time it returns provider error as final status unknown_soldout Status request returns unknown error, after some time it returns soldout error as final status unknown_book_limit Status request returns unknown error, after some time it returns book_limit error as final status Cancel booking Error code How to reproduce order_not_found Request nonexistent partner_order_id order_not_cancellable Use partner_order_id ending with order_not_cancellable text on Booking Form stage --- # Metapolicy_struct Source: https://docs.emergingtravel.com/docs/how-tos/process-fields/metapolicy-struct/ ℹ️ This page describes displaying the metapolicy_struct object in Node.js and Python. Read the dump line by line and find the wanted hotel. Read the objects. Change the objects’ values if necessary. Make sure you process nullable or empty objects. Show the values to the user. For example, use the strings below: deposit — the deposit information. Node.jsPython 1console.log('Deposit is %s to have. %s %s %s The price is %s %s %s.', 2 deposit.availability, deposit.type, deposit.payment_type, deposit.pricing_method, deposit.price, deposit.currency, deposit.price_unit); print(f"Deposit is {deposit.availability} to have." + f" {deposit.type} {deposit.payment_type} {deposit.pricing_method}" + f" The price is {deposit.price} {deposit.currency} {deposit.price_unit}." ) internet — the internet policy. Node.jsPython 1console.log('%s is %s to the overall price. The price is %s %s %s. %s.', 2 internet.type, internet.inclusion, internet.price, internet.currency, internet.price_unit, internet.work_area); print(f"{internet.type} is {internet.inclusion} to the overall price. " + f"The price is {internet.price} {internet.currency} {internet.price_unit}. {internet.work_area}." ) meal — the adult meals’ policy. Node.jsPython 1console.log('%s is %s to the overall price. The price is %s %s per a person.', 2 meal.type, meal.inclusion, meal.price, meal.currency); print(f"{meal.type} is {meal.inclusion} to the overall price. " + f"The price is {meal.price} {meal.currency} per a person." ) children_meal — the children meals’ policy. Node.jsPython 1console.log('%s is %s to the overall price. For children of %s–%s y.o. The price is %s %s per a child.', 2 children_meal.type, children_meal.inclusion, children_meal.age_start, children_meal.age_end, children_meal.price, children_meal.currency); print(f"{children_meal.type} is {children_meal.inclusion} to the overall price. " + f"For children of {children_meal.age_start}–{children_meal.age_end} y.o." + f" The price is {children_meal.price} {children_meal.currency} per a child." ) extra_bed — the adult extra beds’ policy. Node.jsPython 1console.log('%s bed(s). %s to the overall price. The price is %s %s %s.', 2 extra_bed.amount, extra_bed.inclusion, extra_bed.price, extra_bed.currency, extra_bed.price_unit); print(f"{extra_bed.amount} bed(s). {extra_bed.inclusion} to the overall price. " + f"The price is {extra_bed.price} {extra_bed.currency} {extra_bed.price_unit}." ) cot — the cots’ policy. Node.jsPython 1console.log('%s cot(s). %s to the overall price. The price is %s %s %s.', 2 cot.amount, cot.inclusion, cot.price, cot.currency, cot.price_unit); print(f"{cot.amount} cot(s). {cot.inclusion} to the overall price. " + f"The price is {cot.price} {cot.currency} {cot.price_unit}." ) pets — the pets’ accommodation policy. Node.jsPython 1console.log('Pet weight is %s is %s to the overall price. The price is %s %s %s.', 2 pets.pets_type, pets.inclusion, pets.price, pets.currency, pets.price_unit); print(f"Pet weight is {pets.pets_type} is {pets.inclusion} to the overall price. " + f"The price is {pets.price} {pets.currency} {pets.price_unit}." ) shuttle — the shuttles’ policy. Node.jsPython 1console.log('Shuttle is %s to %s. %s to the overall price. The price is %s %s.', 2 shuttle.shuttle_type, shuttle.destination_type, shuttle.inclusion, shuttle.price, shuttle.currency); print(f"Shuttle is {shuttle.shuttle_type} to {shuttle.destination_type}. " + f"{shuttle.inclusion} to the overall price. " + f"The price is {shuttle.price} {shuttle.currency}." ) parking — the parking policy. Node.jsPython 1console.log('Parking is %s and %s to the overall price. The price is %s %s %s.', 2 parking.territory_type, parking.inclusion, parking.price, parking.currency, parking.price_unit); print(f"Parking is {parking.territory_type} and {parking.inclusion} to the overall price. " + f"The price is {parking.price} {parking.currency} {parking.price_unit}." ) children — the children extra beds’ policy. Node.jsPython 1console.log('Bed for a child is %s. For children of %s–%s y.o. The price is %s %s.', 2 children.extra_bed, children.age_start, children.age_end, children.price, children.currency); print(f"Bed for a child is {children.extra_bed}. " + f"For children of {children.age_start}–{children.age_end} y.o. " + f"The price is {children.price} {children.currency}." ) visa — the visa support policy. Node.jsPython 1console.log('Visa support for the embassy is %s.', 2 visa.visa_support); print(f"Visa support for the embassy is {visa.visa_support}.") no_show — the no-show policy. Node.jsPython 1console.log('No-show is %s to have %s at %s.', 2 no_show.availability, no_show.day_period, no_show.time); print(f"No-show is {no_show.availability} to have { no_show.day_period} at {no_show.time}." ) add_fee — the additional services, fees, and taxes. Node.jsPython 1console.log('Additional service is for %s. The price is %s %s %s.', 2 add_fee.fee_type, add_fee.price, add_fee.currency, add_fee.price_unit); print(f"Additional service is for {add_fee.fee_type}. " + f"The price is {add_fee.price} {add_fee.currency} {add_fee.price_unit}." ) check_in_check_out — the check-in and check-out policies. Node.jsPython 1console.log('%s is %s to the overall price. The price is %s %s.', 2 check_in_check_out.check_in_check_out_type, check_in_check_out.inclusion, check_in_check_out.price, check_in_check_out.currency); print(f"{check_in_check_out.check_in_check_out_type} is {check_in_check_out.inclusion} to the overall price." + f" The price is {check_in_check_out.price} {check_in_check_out.currency}." ) --- # Retrieve dump Source: https://docs.emergingtravel.com/docs/how-tos/process-dump/retrieve-dump/ ⚠️ The dump size can exceed 2 GB. Request a dump About a dump. Make one of the calls: Retrieve hotel dump (B2B, Affiliate). Retrieve hotel custom dump (B2B, Affiliate). Retrieve hotel incremental dump (B2B, Affiliate). Retrieve hotel reviews’ dump (B2B, Affiliate). Retrieve regions’ dump (B2B, Affiliate). Retrieve hotel reviews’ incremental dump (B2B, Affiliate). Extract the url field value from the call response The url field value has the download link for the dump. Full code Node.jsPython 1import fetch from 'node-fetch'; 2 3// keyId is the API key ID 4// apiKey is the API key access token 5async function retrieveDump(keyId, apiKey) { 6 let dumpResponse = await fetch('https://api.worldota.net/api/b2b/v3/hotel/info/dump/', { 7 method: 'POST', 8 headers: { 9 'Content-Type': 'application/json', 10 'Authorization': 'Basic ' + Buffer.from(keyId + ':' + apiKey).toString('base64') 11 }, 12 body: JSON.stringify({ 13 'inventory': 'all', 14 'language': 'en' 15 }) 16 }); 17 const json = await dumpResponse.json(); 18 return json.data.url; 19} 20 21await retrieveDump(keyId, apiKey); 1import base64 2import json 3import requests 4 5# keyId is the API key ID 6# apiKey is the API key access token 7def retrieve_dump(key_id, api_key): 8 encoded_credentials = base64.b64encode(f"{key_id}:{api_key}".encode("ascii")).decode("ascii") 9 r = requests.post( 10 url="https://api.worldota.net/api/b2b/v3/hotel/info/dump/", 11 json={"inventory": "all", "language": "en"}, 12 headers={ 13 "Content-Type": "application/json", 14 "Authorization": f"Basic {encoded_credentials}" 15 } 16 ) 17 return r.json()["data"]["url"] 18 19 20if __name__ == "__main__": 21 url = retrieve_dump(key_id, api_key) --- # Full field metapolicy_struct Source: https://docs.emergingtravel.com/docs/how-tos/process-fields/full-metapolicy-struct/ ℹ️ This page: Gives an example on working with the metapolicy_struct field. Covers code samples in Node.js and Python. Uses the Retrieve hotel dump call: B2B. Affiliate. 💡 Recommendations Change the unspecified values to something that will work for you. Change other values to a readable format. Make sure you process nullable or empty objects. Process the dump Use the instruction. Read the deposit object and show its data to the user Node.jsPython 1// hotel is the hotel object 2async function showDeposit(hotel) { 3 const deposits = hotel.metapolicy_struct.deposit; 4 if (deposits.length == 0) { 5 console.log('No deposit'); 6 return; 7 } 8 // TODO: your logic 9 console.log('Deposits'); 10 for (const deposit of deposits) { 11 let unspecified = false; 12 let depositType = deposit.deposit_type; 13 if (depositType == 'unspecified') { 14 depositType = 'No deposit type.'; 15 unspecified = true; 16 } else { 17 depositType = String(depositType).charAt(0).toUpperCase() 18 + String(depositType).slice(1) + '.'; 19 } 20 let depositPaymentType = deposit.payment_type; 21 if (depositPaymentType == 'unspecified') { 22 depositPaymentType = 'No deposit payment type.'; 23 unspecified = true; 24 } else { 25 depositPaymentType = 'The deposit is made by ' + depositPaymentType + '.'; 26 } 27 let depositPriceUnit = deposit.price_unit; 28 if (depositPriceUnit == 'unspecified') { 29 depositPriceUnit = '(no price unit)'; 30 unspecified = true; 31 } else { 32 depositPriceUnit = String(depositPriceUnit).replaceAll('_', ' '); 33 } 34 let depositPricingMethod = deposit["pricing_method"]; 35 if (depositPricingMethod == 'unspecified') { 36 depositPricingMethod = 'No pricing method.'; 37 unspecified = true; 38 } else { 39 depositPricingMethod = 'The deposit has the ' + depositPricingMethod + ' pricing method.'; 40 } 41 const depositUnspecified = unspecified == true ? ' Contact the provider to know more.' : ''; 42 const depositAvailability = deposit.availability; 43 if (depositAvailability == 'unspecified') { 44 console.log('No information on the deposit availability. '+ 45 '%s %s %s The price is %s %s %s. %s ', 46 depositType, depositPaymentType, depositPricingMethod, deposit.price, deposit.currency, depositPriceUnit, ' Contact the provider to know more.'); 47 } else if (depositAvailability == 'available') { 48 console.log('Deposit is available to have. ' + 49 '%s %s %s The price is %s %s %s. %s', 50 depositType, depositPaymentType, depositPricingMethod, deposit.price, deposit.currency, depositPriceUnit, depositUnspecified); 51 } 52 else { 53 console.log('Deposit isn’t available to have. ' + 54 '%s %s %s The price is %s %s %s. %s', 55 depositType, depositPaymentType, depositPricingMethod, deposit.price, deposit.currency, depositPriceUnit, depositUnspecified); 56 } 57 } 58} 59 60await function showDeposit(hotel); --- # Download dump Source: https://docs.emergingtravel.com/docs/how-tos/process-dump/download-dump/ ⚠️ Each download URL returned by the API is temporary and valid for 1 hour from the moment it is issued. Always request a fresh link before downloading the dump. As the dump size can exceed 2 GB, it might take a while to download it. Node.jsPython 1import fs from 'fs'; 2import https from 'https'; 3 4// url is the URL address taken from the dump receiving calls 5// fileName is the path to store the dump 6function downloadDump(url, fileName) { 7 let localFile = fs.createWriteStream(fileName); 8 const request = https.get(url, function (response) { 9 response.on('data', (d) => { 10 localFile.write(d); 11 }); 12 }); 13}; 14 15await downloadDump(url, fileName); 1from urllib.request import urlretrieve 2 3 4# url is the URL address taken from the dump receiving calls 5# file_name is the path to store the dump 6def download_dump(url, file_name): 7 path, headers = urlretrieve(url, file_name) 8 return path 9 10 11if __name__ == "__main__": 12 path = download_dump(dump_url) --- # Upsells Source: https://docs.emergingtravel.com/docs/how-tos/process-fields/upsells/ ℹ️ This page describes more information about upsells and upsell_data fields and gives examples of filling them. Upsell parameters and the upsell_data object are used to include information about additional services — such as early check-in or late check-out — in a booking request. Using these fields helps to tailor booking offers to specific user needs, ensuring both service accuracy and a better user experience. Upsells can be specified in the requests in the Search by hotel IDs and Retrieve hotelpage calls. Parameters Description early_checkin indicates whether early check-in is required. time — specifies the desired early check-in time. late_checkout indicates whether late check-out is needed. time specifies the desired late check-out time. only_eclcwhen is set to true, only rates offering early check-in or late check-out will be considered. upsell_data provides detailed information about the requested upsell. attributes upsell check-in and check-out dates as a string. checkin_datetime the date and time of the upsell check-in. checkout_datetime the date and time of the upsell check-out. name the name of the upsell (e.g., early_checkin, late_checkout). rule_id the upsell rule ID. uid the unique upsell ID (use the value returned from the Create booking call. Usage Recommendations Use upsell parameters and the upsell_data object when the user requires additional services. If a specific time is needed for early check-in or late check-out, set it explicitly using the time, checkin_datetime, or checkout_datetime fields. Only one early check-in and one late check-out should be requested and selected. To filter search results to only those that support early check-in or late check-out, set only_eclc to true. Provide the unique upsell ID (uid) and rule ID if available from previous steps in the booking process. Examples ℹ️ Always use the uid value returned from the create booking process when referencing an upsell in a subsequent call. Dates and times should be in format: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. Request With Early Check-in and Late Check-out In this example, the user requests early check-in at 10:00 on the check-in date and late check-out at 16:00 on the check-out date. For the API to work correctly, the time parameter in early_checkin and late_checkout must be in ISO 8601 datetime format (YYYY-MM-DDTHH:MM), where the date matches the corresponding check-in or check-out date. { "checkin_date": "2024-06-01", "checkout_date": "2024-06-05", "upsells": { "early_checkin": { "time": "2024-06-01T10:00" }, "late_checkout": { "time": "2024-06-05T16:00" } } } ℹ️ The early_checkin.time date must match your checkin_date. The late_checkout.time date must match your checkout_date. Time format should always include both date and time, not just time. Request With Only Early or Late Check-in/Out Rates Only rates that include either early check-in or late check-out will be returned. { "checkin_date": "2024-06-01", "checkout_date": "2024-06-05", "upsells": { "only_eclc": true } } Without Specific Time User requests an early check-in, but without specifying the exact time. { "checkin_date": "2024-06-01", "checkout_date": "2024-06-05", "upsells": { "early_checkin": {} } } Combined Usage Requests late check-out at 18:00 and wants to see only those rates that include either early check-in or late check-out. { "checkin_date": "2024-06-01", "checkout_date": "2024-06-05", "upsells": { "late_checkout": { "time": "2024-06-05T18:00" }, "only_eclc": true } } Adding Upsell Data to an Order This order includes an upsell for early check-in, with check-in at 09:00, and all relevant identifiers for the chosen upsell option. { "order_id": "ORD-123456", "upsell_data": { "attributes": "Check-in: 2024-07-05 09:00", "checkin_datetime": "2024-07-05T09:00:00Z", "name": "early_checkin", "rule_id": 47, "uid": "upsell-7890" } } Multiple Upsell Data Entries If you need to specify both early check-in and late check-out upsells in one request, you can provide multiple upsell_data objects: { "order_id": "ORD-123457", "upsell_data": [ { "name": "early_checkin", "checkin_datetime": "2024-07-05T08:00:00Z", "rule_id": 47, "uid": "upsell-1234" }, { "name": "late_checkout", "checkout_datetime": "2024-07-10T19:00:00Z", "rule_id": 48, "uid": "upsell-5678" } ] } Adds both early check-in and late check-out upsells to the order, with times and corresponding IDs. --- # Decompress dump Source: https://docs.emergingtravel.com/docs/how-tos/process-dump/decompress-dump/ ⚠️ The decompressed dump size can exceed 20 GB. Use the official instruments. Node.jsSync PythonAsync PythonSync GolangAsync Golang 1import fs from 'fs'; 2import zstd from 'simple-zstd'; 3 4// fileName is the file name from which to decompress 5async function decompressFile(fileName) { 6 const newFileName = String(fileName).split('.')[0] + '.json'; 7 let localFile = fs.createReadStream(fileName) 8 .pipe(zstd.ZSTDDecompress()) 9 .pipe(fs.createWriteStream(newFileName)) 10}; 11 12await decompressFile(fileName, newFileName); 1import io 2from pyzstd import decompress_stream 3 4 5# path is the file path from which to decompress 6def decompress_dump(path): 7 decompressed_file = ".".join(path.split(".")[:-1]) 8 with io.open(path, "rb") as f: 9 with io.open(decompressed_file, "wb") as g: 10 decompress_stream(f, g) 11 return decompressed_file 12 13 14if __name__ == "__main__": 15 decompressed_dump = decompress_dump(dump_path) 1import asyncio 2 3# Install the dependency 4from zstandard import ZstdDecompressor 5import json 6from asyncio import Semaphore 7 8 9class Decoder: 10 def __init__(self, semaphore_value: int) -> None: 11 # Create the semaphore that restricts the number of active coroutines 12 self.sem = Semaphore(semaphore_value) 13 self._raw = [] 14 15 # The function processes raw hotel data 16 async def _process_raw_hotels(self) -> None: 17 raw_hotels = self._raw[1:] 18 raw_hotels = [self._raw[0]] + [ 19 "".join(t) for t in zip(raw_hotels[::2], raw_hotels[1::2]) 20 ] 21 await self._process_hotel(*raw_hotels) 22 23 # The function works with raw hotel byte data 24 async def _process_hotel(self, *raw_hotels: str) -> None: 25 for h in raw_hotels: 26 hotel_data = json.loads(h) 27 # Implememnt your logic with the hotel data 28 # ... 29 print(f"current hotel is {hotel_data['name']}") 30 31 # The function works with with raw chunks 32 async def _process_chunk(self, chunk: bytes) -> None: 33 raw_data = chunk.decode("utf-8") 34 # Read the hotels’ JSONs one by one 35 lines = raw_data.split("\n") 36 for i, line in enumerate(lines[1:-1]): 37 if i == 0: 38 # Put the last line to the raw list 39 self._raw.append(lines[0]) 40 await self._process_hotel(line) 41 42 # Put the last line to the raw list 43 self._raw.append(lines[-1]) 44 # Increment the semaphore value 45 self.sem.release() 46 47 # The function parses the dump 48 async def parse_dump(self, filename: str) -> None: 49 # Open the dump 50 with open(filename, "rb") as fh: 51 dctx = ZstdDecompressor() 52 with dctx.stream_reader(fh) as reader: 53 while True: 54 # Read the dump by 16 MB chunks 55 chunk = reader.read(2 ** 24) 56 if not chunk: 57 await self._process_raw_hotels() 58 break 59 # Decrement the semaphore value 60 await self.sem.acquire() 61 # Run immediately 62 asyncio.create_task(self._process_chunk(chunk)) 63 64 65if __name__ == "__main__": 66 loop = asyncio.get_event_loop() 67 d = Decoder(semaphore_value=10) 68 loop.run_until_complete(d.parse_dump("dump_en.json.zst")) 1package main 2import ( 3 "bytes" 4 "encoding/json" 5 "io" 6 "log" 7 "math" 8 "os" 9 // Install the dependency 10 "github.com/DataDog/zstd" 11) 12 13// Not full struct 14type Hotel struct { 15 Name string `json:"name"` 16} 17 18func parseDump(filename string) { 19 // Open the dump 20 file, err: = os.Open(filename) 21 if err != nil { 22 log.Fatal(err) 23 } 24 defer file.Close() 25 reader: = zstd.NewReader(file) 26 previousLine: = make([] byte, 0) 27 // Read the dump by 16 MB chunks 28 bufferSize: = make([] byte, int(math.Pow(2, 24))) 29 for { 30 n, readErr: = reader.Read(bufferSize) 31 if readErr != nil && readErr != io.EOF { 32 log.Fatal(readErr) 33 } 34 if readErr == io.EOF { 35 break 36 } 37 rawReadData: = bufferSize[: n]\ 38 // Read the hotels’ JSONs one by one 39 lines: = bytes.Split(rawReadData, [] byte("\n")) 40 for i, line: = range lines[: len(lines) - 1] { 41 if i == 0 { 42 line = append(previousLine, line...) 43 } 44 // Unmarshal the current hotel JSON 45 var hotel Hotel 46 _ = json.Unmarshal(line, & hotel) 47 // Implememnt your logic with the hotel data 48 // ... 49 log.Printf("current hotel is %s", hotel.Name) 50 } 51 lastLine: = lines[len(lines) - 1] 52 previousLine = make([] byte, len(lastLine)) 53 copy(previousLine, lastLine) 54 } 55} 56 57func main() { 58 parseDump("dump_en.json.zst") 59} 1package main 2import ( 3 "bytes" 4 "context" 5 "encoding/json" 6 "io" 7 "log" 8 "math" 9 "os" 10 "golang.org/x/sync/semaphore" 11 // Install the dependency 12 "github.com/DataDog/zstd" 13) 14 15// The storage with raw data 16type Raw struct { 17 firstLine[] byte 18 lastLine[] byte 19} 20 21// Not full struct 22type Hotel struct { 23 Name string `json:"name"` 24} 25 26// The function copies raw data without memory leak 27func copySlice(slice[] byte)[] byte { 28 copiedSlice: = make([] byte, len(slice)) 29 for i, 30 v: = range slice { 31 copiedSlice[i] = v 32 } 33 return copiedSlice 34} 35 36// The function works with raw hotel byte data 37func processHotel(hotelRaw[] byte) { 38 // Unmarshal the hotel JSON 39 var hotel Hotel 40 err: = json.Unmarshal(hotelRaw, & hotel) 41 if err != nil { 42 log.Println(err) 43 } 44 // Implememnt your logic with the hotel data 45 // ... 46 log.Printf("current hotel is %s", hotel.Name) 47} 48 49// The function works with with raw chunks 50func processChunk(chunk[] byte, sem * semaphore.Weighted, rawChan chan Raw) { 51 defer sem.Release(1) 52 lines: = bytes.Split(chunk, [] byte("\n")) 53 rawChan < -Raw { 54 firstLine: copySlice(lines[0]), 55 lastLine: copySlice(lines[len(lines) - 1]), 56 } 57 for _, line: = range lines[1: len(lines) - 1] { 58 processHotel(line) 59 } 60} 61 62// The function processes raw hotel data 63func processRawHotels(raws[] Raw) { 64 for i, r: = range raws { 65 if i == 0 { 66 processHotel(r.firstLine) 67 continue 68 } 69 data: = append(raws[i - 1].lastLine, r.firstLine...) 70 processHotel(data) 71 } 72} 73 74// The function parses the dump 75func parseDump(filename string) { 76 // Open the dump 77 file, err: = os.Open(filename) 78 if err != nil { 79 log.Fatal(err) 80 } 81 defer file.Close() 82 reader: = zstd.NewReader(file) 83 // Read the dump by 16 MB chunks 84 bufferSize: = make([] byte, int(math.Pow(2, 24))) 85 ctx: = context.Background() 86 // Set the weighted semaphore to maximum 10 async goroutines 87 var sem = semaphore.NewWeighted(int64(10)) 88 // Make the storage firstLine and lastLine lines from a chunk 89 rawData: = make([] Raw, 0) 90 rawChan: = make(chan Raw) 91 isFinished: = false 92 for { 93 if isFinished { 94 break 95 } 96 n, readErr: = reader.Read(bufferSize) 97 if readErr != nil && readErr != io.EOF { 98 log.Fatal(readErr) 99 } 100 if readErr == io.EOF { 101 isFinished = true 102 } 103 rawReadData: = bufferSize[: n] 104 actualLine: = make([] byte, len(rawReadData)) 105 copy(actualLine, rawReadData) 106 // Read the hotels’ JSONs one by one 107 _ = sem.Acquire(ctx, 1) 108 go processChunk(actualLine, sem, rawChan) 109 rawData = append(rawData, < -rawChan) 110 } 111 processRawHotels(rawData) 112} 113 114func main() { 115 parseDump("dump_en.json.zst") 116} --- # Sell_price_limits Source: https://docs.emergingtravel.com/docs/how-tos/process-fields/sell_price_limits/ ℹ️ This page describes more information about sell_price_limits field and gives examples of filling it. sell_price_limits is an object that contains restrictions on the final selling price for the client on open sales channels. Open channels refer to those intended for end customers (B2C, individuals). { "sell_price_limits": { "min_price": "480.00", "max_price": "750.00" } } If the field is present and populated, you must not sell the selected rate at a price lower than min_price or higher than max_price. The currency matches the search currency used for the rate request. If the field is missing or null, there are no restrictions on the selling price from our side. Fields can be provided separately or together. ⚠️ If MSP (sell_price_limits) is not enabled for your API key, but it is active on the supplier’s side, the price will be automatically adjusted by RH. This may result in a non-competitive price and can lead to missed bookings. We strongly recommend supporting MSP in your integration, especially if you have a B2C distribution model. Contact your account manager for activation details. Why is it needed? Some hotel suppliers require the enforcement of minimum/maximum selling prices on open markets. We simply pass these restrictions on to you. Violation of the limits will lead to a violation incident and may affect our cooperation. If your contract does not allow working under such restrictions, we will not send you this field. How to get access To receive data via the sell_price_limits field: Contact your account manager. Sign the additional agreement. After access is configured, we will start sending this field in the search results. How to use the field Apply the restriction when calculating the final selling price for the client. For each rate, if there is a min_price, your selling price must not be lower than this value. If there is a max_price, your price must not be higher than this value. Display and use the prices in the search currency. Not receiving this field? We will not send this restriction, but if we receive such a price restriction from the supplier, we will adjust the rate’s selling price for your channel accordingly. Examples Example 1: Minimum limit only { "sell_price_limits": { "min_price": "480.00" } } Your client price must be at least 480.00 (in the search currency). Example 2: Both minimum and maximum limits { "sell_price_limits": { "min_price": "480.00", "max_price": "750.00" } } The client price must be between 480.00 and 750.00 (search currency). Example 3: No limit provided { "sell_price_limits": null } Follow the general rules; no pricing restriction applies. Field structure Field Type Description min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. FAQ Q: What if the hotel supplier sends a restriction, but I do not receive it? A: In this case, we will automatically adjust the price in your search response; the restriction itself is not sent to you. Q: Can I sell below the minimum price if the field is not present and I have not signed the amendment? A: No, in this case, you will not see the field and will receive the already adjusted price. Q: What happens if we don’t support MSP in our integration? A: If MSP is active on the supplier side and not on your API key, prices will be adjusted automatically by RH, which might make them less attractive for end users. To avoid this, please enable MSP in your integration. Responsibility You must observe these conditions. Violation incidents will negatively affect our business relationship. If your systems are unable to process this field, do not activate this option. Contacts and support For connection questions or clarifications, please contact your account manager. --- # Read dump Source: https://docs.emergingtravel.com/docs/how-tos/process-dump/read-dump/ ⚠️ As the decompressed dump size can exceed 20 GB: You have to read the dump line by line. It might take a while. Node.jsPython 1import fs from 'fs'; 2 3let stream = fs.createReadStream(newFileName, { flags: 'r', encoding: 'utf-8' }); 4let buffer = ''; 5let hotel; 6 7// line is the current processed line 8async function processLine(line) { 9 if (line[line.length - 1] == '\r') { 10 line = line.substr(0, line.length - 1); 11 } 12 if (line.length > 0) { 13 hotel = JSON.parse(line); 14 // TODO: your logic 15 } 16} 17 18async function readLineByLine() { 19 let position; 20 while ((position = buffer.indexOf('\n')) >= 0) { 21 if (position == 0) { 22 buffer = buffer.slice(1); 23 continue; 24 } 25 await processLine(buffer.slice(0, position)); 26 buffer = buffer.slice(position + 1); 27 } 28} 29 30async function readDump() { 31 stream.on('data', function (functionData) { 32 buffer += functionData.toString(); 33 readLineByLine(); 34 }); 35} 36 37await readDump(); 1# decompressed_file_name is the decompressed dump file name 2def read_dump(decompressed_file_name): 3 with open(decompressed_file_name, "r") as f: 4 s = f.readline() 5 while s: 6 hotel = json.loads(s) 7 # TODO: your logic 8 s = f.readline() 9 10 11if __name__ == "__main__": 12 read_dump(decompressed_dump_name) --- # Retrieve filter values Source: https://docs.emergingtravel.com/docs/content-api/retrieve-filter-values/ Sandbox Production https://api-sandbox.worldota.net/api/content/v1/filter_values https://api.worldota.net/api/content/v1/filter_values The call allows to retrieve all possible filter options for future content filtering. ℹ️ Use this call first. Call is limited to 60 requests per minute (QPM). Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The language filter is supported only for English (en). Other languages are not available. Response Expand this| Collapse this language [Object] The language. value String Language identifier (e.g., language code like en for English, de for German). desc String Name of the language. country [Object] The country. value Int Country identifier (e.g., country code like 1 for Afghanistan, 59 for France). desc String Name of the country. serp_filter [Object] The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. value String Filter identifier (e.g., “has_breakfast”, “has_spa”). desc String Name of the filter (e.g., “Breakfast included”, “Spa Services”). star_rating [Int] The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The minimum value is 0. The maximum value is 5. kind [String] The hotel type. Response example { "data": { "language": [ { "value": "en", "desc": "English" }, { "value": "ru", "desc": "Russian" }, { "value": "de", "desc": "German" }, { "value": "es", "desc": "Spanish" }, { "value": "it", "desc": "Italian" }, { "value": "pl", "desc": "Polish" }, { "value": "pt", "desc": "Portuguese" }, { "value": "tr", "desc": "Turkish" }, { "value": "fr", "desc": "French" }, { "value": "bg", "desc": "Bulgarian" }, { "value": "el", "desc": "Greek" }, { "value": "hu", "desc": "Hungarian" }, { "value": "ro", "desc": "Romanian" }, { "value": "sr", "desc": "Serbian" }, { "value": "ar", "desc": "Arabic" }, { "value": "sq", "desc": "Albanian" }, { "value": "pt_PT", "desc": "European Portuguese" }, { "value": "zh_CN", "desc": "Simplified Chinese (China)" }, { "value": "cs", "desc": "Czech" }, { "value": "he", "desc": "Hebrew" }, { "value": "nl", "desc": "Dutch" }, { "value": "vi", "desc": "Vietnamese" }, { "value": "kk", "desc": "Kazakh" }, { "value": "ko", "desc": "Korean" }, { "value": "th", "desc": "Thai" }, { "value": "ja", "desc": "Japanese" }, { "value": "da", "desc": "Danish" }, { "value": "fi", "desc": "Finnish" }, { "value": "no", "desc": "Norwegian Bokmål" }, { "value": "sv", "desc": "Swedish" }, { "value": "uk", "desc": "Ukrainian" }, { "value": "zh_TW", "desc": "Traditional Chinese (Taiwan)" } ], "country": [ { "value": "1", "desc": "Afghanistan" }, { "value": "2", "desc": "Albania" }, { "value": "3", "desc": "Algeria" }, { "value": "4", "desc": "Andorra" }, { "value": "5", "desc": "Angola" }, { "value": "6", "desc": "Anguilla" }, { "value": "7", "desc": "Antigua and Barbuda" }, { "value": "8", "desc": "Argentina" }, { "value": "9", "desc": "Aruba" }, { "value": "10", "desc": "Australia" }, { "value": "11", "desc": "Austria" }, { "value": "12", "desc": "Azerbaijan" }, { "value": "13", "desc": "Bahamas" }, { "value": "14", "desc": "Bahrain" }, { "value": "15", "desc": "Bangladesh" }, { "value": "16", "desc": "Barbados" }, { "value": "17", "desc": "Belgium" }, { "value": "18", "desc": "Belize" }, { "value": "19", "desc": "Benin" }, { "value": "20", "desc": "Bermuda" }, { "value": "21", "desc": "Bolivia" }, { "value": "22", "desc": "Botswana" }, { "value": "23", "desc": "Brazil" }, { "value": "24", "desc": "British Virgin Islands" }, { "value": "25", "desc": "Brunei" }, { "value": "26", "desc": "Bulgaria" }, { "value": "27", "desc": "Burkina Faso" }, { "value": "28", "desc": "Burundi" }, { "value": "29", "desc": "Cambodia" }, { "value": "30", "desc": "Cameroon" }, { "value": "31", "desc": "Canada" }, { "value": "32", "desc": "Cape Verde" }, { "value": "33", "desc": "Cayman Islands" }, { "value": "34", "desc": "Central African Republic" }, { "value": "35", "desc": "Chad" }, { "value": "36", "desc": "Chile" }, { "value": "37", "desc": "China" }, { "value": "38", "desc": "Colombia" }, { "value": "39", "desc": "Comoros" }, { "value": "40", "desc": "Republic of the Congo" }, { "value": "41", "desc": "Cook Islands" }, { "value": "42", "desc": "Costa Rica" }, { "value": "43", "desc": "Croatia" }, { "value": "44", "desc": "Cuba" }, { "value": "45", "desc": "Cyprus" }, { "value": "46", "desc": "Czech Republic" }, { "value": "47", "desc": "Denmark" }, { "value": "48", "desc": "Djibouti" }, { "value": "49", "desc": "Dominica" }, { "value": "50", "desc": "Dominican Republic" }, { "value": "51", "desc": "Ecuador" }, { "value": "52", "desc": "Egypt" }, { "value": "53", "desc": "El Salvador" }, { "value": "54", "desc": "Equatorial Guinea" }, { "value": "55", "desc": "Estonia" }, { "value": "56", "desc": "Ethiopia" }, { "value": "57", "desc": "Fiji" }, { "value": "58", "desc": "Finland" }, { "value": "59", "desc": "France" }, { "value": "61", "desc": "French Polynesia" }, { "value": "62", "desc": "Gabon" }, { "value": "63", "desc": "Gambia" }, { "value": "64", "desc": "Germany" }, { "value": "65", "desc": "Ghana" }, { "value": "66", "desc": "Gibraltar" }, { "value": "67", "desc": "Greece" }, { "value": "68", "desc": "Grenada" }, { "value": "70", "desc": "Guam" }, { "value": "71", "desc": "Guatemala" }, { "value": "72", "desc": "Guinea" }, { "value": "73", "desc": "Guinea-Bissau" }, { "value": "74", "desc": "Guyana" }, { "value": "75", "desc": "Haiti" }, { "value": "76", "desc": "Honduras" }, { "value": "77", "desc": "Hong Kong" }, { "value": "78", "desc": "Hungary" }, { "value": "79", "desc": "Iceland" }, { "value": "80", "desc": "India" }, { "value": "81", "desc": "Indonesia" }, { "value": "82", "desc": "Iran" }, { "value": "83", "desc": "Iraq" }, { "value": "84", "desc": "Ireland" }, { "value": "85", "desc": "Israel" }, { "value": "86", "desc": "Italy" }, { "value": "87", "desc": "Cote d'Ivoire" }, { "value": "88", "desc": "Jamaica" }, { "value": "89", "desc": "Japan" }, { "value": "90", "desc": "Jordan" }, { "value": "91", "desc": "Kazakhstan" }, { "value": "92", "desc": "Kenya" }, { "value": "93", "desc": "Kiribati" }, { "value": "94", "desc": "South Korea" }, { "value": "95", "desc": "Kuwait" }, { "value": "96", "desc": "Laos" }, { "value": "97", "desc": "Latvia" }, { "value": "98", "desc": "Lebanon" }, { "value": "99", "desc": "Lesotho" }, { "value": "100", "desc": "Liberia" }, { "value": "101", "desc": "Libya" }, { "value": "102", "desc": "Lithuania" }, { "value": "103", "desc": "Luxembourg" }, { "value": "104", "desc": "Macau" }, { "value": "105", "desc": "Macedonia" }, { "value": "106", "desc": "Madagascar" }, { "value": "107", "desc": "Malawi" }, { "value": "108", "desc": "Malaysia" }, { "value": "109", "desc": "Maldives" }, { "value": "110", "desc": "Mali" }, { "value": "111", "desc": "Malta" }, { "value": "112", "desc": "Northern Mariana Islands" }, { "value": "114", "desc": "Mauritania" }, { "value": "115", "desc": "Mauritius" }, { "value": "117", "desc": "Mexico" }, { "value": "118", "desc": "Federated States of Micronesia" }, { "value": "120", "desc": "Monaco" }, { "value": "121", "desc": "Montserrat" }, { "value": "122", "desc": "Morocco" }, { "value": "123", "desc": "Mozambique" }, { "value": "124", "desc": "Myanmar" }, { "value": "125", "desc": "Namibia" }, { "value": "126", "desc": "Nauru" }, { "value": "127", "desc": "Nepal" }, { "value": "129", "desc": "Netherlands" }, { "value": "130", "desc": "St. Kitts and Nevis" }, { "value": "131", "desc": "New Caledonia" }, { "value": "132", "desc": "Papua New Guinea" }, { "value": "133", "desc": "New Zealand" }, { "value": "134", "desc": "Nicaragua" }, { "value": "135", "desc": "Niger" }, { "value": "136", "desc": "Nigeria" }, { "value": "138", "desc": "Norway" }, { "value": "139", "desc": "Oman" }, { "value": "140", "desc": "Pakistan" }, { "value": "141", "desc": "Palau" }, { "value": "142", "desc": "Panama" }, { "value": "143", "desc": "Paraguay" }, { "value": "144", "desc": "Peru" }, { "value": "145", "desc": "Philippines" }, { "value": "146", "desc": "Poland" }, { "value": "147", "desc": "Portugal" }, { "value": "148", "desc": "Puerto Rico" }, { "value": "149", "desc": "Qatar" }, { "value": "151", "desc": "Romania" }, { "value": "153", "desc": "Russia" }, { "value": "154", "desc": "Rwanda" }, { "value": "155", "desc": "Samoa" }, { "value": "156", "desc": "Sao Tome and Principe" }, { "value": "157", "desc": "Saudi Arabia" }, { "value": "158", "desc": "Senegal" }, { "value": "159", "desc": "Seychelles" }, { "value": "160", "desc": "Sierra Leone" }, { "value": "161", "desc": "Singapore" }, { "value": "162", "desc": "Slovakia" }, { "value": "163", "desc": "Solomon Islands" }, { "value": "164", "desc": "Federal Republic of Somalia" }, { "value": "165", "desc": "South Africa" }, { "value": "166", "desc": "Spain" }, { "value": "167", "desc": "Sri Lanka" }, { "value": "168", "desc": "St. Lucia" }, { "value": "169", "desc": "St. Vincent and the Grenadines" }, { "value": "170", "desc": "Sudan" }, { "value": "171", "desc": "Suriname" }, { "value": "172", "desc": "Swaziland" }, { "value": "173", "desc": "Sweden" }, { "value": "174", "desc": "Switzerland" }, { "value": "175", "desc": "Syria" }, { "value": "176", "desc": "Taiwan" }, { "value": "177", "desc": "Tanzania" }, { "value": "178", "desc": "Thailand" }, { "value": "179", "desc": "Togo" }, { "value": "180", "desc": "Tonga" }, { "value": "181", "desc": "Trinidad and Tobago" }, { "value": "182", "desc": "Tunisia" }, { "value": "183", "desc": "Turkiye" }, { "value": "184", "desc": "Turks and Caicos" }, { "value": "185", "desc": "Tuvalu" }, { "value": "186", "desc": "U.S. Virgin Islands" }, { "value": "187", "desc": "Uganda" }, { "value": "188", "desc": "Ukraine" }, { "value": "189", "desc": "United Arab Emirates" }, { "value": "190", "desc": "United Kingdom" }, { "value": "191", "desc": "Uruguay" }, { "value": "192", "desc": "Vanuatu" }, { "value": "193", "desc": "Venezuela" }, { "value": "194", "desc": "Vietnam" }, { "value": "196", "desc": "Yemen" }, { "value": "197", "desc": "Serbia" }, { "value": "198", "desc": "Democratic Republic of the Congo" }, { "value": "199", "desc": "Zambia" }, { "value": "200", "desc": "Zimbabwe" }, { "value": "201", "desc": "United States of America" }, { "value": "11107", "desc": "Greenland" }, { "value": "11398", "desc": "Armenia" }, { "value": "11399", "desc": "American Samoa" }, { "value": "11400", "desc": "Bhutan" }, { "value": "11401", "desc": "Belarus" }, { "value": "11402", "desc": "Eritrea" }, { "value": "11403", "desc": "Georgia" }, { "value": "11404", "desc": "Kyrgyzstan" }, { "value": "11405", "desc": "Liechtenstein" }, { "value": "11406", "desc": "Moldova" }, { "value": "11407", "desc": "Marshall Islands" }, { "value": "11408", "desc": "Mongolia" }, { "value": "11409", "desc": "Niue" }, { "value": "11410", "desc": "Tajikistan" }, { "value": "11411", "desc": "Turkmenistan" }, { "value": "11412", "desc": "Uzbekistan" }, { "value": "11413", "desc": "Slovenia" }, { "value": "11414", "desc": "Bosnia and Herzegovina" }, { "value": "11704", "desc": "British Indian Ocean Territory" }, { "value": "11711", "desc": "Falkland Islands" }, { "value": "11714", "desc": "Faroe Islands" }, { "value": "11715", "desc": "Isle of Man" }, { "value": "11717", "desc": "North Korea" }, { "value": "11718", "desc": "Pitcairn Island" }, { "value": "11719", "desc": "St. Pierre and Miquelon" }, { "value": "11720", "desc": "San Marino" }, { "value": "11721", "desc": "St. Helena" }, { "value": "11722", "desc": "Svalbard" }, { "value": "11723", "desc": "Tokelau" }, { "value": "11724", "desc": "Vatican City" }, { "value": "11725", "desc": "Wallis and Futuna" }, { "value": "11726", "desc": "State of Palestine" }, { "value": "6049220", "desc": "East Timor" }, { "value": "6051403", "desc": "Montenegro" }, { "value": "6069953", "desc": "Saint Barthelemy" }, { "value": "6069955", "desc": "St. Martin" }, { "value": "6143084", "desc": "Bonaire, Sint Eustatius and Saba" }, { "value": "6143269", "desc": "Curacao" }, { "value": "6143274", "desc": "Sint Maarten" }, { "value": "6145969", "desc": "South Sudan" }, { "value": "6190474", "desc": "US Minor Outlying Islands" }, { "value": "965821338", "desc": "Abkhazia" }, { "value": "965840279", "desc": "Kosovo" }, { "value": "965863760", "desc": "South Ossetia" } ], "serp_filter": [ { "value": "has_breakfast", "desc": "Breakfast included" }, { "value": "has_internet", "desc": "Free Internet" }, { "value": "has_airport_transfer", "desc": "Transfer" }, { "value": "has_parking", "desc": "Parking" }, { "value": "has_kids", "desc": "Suitable for children" }, { "value": "has_pool", "desc": "Swimming Pool" }, { "value": "has_fitness", "desc": "Fitness centre" }, { "value": "has_meal", "desc": "Bar or restaurant" }, { "value": "has_disabled_support", "desc": "For guests with disabilities" }, { "value": "has_business", "desc": "Conference hall" }, { "value": "has_spa", "desc": "Spa Services" }, { "value": "has_ski", "desc": "Ski slope nearby" }, { "value": "beach", "desc": "Beach nearby" }, { "value": "air_conditioning", "desc": "Air-conditioning" }, { "value": "has_pets", "desc": "Pets allowed" }, { "value": "has_jacuzzi", "desc": "Jacuzzi" }, { "value": "private_bathroom", "desc": "Private Bathroom" }, { "value": "kitchen", "desc": "Kitchen" }, { "value": "balcony", "desc": "Balcony" }, { "value": "with_view", "desc": "View from the window" }, { "value": "has_smoking", "desc": "Smoking allowed" }, { "value": "has_ecar_charger", "desc": "Electric car charging" } ], "star_rating": [ 0, 1, 2, 3, 4, 5 ], "kind": [ "Unspecified", "Hotel", "Resort", "Guesthouse", "Hostel", "Sanatorium", "Mini-hotel", "Apartment", "Camping", "Villas_and_Bungalows", "BNB", "Cottages_and_Houses", "Boutique_and_Design", "Castle", "Farm", "Apart-hotel", "Glamping" ] }, "debug": { "api_endpoint": { "endpoint": "api/content/v1/filter_values", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-01-22T13:31:00", "seconds_number": 60 }, "request": {}, "method": "GET", "real_ip": "104.30.161.77", "request_id": "d77d64d432e28e62e2dad28845784bf9", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-01-22T13:30:48.178672" }, "status": "ok", "error": null } --- # Retrieve hotel IDs by filter Source: https://docs.emergingtravel.com/docs/content-api/retrieve-hotel-ids-by-filter/ Sandbox Production https://api-sandbox.worldota.net/api/content/v1/hotel_ids_by_filter/ https://api.worldota.net/api/content/v1/hotel_ids_by_filter/ The call gets the identifiers for all required hotels. Use fields to search only for the desired hotels. ℹ️ Use this call instead of call Retrieve hotel dump. Use this call after Retrieve filter values call. Call is limited to 60 requests per minute (QPM). Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the country filter can only be one of the following: 59, 153, 189, 201. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/content/v1/hotel_ids_by_filter/' \ --header 'Content-Type: application/json' \ --data '{ "serp_filter": [ "air_conditioning", "has_airport_transfer", "beach", "has_internet", "has_kids", "kitchen" ], "kind": [ "Mini-hotel" ], "country": [ 153 ], "updated_since": "2006-01-02 15:04:05" }' curl --user ':' 'https://api.worldota.net/api/content/v1/hotel_ids_by_filter/' \ --header 'Content-Type: application/json' \ --data '{ "serp_filter": [ "air_conditioning", "has_airport_transfer", "beach", "has_internet", "has_kids", "kitchen" ], "kind": [ "Mini-hotel" ], "country": [ 153 ], "updated_since": "2006-01-02 15:04:05" }' Request body Expand this| Collapse this country [Int] optional The country. ℹ️ Use the value field from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. serp_filters [Srting] optional The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. ℹ️ Use the value field from the call Retrieve filter values. updated_since String optional Hotels where the information has been updated. ℹ️ The format of this field is: “2006-01-02 15:04:05”. supplier_type String optional Which suppliers to search for. ℹ️ The possible values: all — all available suppliers. direct — Chains, Extranet, DMC, Switch, Consolidator, Wholesaler. direct_fast — Chains, Extranet. direct_fast_extended — Chains, Extranet, DMC, Switch. The default value is all. preferable Boolean optional All sellable hotels that had at least one available rate in the last 6 months. top Boolean optional 500k best hotels by their paid bookings. Response Expand this| Collapse this hids [Int] A list of unique hotel IDs in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. ids [String] A list of unique hotel IDs in the legacy string format. Response example { "data": { "hids": [ 6325458, 6493239, 6637691, 7817631, 7834638, 7887172, 8384504, 8476876, 8718392, 8733342, 8745197, 8745735, 8752061, 8851791, 8873623, 8879233, 8889019, 9086579, 9091658, 9775775, 9989310, 10005806, 10011381, 10012664, 10013571, 10016126, 10052869, 10218662, 11237355, 13108680, 13350497, 13427279 ], "ids": [ "afrodita_hills", "aist_9", "amiko_club_minihotel", "anapa_city", "anna_hotel_3", "apartotel_more_v", "beryozka_yug_mini_hotel", "bliss_guest_house_minihotel", "bulgakov_mini_hotel_2", "complex_of_rooms_zoloto_azarta", "delfiniya", "flamingo_hotel_12", "katrane_minihotel", "labirint_mini_hotel", "lavanda_13", "lavanda_13", "lazurnyij_bereg_2", "mechta_minihotel", "minihotel_hotel_yurzuf", "minihotel_olimpijskij_vizit", "minihotel_slavyanskij", "miniotel_foros", "more_i_gory_minihotel", "na_more_minihotel", "planeta_7", "priliv_hostel", "semeinyi_2", "semeinyi_rai", "skazka_3", "villa_lana_hotel", "volgavolga", "zdorove_minihotel" ] }, "debug": { "api_endpoint": { "endpoint": "api/content/v1/hotel_ids_by_filter", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-01-22T13:33:00", "seconds_number": 60 }, "request": { "serp_filter": [ "air_conditioning", "has_airport_transfer", "beach", "has_internet", "has_kids", "kitchen" ], "kind": [ "Mini-hotel" ], "country": [ 153 ], "updated_since": "2006-01-02 15:04:05" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "a67fbfc9680969b458a2b23411a810c1", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-01-22T13:32:35.487010" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params One or more input parameters are incorrect. For more details, see the response field debug validation_error. no_hotel_ids An internal search error. Has 500 status code. --- # Retrieve hotels content by IDs Source: https://docs.emergingtravel.com/docs/content-api/retrieve-hotels-content-by-ids/ Sandbox Production https://api-sandbox.worldota.net/api/content/v1/hotel_content_by_ids/ https://api.worldota.net/api/content/v1/hotel_content_by_ids/ The call allow to obtain a required hotel content by id. Use the call in cases: Instead of hotel static data You want to check the content before making a booking with a possible update. Use this call after the Retrieve hotel IDs by filter call. ℹ️ Call is limited to 1200 requests per minute (QPM). Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/content/v1/hotel_content_by_ids' \ --header 'Content-Type: application/json' \ --data '{ "hids": [9852019], "language": "en" }' curl --user ':' 'https://api.worldota.net/api/content/v1/hotel_content_by_ids/' \ --header 'Content-Type: application/json' \ --data '{ "hids": [9852019], "language": "en" }' Request body Expand this| Collapse this hids [Int] The unique hotel IDs in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. Use the values from the call Retrieve hotel IDs by filter. ids [String] deprecated A list of unique hotel IDs in the legacy string format. language String required The language. ℹ️ Use the value field from the call Retrieve filter values. Response Expand this| Collapse this address String The hotel physical address. amenity_groups [Object] The hotel amenities list divided in groups. For example, Health and Safety Measures, Beauty and wellness. ℹ️ The full list of supported group values is available in the amenity_translations directory. amenities [String] The list of amenities inside the group. group_name String The amenity group name. non_free_amenities [String] The list of additional non-free services. check_in_time String The check-in time. Local time in HH:MM:SS format (24-hour). check_in_time_end String The latest allowed check-in time in 24-hour format, or empty if unspecified. check_out_time String The check-out time. The local time in the HH:MM:SS format (24-hour). description_struct Object The list of hotel descriptions divided into paragraphs. ℹ️ Store and display it in the UI, but do not index it or use it for internal search queries or SEO. paragraphs [String] The description itself. title String The description title. email String The hotel email address. hotel_chain String The hotel chain name. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. images_ext [Object] Information about the hotel images divided into categories. category_slug String The hotel image category. ℹ️ The possible values: unspecified — unspecified. balcony — balconies. bathroom — bathrooms. beach — beaches. business — business zone. entertainment — entertainment zones. exterior — hotel exterior. guest_rooms — guest rooms. hotel_front — hotel front. hotel_rooms — hotel rooms. lobby — lobby. meal — meals. outside — hotel outside view. pool — pools. spa — SPA zones. sports — sport zones. children — children zones. miscellaneous — other. url String The URL for the hotel image. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. kind String The hotel type. ℹ️ The possible values: Unspecified, Resort. Sanatorium. Guesthouse. Mini-hotel. Castle. Hotel. Boutique_and_Design. Apartment. Cottages_and_Houses. Farm. Villas_and_Bungalows. Camping. Hostel. BNB. Glamping. Apart-hotel. latitude Float The hotel geographical latitude. longitude Float The hotel geographical longitude. name String The hotel name. metapolicy_struct Object The additional accommodation conditions. Is the same as the section “Hotel policies” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from this param must be shown. ℹ️ For step-by-step instructions and code examples on processing this field, see Metapolicy_struct. add_fee [Object] The additional services, fees, and taxes information. currency String The additional services, fees, and taxes price currency. Is the same as the hotel currency. fee_type String The additional service type. ℹ️ The possible values: unspecified. television. towels. conditioning. housekeeping. heating. refrigerator. utility. safe. microwave. luggage_storage. tour_guide. bicycle_rental. baby_highchair. bed_linen. towels_only. luggage_storage_apartment. luggage_storage_office. price String The additional services, fees, and taxes price in the hotel currency. price_unit String The additional service price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. check_in_check_out [Object] The check-in and check-out policies’ information. check_in_check_out_type String The check-in or check-out type. ℹ️ The possible values: unspecified. early_checkin. late_checkout. holiday_checkin. holiday_checkout. currency String The check-in and check-out price currency. Is the same as the hotel currency. inclusion String The check-in and check-out inclusion. ℹ️ The possible values: unspecified. included. not_included. price String The check-in or check-out price in the hotel currency. children [Object] The children extra beds’ policy information. age_start Int The minimum child age for the children extra bed policy being applied. age_end Int The maximum child age for the children extra bed policy being applied. currency String The child extra bed price currency. Is the same as the hotel currency. extra_bed String The extra bed for a child availability. ℹ️ The possible values: unspecified. available. unavailable. price String The child extra bed price in the hotel currency. children_meal [Object] The children meals’ policy information. age_start Int The minimum child age for the children meal policy being applied. age_end Int The maximum child age for the children meal policy being applied. currency String The children meal price currency. Is the same as the hotel currency. inclusion String The children meal inclusion. ℹ️ The possible values: unspecified. included. not_included. meal_type String The children meal type. ℹ️ The possible values: unspecified. all-inclusive. breakfast. breakfast-buffet. continental-breakfast. dinner. full-board. half-board. lunch. nomeal. some-meal. english-breakfast. american-breakfast. asian-breakfast. chinese-breakfast. israeli-breakfast. japanese-breakfast. scandinavian-breakfast. scottish-breakfast. breakfast-for-1. breakfast-for-2. super-all-inclusive. soft-all-inclusive. ultra-all-inclusive. half-board-lunch. half-board-dinner. price String The children meal price in the hotel currency. cot [Object] The cots’ policy information. amount Int The available cot number. currency String The cot price currency. Is the same as the hotel currency. inclusion String The cot inclusion. ℹ️ The possible values: unspecified. included. not_included. price String The cot price in the hotel currency. price_unit String The cot price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. deposit [Object] The deposit information. availability String The deposit availability. ℹ️ The possible values: unspecified. available. unavailable. currency String The deposit amount currency. Is the same as the hotel currency. deposit_type String The deposit type. ℹ️ The possible values: unspecified. pet. breakage. keys. payment_type String The deposit payment type. ℹ️ The possible values: unspecified. cash. card. price String The deposit amount in the hotel currency. price_unit String The deposit amount unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. pricing_method String The deposit pricing method. ℹ️ The possible values: unspecified. percent. fixed. extra_bed [Object] The adult extra beds’ policy information. amount Int The available extra bed number. currency String The extra bed price currency. Is the same as the hotel currency. inclusion String The extra bed inclusion. ℹ️ The possible values: unspecified. included. not_included. price String The extra bed price in the hotel currency. price_unit String The extra bed price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. internet [Object] The internet policy information. currency String The internet price currency. Is the same as the hotel currency. inclusion String The internet inclusion. ℹ️ The possible values: unspecified. included. not_included. internet_type String The internet type. ℹ️ The possible values: unspecified. wireless. wired. price String The internet price in the hotel currency. price_unit String The internet price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. work_area String The internet coverage area. ℹ️ The possible values: unspecified. hotel. room. meal [Object] The adult meals’ policy information. currency String The meal price currency. Is the same as the hotel currency. inclusion String The meal inclusion. ℹ️ The possible values: unspecified. included. not_included. meal_type String The meal type. ℹ️ The possible values: unspecified. all-inclusive. breakfast. breakfast-buffet. continental-breakfast. dinner. full-board. half-board. lunch. nomeal. some-meal. english-breakfast. american-breakfast. asian-breakfast. chinese-breakfast. israeli-breakfast. japanese-breakfast. scandinavian-breakfast. scottish-breakfast. breakfast-for-1. breakfast-for-2. super-all-inclusive. soft-all-inclusive. ultra-all-inclusive. half-board-lunch. half-board-dinner. price String The meal price in the hotel currency. no_show [Object] The no-show policy information. availability String The no-show availability. ℹ️ The possible values: unspecified. available. unavailable. day_period String The time period related to the time value, used for fields with a 12-hour format. ℹ️ The possible values: unspecified — period is not specified; use with caution. before_midday — AM (before 12:00 noon). after_midday — PM (after 12:00 noon). time String The applicable time for no-show. The local time in the HH:MM:SS format (24-hour). parking Object The parking policy information. currency String The parking price currency. Is the same as the hotel currency. inclusion String The parking inclusion. ℹ️ The possible values: unspecified. included. not_included. price String The parking price in the hotel currency. price_unit String The parking price unit. ℹ️ The possible values: unspecified. per_car_per_night. per_car_per_stay. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. territory_type String The parking territory type. ℹ️ The possible values: unspecified. on_side. off_side. pets [Object] The pets’ accommodation policy information. currency String The pet accommodation price currency. Is the same as the hotel currency. inclusion String The pet accommodation inclusion. ℹ️ The possible values: unspecified. included. not_included. pets_type String The pet weight type. ℹ️ The possible values: unspecified — no information on the pet weight. lt_5kg — the pet weight is less than 5 kg. gt_5kg — the pet weight is greater than 5 kg. price String The pet accommodation price in the hotel currency. price_unit String The pet accommodation price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. shuttle [Object] The shuttles’ policy information. currency String The shuttle price currency. Is the same as the hotel currency. destination_type String The shuttle destination type. ℹ️ The possible values: unspecified. airport. train. ship. airport_train. inclusion String The shuttle inclusion. ℹ️ The possible values: unspecified. included. not_included. shuttle_type String The shuttle type. ℹ️ The possible values: unspecified. one_way. two_ways. price String The shuttle price in the hotel currency. visa [Object] The visa support policy information. visa_support String The visa support for the embassy of the hotel country. ℹ️ The possible values: unspecified — no information on the visa support. support_enable — the visa supported is available. metapolicy_extra_info String The additional hotel information. Is the same as the section “Extra info” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from the field must be shown to the end user. phone String The hotel phone number. policy_struct [Object] deprecated The additional accommodation conditions. Is the same as the section “Important - Please Note” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from the field is obligatory for showing to the end user. paragraphs [String] The policy itself. title String The policy title. postal_code String The hotel postal code. region Object The region where the hotel is located. country_code String Hotel’s country code (capital Latin letters, according to ISO 3166-1 alpha-2 standard). iata String The region airport IATA code. id String deprecated The unique ID of the region where the hotel is located. name String The name of the region where the hotel is located. type String The type of the region where the hotel is located. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). room_groups Object The list of the hotel room groups. images [String] deprecated The list of the URLs for the room images. ⚠️ Please use the images_ext field instead of this one. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. images_ext [Object] Information about the room images divided into categories. category_slug String The room image category. ℹ️ The possible values: unspecified — unspecified. balcony — balconies. bathroom — bathrooms. beach — beaches. business — business zone. entertainment — entertainment zones. exterior — hotel exterior. guest_rooms — guest rooms. hotel_front — hotel front. hotel_rooms — hotel rooms. lobby — lobby. meal — meals. outside — hotel outside view. pool — pools. spa — SPA zones. sports — sport zones. children — children zones. miscellaneous — other. url String The URL for the room image. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. name String The full room name. room_amenities [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. room_group_id Int deprecated The room ID. size Number Room area in square meters. ℹ️ This parameter is available only via the Content API for partners with the relevant feature enabled. To activate it, please contact your account manager and ensure a supplementary agreement is signed. Not available in data dumps. rg_ext Object The room ID. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. 8 — chair-bed. 9 — sofa. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuple. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. name_struct Object The structured room name. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. star_rating Int The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The minimum value is 0. The maximum value is 5. serp_filters [String] The list of amenities for the hotel selection based on a cumulative set of features from: All the hotels’ rates. And common hotels’ features. To get all available room amenities and their definitions, use the serp_filters field from the Retrieve hotel static data call. star_certificate Object Information about the hotel star certificate. Applicable only for hotels in some specific countries. Has the null value if there is no information about the star certificate. valid_to String The valid true date. certificate_id String The certificate ID. Has the null value if there is no information about the certificate ID. is_closed Boolean Whether the hotel property is closed or not. keys_pickup Object Information about how to pick up the hotel room keys. type String The picking-up type. ℹ️ The possible values: unspecified — no instructions. phone — get the keys with a call. To get the instructions, call the phone number in the phone field of this object. address — get the keys on the address specified in the apartment_office_address field of this object. smartlock — get the keys in a smart lock. Can be opened with an app or code. keypad — get the keys in a lock with a keypad. lockbox — get the keys in a lock box. reception — get the keys at the 24-hour reception. phone String The phone number for contacting purposes. The phone number must be valid. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. is_contactless Boolean Whether the hotel room keys’ pick-up is contactless or not. email String The email address for contacting purposes. The email address must be valid. apartment_office_address String The actual pick-up reception address. apartment_extra_information String The additional pick-up information. distance_center Number Distance from the property to the city center, in meters. ℹ️ This parameter is available only via the Content API for partners with the relevant feature enabled. To activate it, please contact your account manager and ensure a supplementary agreement is signed. Not available in data dumps. facts Object The hotel information. floors_number Int The floors number. register Object Information about the hotel registration in the FSA register. Applicable only for hotels in some specific countries. Has the null value if there is no information about the registration. record String Registration number in the FSA register. link String Link to the FSA register. email String The hotel email address in the FSA register. phone String The hotel phone number in the FSA register. status String Status of the object in the FSA register. Determines whether the object can be displayed and sold. Possible values: Active — the object can be both displayed and sold. Suspended — the object can be displayed, but selling is not available. Terminated — the object cannot be displayed or sold. Unspecified — status is unknown, used for unexpected values from an external source. kind String The hotel type in the FSA register. ℹ️ The possible values: unspecified — hotel type is not specified. hotel — classic hotel. camping — camping, accommodation in nature (tents, cabins, etc.). resort — resort hotel, often with leisure or recreational facilities. sanatorium — sanatorium, health and wellness facility. guesthouse — guesthouse, small private accommodation. name String Name of the hotel in the FSA register. address String The hotel address in the FSA register. status_end_date String Expiry date of the object in the FSA register. rooms Object Information about hotel rooms from the FSA register. rooms_count Int Number of rooms by category. category_type String Name of room categories. fsa_kind String cancelled The hotel type in the FSA register. ℹ️ The possible values: unspecified — hotel type is not specified. hotel — classic hotel. camping — camping, accommodation in nature (tents, cabins, etc.). resort — resort hotel, often with leisure or recreational facilities. sanatorium — sanatorium, health and wellness facility. guesthouse — guesthouse, small private accommodation. fsa_name String cancelled Name of the hotel in the FSA register. rooms_number Int The rooms number. year_built Int The construction year. year_renovated Int The renovation year. electricity Object The socket type. frequency [Int] The sockets’ frequency. voltage [Int] The sockets’ voltage. sockets [String] The socket types. To get all available socket types and their definitions, use the socket_types field from the Retrieve hotel static data call. payment_methods [String] The card types accepted at the hotel when pay there. ℹ️ The possible values: unspecified — unspecified. american_express — American Express. cash — cash. china_unionpay — China UnionPay. diners_club — Diners Club International. euro_mastercard — Euro/Mastercard. jcb — JCB. maestro — Maestro. master_card — Mastercard. switch_maestro — Switch (Maestro). visa — Visa. visa_debit — Visa Debit. vise_delta — Visa Delta. visa_electron — Visa Electron. pro100 — Pro100. front_desk_time_start String The reception opening time. The local time in the HH:MM:SS format. front_desk_time_end String The reception closing time. The local time in the HH:MM:SS format. is_gender_specification_required Boolean Whether the guests’ gender is required by the hotel or not. Response example { "data": [ { "address": "Katiet Bosua,South Sipora,Mentawai, Katiet", "amenity_groups": [], "check_in_time": "14:00:00", "check_in_time_end": "", "check_out_time": "12:00:00", "description_struct": [ { "paragraphs": [ "You’ll be sleeping tight! Hotel «Lances Right Villas Katiet» is located in Katiet. This hotel is located minutes away from the city center." ], "title": "Location" } ], "email": "", "hotel_chain": "No chain", "hid": 9852019, "id": "lances_right_villas_katiet", "images_ext": [], "kind": "Hotel", "latitude": -2.37579, "longitude": 99.84819, "name": "Lances Right Villas Katiet", "metapolicy_struct": { "add_fee": [], "check_in_check_out": [], "children": [], "children_meal": [], "cot": [], "deposit": [], "extra_bed": [], "internet": [], "meal": [], "no_show": { "availability": "unspecified", "day_period": "unspecified", "time": "" }, "parking": [], "pets": [], "shuttle": [], "visa": { "visa_support": "unspecified" } }, "metapolicy_extra_info": "To prevent the spread of the Mpox virus, the Indonesian Ministry of Health has resumed health screening for international travelers (both Indonesian and foreign nationals) entering Indonesia from August 27, 2024. This includes completing an electronic self-declaration form called SATUSEHAT Health Pass, which must be completed on a dedicated web platform.\n
  • There is no hot water on site.
", "phone": "62-08126626702", "policy_struct": [ { "paragraphs": [ "Information about the type of meals included in the price is indicated in the rate details.", "Meals may be limited during Ramadan." ], "title": "Meals" }, { "paragraphs": [ "Couples checking into the same room must present a valid marriage certificate upon check-in. Otherwise, the property may reject the booking or request that a second room be booked." ], "title": "Special living conditions" }, { "paragraphs": [ "To prevent the spread of the Mpox virus, the Indonesian Ministry of Health has resumed health screening for international travelers (both Indonesian and foreign nationals) entering Indonesia from August 27, 2024. This includes completing an electronic self-declaration form called SATUSEHAT Health Pass, which must be completed on a dedicated web platform.", "
  • There is no hot water on site.
" ], "title": "Extra info" } ], "postal_code": "25972", "region": { "country_code": "ID", "iata": "", "id": 965851524, "name": "Katiet", "type": "City" }, "room_groups": [], "star_rating": 2, "serp_filters": null, "star_certificate": { "valid_to": "", "certificate_id": "" }, "is_closed": false, "facts": { "electricity": { "frequency": [ 50 ], "voltage": [ 230 ], "sockets": [ "c", "f" ] }, "type": "", "floors_number": 0, "rooms_number": 0, "year_built": 0, "year_renovated": 0, "register": { "record": "", "link": "", "email": "", "phone": "", "status": "", "kind": "unspecified", "name": "", "address": "", "status_end_date": "", "rooms": [] } }, "payment_methods": null, "front_desk_time_start": "", "front_desk_time_end": "", "is_gender_specification_required": false, "deleted": false, "keys_pickup": { "type": "unspecified", "phone": "", "is_contactless": false, "email": "", "apartment_office_address": "", "apartment_extra_information": "" }, "distance_center": 974.3, "giata_code": "1087889" } ], "debug": { "api_endpoint": { "endpoint": "api/content/v1/hotel_content_by_ids", "is_active": true, "is_limited": true, "remaining": 99999, "requests_number": 100000, "reset": "2026-04-13T16:21:00", "seconds_number": 60 }, "request": { "hids": [ 9852019 ], "language": "en", "check_in_time_end": "23:59:00" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "70f39e5f8f696faf56d9eac2aeb34a12", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-13T16:20:53.532594" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params One or more input parameters are incorrect. For more details, see the response field debug validation_error. no_content An internal search error. Has 500 status code. --- # Retrieve hotels review by IDs Source: https://docs.emergingtravel.com/docs/content-api/retrieve-hotels-review-by-ids/ Sandbox Production https://api-sandbox.worldota.net/api/content/v1/hotel_reviews_by_ids https://api.worldota.net/api/content/v1/hotel_reviews_by_ids/ In this call can get reviews on the requested hotel IDs. ℹ️ Use this call instead of call Retrieve hotel reviews’ dump. Use this call after Retrieve hotels content by IDs. Call is limited to 1200 requests per minute (QPM). Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/content/v1/hotel_reviews_by_ids/' \ --header 'Content-Type: application/json' \ --data '{ "hids": [6291688, 6296387, 6296716, 6303545, 6303742, 6304320, 6304603, 6304886, 6304887, 6314064, 6314532, 6315546, 6317902, 6333750, 6334068, 6344525, 6352359, 6353673, 6374316], "language": "en" }' curl --user ':' 'https://api.worldota.net/api/content/v1/hotel_reviews_by_ids/' \ --header 'Content-Type: application/json' \ --data '{ "hids": [6291688, 6296387, 6296716, 6303545, 6303742, 6304320, 6304603, 6304886, 6304887, 6314064, 6314532, 6315546, 6317902, 6333750, 6334068, 6344525, 6352359, 6353673, 6374316], "language": "en" }' Request body Expand this| Collapse this hids [Int] A list of unique hotel IDs in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. Use the hids field from the call Retrieve hotel IDs by filter. ids [String] deprecated A list of unique hotel IDs in the legacy string format. language String required The language. ℹ️ Use the value field from the call Retrieve filter values. Response Expand this| Collapse this id String deprecated The unique hotel ID in the legacy string format. hid Int The unique hotel IDs in the new numeric format. review [Object] A list of user reviews about the hotel. id int deprecated Unique review identifier. review_plus String Positive comment, highlighting what the guest liked during their stay. review_minus String Negative comment, describing what the guest disliked during their stay. created String Date and time when the review was submitted. author String Name of the guest who left the review. adults Int Number of adults staying in the room for the reviewed booking. children Int Number of children staying in the room for the reviewed booking. room_name String The name and description of the room that was booked. nights Int Number of nights the guest stayed. images [String] The list of the URLs for the hotel images. ⚠️ Please use the images_ext field instead of this one. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. detailed_review [Object] Detailed ratings for different aspects of the stay (see subfields below). cleanness Int Guest rating of the cleanliness. ℹ️ The minimum value is 0. The maximum value is 10. location Int Guest rating of the location. ℹ️ The minimum value is 0. The maximum value is 10. price Int Value for money rating. ℹ️ The minimum value is 0. The maximum value is 10. services Int Rating of the provided services. ℹ️ The minimum value is 0. The maximum value is 10. room Int Rating of the room itself. ℹ️ The minimum value is 0. The maximum value is 10. meal Int Rating of the meals. ℹ️ The minimum value is 0. The maximum value is 10. wifi String Guest’s feedback on the Wi-Fi; may be unspecified if not reviewed. hygiene String Guest’s feedback on hygiene; may be unspecified if not reviewed. traveller_type String Type of traveller (e.g., solo, couple, family, or unspecified if not provided). trip_type String Type of trip, such as leisure or business. rating Int The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The minimum value is 0. The maximum value is 5. Response example { "data": [ { "id": "black_shrimps_house", "hid": 6314532, "reviews": [] }, { "id": "jaz_fanara_residence_2", "hid": 6374316, "reviews": [] }, { "id": "aladdin_beach_resort_", "hid": 6353673, "reviews": [] }, { "id": "le_mirage_new_tower", "hid": 6296716, "reviews": [] }, { "id": "les_appartements_de_la_concorde", "hid": 6317902, "reviews": [] }, { "id": "chalets_in_porto_sokhna_resort_units__20117__12018__20411", "hid": 6296387, "reviews": [] }, { "id": "fleur_du_nil_2", "hid": 6303742, "reviews": [] }, { "id": "dessole_royal_rojana_resort_", "hid": 6333750, "reviews": [] }, { "id": "dessole_pyramisa_beach_resort_y_sahl_hasheesh_", "hid": 6304886, "reviews": [] }, { "id": "bedouin_house", "hid": 6303545, "reviews": [] }, { "id": "dahab_sea_view_apartment", "hid": 6304320, "reviews": [] }, { "id": "dahab_beach_homes", "hid": 6314064, "reviews": [] }, { "id": "senmut_luxor_hotel", "hid": 6334068, "reviews": [] }, { "id": "aliyah_lodge", "hid": 6304887, "reviews": [] }, { "id": "lagoon_hotel_and_spa_alexandria", "hid": 6291688, "reviews": [] }, { "id": "dreamers_hotel", "hid": 6344525, "reviews": [] }, { "id": "amenophis_hotel", "hid": 6352359, "reviews": [] }, { "id": "el_gouna_hill_villa", "hid": 6304603, "reviews": [] } ], "debug": { "api_endpoint": { "endpoint": "api/content/v1/hotel_reviews_by_ids", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-01-30T10:13:00", "seconds_number": 60 }, "request": { "hids": [ 6291688, 6296387, 6296716, 6303545, 6303742, 6304320, 6304603, 6304886, 6304887, 6314064, 6314532, 6315546, 6317902, 6333750, 6334068, 6344525, 6352359, 6353673, 6374316 ], "language": "en" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "19600da4bbe2928a60c854ab27fe5e70", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-01-30T10:12:38.305275" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params One or more input parameters are incorrect. For more details, see the response field debug validation_error. no_hotel_reviews An internal search error. Has 500 status code. --- # Retrieve contract Source: https://docs.emergingtravel.com/docs/b2b-api/contracts/retrieve-contract/ https://api.worldota.net/api/b2b/v3/general/contract/data/info/ The call gets contracts information. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/contract/data/info/' Response Expand this| Collapse this contract_datas Object The partner contract list. active_from String The contract commencement date. agreement_date String The contract agreement date. agreement_number String The contract agreement number. closing_documents_issuance_type String The contract confirmatory accounting documents issuance type. ℹ️ The possible values: half_monthly. monthly. single_order. weekly. decadly. kind String The contract kind. ℹ️ The possible values: informational-services. agency. services. corp. individual-contractor. legal_entity Object The contract legal entity information. address_actual String The actual address. address_legal String The legal (registered) address. name String The legal entity name. taxpayer_id String The taxpayer identification number. terminated_at String The contract termination date. Response example { "data": { "contract_datas": [ { "active_from": "2018-07-02", "agreement_date": "2018-06-29", "agreement_number": "AFF-12980", "closing_documents_issuance_type": "monthly", "kind": "informational-services", "legal_entity": { "address_actual": "123 N Columbia Blvd", "address_legal": "113 N Columbia Blvd", "name": "123onetwothree", "taxpayer_id": "1231231231" }, "terminated_at": null } ] }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. unauthorized The authorization error. Ensure your API key and credentials are correct. unknown The internal ETG services’ timeout. --- # Search by hotel IDs Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/search-by-hotel-ids/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/serp/hotels/ https://api.worldota.net/api/b2b/v3/search/serp/hotels/ ℹ️ This call is required. The call gets hotels’ rates by the SERP mechanism. ⚠️ Let users choose the rates from this call response isn’t recommended. A full match with a response from the Retrieve hotelpage request isn’t expected. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross. hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission. Internal search errors are not supported. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/hotels/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 10004873, 9015534 ], "currency": "EUR", "filter": { "star_rating": [ ], "kind": [], "meal_type": [ "all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/serp/hotels/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 10004873, 9015534 ], "currency": "EUR", "filter": { "star_rating": [ ], "kind": [], "meal_type": [ "all-inclusive" ] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. ids [String] required The list of the unique hotel IDs. ℹ️ Either this field or the hid field is required. hids [Int] required The list of most preferred hotel IDs. ℹ️ The ID maximum length is 10 characters. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] optional The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). upsells Object optional Whether additional services are needed or not. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. ℹ️ For step-by-step instructions and code examples on processing this field, see Upsells. early_checkin Object optional Whether early check-in is needed or not. time String optional The early check-in time (12-hour format with *_day_period; otherwise 24-hour format). late_checkout Object optional Whether late check-out is needed or not. time String optional The late check-out time (12-hour format with *_day_period; otherwise 24-hour format). only_eclc Boolean optional Whether the rates with only early check-in or late check-out are needed or not. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hids Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. search_hash String The unique search rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from search step call. The value lifetime is 38 minutes after you have got the rate from the search results. If an outdated or invalid hash is used, an error will be returned. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. perks String The additional services’ information. early_checkin [Object] The early check-in information. charge_price String The early check-in amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the early check-in is requested or not. show_price String The early check-in amount in the search currency. time String The early check-in time. late_checkout [Object] The late check-out information. charge_price String The late check-out amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the late check-out is requested or not. show_price String The late check-out amount in the search currency. time String The late check-out time. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. bar_rate_price_data Object Contains information about the BAR (Best Available Rate), which is the lowest publicly available rate for a hotel room. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. amount String The BAR price value in the currency specified by the currency_code field. It represents the lowest publicly available price for a room. currency_code String Currency of the BAR price. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "w_dubai_mina_seyahi", "hid": 10004873, "rates": [ { "match_hash": "m-2d9e8ebf-c538-5f9e-b127-76b4b2911f17", "search_hash": "sr-019d97e6-e0d3-7a76-9f1a-5b8886cb8e75", "daily_prices": [ "639.61", "639.61", "639.61" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "172594.66", "show_amount": "1918.84", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "109.18", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "171.96", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "77.99", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1958.00", "amount_net": "1918.84", "amount_commission": "39.16" }, "charge": { "amount_gross": "176117.00", "amount_net": "172594.66", "amount_commission": "3522.34" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "172594.66", "amount_show": "1918.84", "commission_info": { "show": { "amount_gross": "1958.00", "amount_net": "1918.84", "amount_commission": "39.16" }, "charge": { "amount_gross": "176117.00", "amount_net": "172594.66", "amount_commission": "3522.34" } } } ], "free_cancellation_before": null }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 1, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Corner Double room (full double bed) (king size bed, corner room)", "room_name_info": { "original_rate_name": "Deluxe Room, 1 King Bed, Balcony, Harbor View (Corner)" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "non-smoking", "king-bed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Corner Double room", "main_name": "Deluxe Corner Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed, corner room", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ], "bar_price_data": null }, { "id": "royal_central_hotel_the_palm", "hid": 9015534, "rates": [ { "match_hash": "m-1ea50682-1e26-5557-8131-cf6f36689cdc", "search_hash": "sr-019d97e6-dffe-7702-b0ad-4aa800459315", "daily_prices": [ "505.03", "505.03", "505.03" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "136272.92", "show_amount": "1515.08", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "86.21", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "135.78", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "61.58", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1546.00", "amount_net": "1515.08", "amount_commission": "30.92" }, "charge": { "amount_gross": "139054.00", "amount_net": "136272.92", "amount_commission": "2781.08" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-20T18:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-10-20T18:00:00", "end_at": "2026-10-21T12:00:00", "amount_charge": "45351.46", "amount_show": "504.70", "commission_info": { "show": { "amount_gross": "515.00", "amount_net": "504.70", "amount_commission": "10.30" }, "charge": { "amount_gross": "46277.00", "amount_net": "45351.46", "amount_commission": "925.54" } } }, { "start_at": "2026-10-21T12:00:00", "end_at": null, "amount_charge": "136272.92", "amount_show": "1515.08", "commission_info": { "show": { "amount_gross": "1546.00", "amount_net": "1515.08", "amount_commission": "30.92" }, "charge": { "amount_gross": "139054.00", "amount_net": "136272.92", "amount_commission": "2781.08" } } } ], "free_cancellation_before": "2026-10-20T18:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 5, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Superior Double room (full double bed) (king size bed, private beach)", "room_name_info": { "original_rate_name": "Superior Double Room with Hotel Private Beach Access , 1 King Bed" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "non-smoking", "king-bed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Superior Double room", "main_name": "Superior Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed, private beach", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ], "bar_price_data": null } ], "total_hotels": 2 }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/hotels", "is_active": true, "is_limited": true, "remaining": 199, "requests_number": 200, "reset": "2026-04-16T20:07:00", "seconds_number": 60 }, "request": { "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 10004873, 9015534 ], "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "e42358fde5a3739968e900304e5565be", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:06:14.025090" }, "status": "ok", "error": null } Errors Invalid JSON The error field has the invalid_json_format value. The debug.validation_error field has the value specified in the headers below. body_must_be_json The passed JSON isn’t valid. Invalid parameters or request body For these, the error field has the invalid_params value. The debug.validation_error field has the value specified in the headers below. number of ids should be less than or equal to X The item number of the ids field must be between 1 and 300. date should be ISO8601 (YYYY-MM-DD) The passed checkin and checkout fields have an invalid format. The valid format is YYYY-MM-DD. checkin date must be current or future date The checkin field value is in the past. Provide the current or future date. checkin date must be less than or equal to 730 days since today The checkin field value should be no later than 730 days from the day of the request. checkout date must be less than or equal to %d days since today The checkout field value should be no later than 30 days from the checkin field value. checkout date must be after checkin date The checkout field value should be later than the checkin field value. checkout cannot be later than X days since checkin The checkout field value should be no later than 30 days from the checkin field value. residency is required The residency field is required. residency must be one of X The residency field has an invalid format. The valid format is in the ISO 3166-1 alpha-2. unknown currency The currency field has an invalid format. The valid format is in the ISO 4217. early checkin date must be equal checkin date The upsells.early_checkin.time field value should be the same as the checkin field value. late checkout date must be equal checkout date The upsells.late_checkout.time field value should be the same as the checkout field value. early checkin must be in datetime format The checkin field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. late checkout must be in datetime format The checkout field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. guests number must be positive The guests field value must be positive. too many rooms, value should be no more than X The item number of the guests field must be between 1 and 9. adults number per room must be in range 1 to X inc The adults field value must be between 1 and 6. children number per room must be not greater then X The children field value must be between 1 and 4. child's age must be in range 0 to X incl The age field value must be between 0 and 17. Internal search error The error field has the core_search_error value. The debug.validation_error field has the null value. The error occurs if the ETG has an internal search error. The number of recurrent identical requests must be limited. --- # Create booking process Source: https://docs.emergingtravel.com/docs/b2b-api/booking/create-booking-process/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/form/ https://api.worldota.net/api/b2b/v3/hotel/order/booking/form/ ℹ️ This call is required. Request this call right after the calls: Retrieve hotelpage. Prebook rate from hotelpage step. Prebook rate from search step. After requesting this call, you must send the Start booking process request. The call creates a booking process. The booking process includes several stages. Their number depends on whether there are 3D Secure and fraud checks. ℹ️ The limitations: The booking form lifetime is 60 minutes. ⚠️ The following applies only when using a test API key: All bookings for the test hotel (use hid = 8473727or id = test_hotel_do_not_book) will be real with all financial responsibilities. Nevertheless, giveaway prices are available within their rates for testing purposes. All test bookings must be canceled. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The 3D Secure check is not supported in the sandbox. The input value for the language field is ignored and is always set to en. The following fields are not supported: item_id, payment_type.type, and payment_types.recommended_price.show_currency_code. For all objects with the currency_code field, the value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/form/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "asd12399235", "book_hash": "h-372e7fa4-3a85-5a09-9f14-867766abf26c", "language": "en", "user_ip": "82.29.0.86" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/form/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "asd12399235", "book_hash": "h-372e7fa4-3a85-5a09-9f14-867766abf26c", "language": "en", "user_ip": "82.29.0.86" }' Request body Expand this| Collapse this partner_order_id String required The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. book_hash String required The unique rate ID used to identify the selected rate. ℹ️ Use the value of the book_hash field from one of the calls: Prebook rate from hotelpage step. Prebook rate from search step. language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. user_ip String required The end user IP address. Will be used for credit card processing if you use payment type now. Response Expand this| Collapse this order_id Int The order ID created by the ETG. ℹ️ The minimum value is 1. partner_order_id String The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. item_id Int The order item ID. Use this field value in the Create credit card token call to allow the user to pay with a bank card. is_gender_specification_required Boolean Whether the guests’ gender is required by the hotel or not. upsell_data [Object] The order upsell information. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. charge_price Object The upsell price information. amount String The upsell amount in the currency specified by the currency_code field. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. name String The upsell name. ℹ️ The possible values: early_checkin. late_checkout. rule_id Int The upsell rule ID. uid String The upsell ID. data Object The upsell time. The local time in the HH:MM:SS format. payment_types [Object] The order payment information. amount String The booking amount in the currency specified by the currency_code field. currency_code String required The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. Response example { "data": { "order_id": 559350847, "partner_order_id": "asd12399235", "item_id": 128903852, "payment_types": [ { "amount": "2000.00", "currency_code": "INR", "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "recommended_price": null } ], "is_gender_specification_required": false, "upsell_data": [] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/order/booking/form", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2025-10-21T12:22:00", "seconds_number": 60 }, "request": { "partner_order_id": "asd12399235", "book_hash": "h-372e7fa4-3a85-5a09-9f14-867766abf26c", "language": "en", "user_ip": "82.29.0.86" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "26f502336760ea6e5a71ed6beae781f5", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-10-21T12:21:01.572537" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. contract_mismatch An attempt to make the booking with a rate found with the different contract. double_booking_form An attempt to make a new booking with the partner_order_id that is already used for the API key contract and isn’t completed yet. Make another request with a new partner_order_id. duplicate_reservation An attempt to make a new booking with the partner_order_id that is already used for the API key contract and is already completed with a successful or error status. Make another request with a new partner_order_id. hotel_not_found The hotel isn’t found. insufficient_b2b_balance In case the credit limit is not sufficient for the reservation. To discuss changes to this limit please contact your account manager. reservation_is_not_allowed There is no permission to use this call for this contract. Contact your account manager. rate_not_found The rate with the book_hash field value isn’t found. The book_hash field value has expired. Send another search request and change the book_hash field value. sandbox_restriction An attempt to book the real hotel in the test environment. To book the real hotel, use the production environment. To book the test hotel, use the test environment. timeout, unknown, and 5xx If you get errors timeout, unknown, or the 5xx status code from this call: Make another request with a new partner_order_id. The number of calls should be limited to 10. If you get this error more than 10 times in a row, the issue is probably in automatically changed settings of your contract. Contact your account manager to resolve the issue. Otherwise, the ETG has temporary technical issues. Error Handling Diagram Below is a sequence diagram describing how to handle errors during the booking create process: ℹ️ The number of retries should be limited to 10. sequenceDiagram participant User participant API User->>API: Create booking process request alt status == "ok" API-->>User: Response: "ok" User->>User: Go to Start booking process else error in (duplicate_reservation, double_booking_form, unknown, timeout) or HTTP status code 5xx loop Retry with new partner_order_id (until status == "ok" or other error) User->>API: Retry Create booking process with new partner_order_id API-->>User: Response alt status == "ok" User->>User: Go to Start booking process else error in retryable set User->>User: Continue retry else other error User->>User: Show error and stop end end else other error API-->>User: Response error User->>User: Show error and stop end --- # Retrieve bookings Source: https://docs.emergingtravel.com/docs/b2b-api/post-booking/retrieve-bookings/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/info/ https://api.worldota.net/api/b2b/v3/hotel/order/info/ The call gets the order data of the successfully finished booking. ℹ️ It is recommended that there should be a time gap between: Receiving the booking confirmation. Requesting the order information. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The following fields are not supported: orders.rooms_data.bedding_name; orders.rooms_data.meal_name; orders.rooms_data.taxes.name. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/info/' \ --header 'Content-Type: application/json' \ --data '{ "ordering": { "ordering_type": "desc", "ordering_by": "created_at" }, "pagination": { "page_size": "3", "page_number": "1" }, "search": { "created_at": { "from_date": "2018-12-05T00:00" } }, "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/info/' \ --header 'Content-Type: application/json' \ --data '{ "ordering": { "ordering_type": "desc", "ordering_by": "created_at" }, "pagination": { "page_size": "3", "page_number": "1" }, "search": { "created_at": { "from_date": "2018-12-05T00:00" } }, "language": "en" }' Request body Expand this| Collapse this language String optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. ordering Object required The response sorting options. ordering_type String required The sorting type. ℹ️ The possible values: asc—ascending sorting. desc—descending sorting. ordering_by String required The name of the order field by which sorting is made. ℹ️ The possible values: cancelled_at. checkin_at. checkout_at. created_at. free_cancellation_before. modified_at. payment_due. payment_pending. pagination Object required The response pagination options. page_number Int required The bookings’ page number to receive. ℹ️ The minimum value is 1. page_size Int required The number of bookings per page to receive. ℹ️ The minimum value is 1. The maximum value is 50. search Object optional The response search options. cancelled_at Object optional The date and time of the order cancellation. from_date String optional The option to search greater than or equal to the value. to_date String optional The option to search less than or equal to the value. checkin_at Object optional The date and time of the order check-in. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. checkout_at Object optional The date and time of the order check-out. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. created_at Object optional The date and time of the order group creation. from_date String optional The option to search greater than or equal to the value. to_date String optional The option to search less than or equal to the value. free_cancellation_before Object optional The date and time of the order free cancellation. from_date String optional The option to search greater than or equal to the value. to_date String optional The option to search less than or equal to the value. order_ids [Int] optional The list of order IDs created by the ETG. partner_order_ids [String] optional The list of external order IDs. status String required The booking finishing status. ℹ️ The possible values: cancelled. completed. failed. noshow. rejected. modified_at Object optional The date and time of the order update. from_date String optional The option to search greater than or equal to the value. to_date String optional The option to search less than or equal to the value. paid_at Object optional The date and time of the order group payment. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. payment_due Object optional The maximum date and time of the needed payment. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. payment_pending Object optional The minimum date and time of the needed payment. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. source String optional The type of the web source where the booking has been made. ℹ️ The possible values: b2b-site — a site. b2b-api — an API service. b2b-card — a site. b2b-handmade — the ETG staff member source. b2b-mobile-app-andr—an Android mobile application. b2b-mobile-app-ios—an iOS mobile application. Response Expand this| Collapse this current_page_number Int The current page number out of the received bookings’ page number. total_orders Int The total number of all your bookings. total_pages Int The total bookings’ page number received by the request. found_orders Int The order number received by the request. found_pages Int The bookings’ page number received by the request. orders Object The bookings’ information. agreement_number String The Midoffice agreement number. amount_payable Object The completed order amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The amount of the completed order or the cancellation fee. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_payable_vat Object The completed order VAT amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The completed order VAT amount or the cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_refunded Object The cancelled order refunded amount. amount String The cancelled order refunded amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell Object The booking amount. amount String The booking amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell_b2b2c Object The resale price for the user. amount String The resale price. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. api_auth_key_id Int The API key ID. cancelled_at String The date and time of the booking cancellation. checkin_at String The date of the check-in at the hotel. checkout_at String The date of the check-out from the hotel. contract_slug String The ETG contract slug. created_at String The date and time of the booking finishing. hotel_data Object The information on the booked hotel. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. order_id String A unique identifier assigned by the hotel, also known as the hotel confirmation number (HCN). ℹ️ The hotel confirmation number is not always available immediately after a booking is confirmed. Use this endpoint to retrieve the HCN with delayed polling: HCN is usually provided by suppliers within 48 hours after booking confirmation, or sometimes later. Retry the call periodically (every 24–48 hours is recommended). Continue retrying: for up to 96 hours after the booking is created, and for up to 96 hours before the check-in date. ⚠️ The absence of an HCN does not indicate a booking issue. Do not block post-booking flows while waiting for the HCN. is_cancellable Boolean Whether the order is cancellable or not. modified_at String The date and time of the booking last update. nights Int The number of nights of stay. order_id Int The order ID created by the ETG. ℹ️ The minimum value is 1. order_type String The order type. ℹ️ The possible values: hotel. upsell. roomnights Int The total number of nights of stay for all rooms. rooms_data [Object] The guests’ information for the rooms. bedding_name [String] The bed type list. To get all available bed types and their definitions, use the bedding field from the Retrieve hotel static data call. guest_data String adults_number Int The number of adults in the room. children_number Int The number of children in the room. guests [Object] The guests’ information. first_name String The guest first name. ℹ️ It is mandatory to provide the first name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. first_name_original String The guest first name in the original language sent in the booking request. last_name String The guest last name. For test purposes use the Ratehawk value. ℹ️ It is mandatory to provide the last name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. last_name_original String The guest last name in the original language sent in the booking request. is_child Boolean Whether the guest is a child or not. ℹ️ Guests are considered adults unless is_child = true, even if their age is that of a child. age Int The child age in years. ℹ️ Specify the child’s age if there are children in the booking request (is_child = true). The minimum value is 0. The maximum value is 17. meal_name String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. room_idx Int The room ID. room_name String The room name. source String The type of the web source where the booking has been made. ℹ️ The possible values: b2b-site — a site. b2b-api — an API service. b2b-card — a site. b2b-handmade — the ETG staff member source. b2b-mobile-app-andr—an Android mobile application. b2b-mobile-app-ios—an iOS mobile application. status String The booking finishing status. ℹ️ The possible values: cancelled. completed. failed. noshow. rejected. supplier_data Object The supplier booking information. confirmation_id String The confirmation ID. name String The booking supplier name. order_id String The supplier unique booking ID. taxes [Object] The taxes list. amount_tax Object The tax amount. amount String The tax amount in the currency specified by the currency_code field. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. is_included Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. total_vat Object The completed order VAT amount. Or the VAT cancellation fee of the canceled order which isn’t free of charge. amount String The completed order VAT amount or the cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Indicator of whether VAT is included in the order total. ℹ️ Possible values: true — the total amount already includes VAT; false — VAT is charged in addition to the order total. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. partner_data String The partner booking information. order_comment String The partner booking internal comment. The comment isn’t sent to the hotel and not processed by the ETG API support team. It is visible only to the partner itself. ℹ️ The minimum length is 1 character. The maximum length is 256 character. order_id Int The order ID created by the ETG. ℹ️ The minimum value is 1. amount_payable_with_upsells Object The completed order with upsell amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The amount of the completed order with upsell or the cancellation fee. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. cancellation_info Object The booking cancellation information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies’ breakdown by periods. end_at String The date and time when this cancellation policy expires. Has the null value, if this cancellation policy takes effect from the start_at field value till the check-in date. If the start_at and end_at fields have the null value, this cancellation policy: Has no time restrictions. Takes effect all the time. The timezone is in UTC±0. penalty String The penalty information. amount String The penalty amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross amount. amount_net String The net amount. start_at String The date and time when this cancellation policy takes effect. Has the null value, if this cancellation policy takes effect till the end_at field value. The timezone is in UTC±0. invoice_id String The order group ID. ℹ️ The minimum length is 1 character. is_checked Boolean Whether the booking is additionally checked with the hotel by the support team or not. meta_data Object The booking additional information. voucher_order_comment String The API support team comment added upon the partner request. For example, information on early check-in or late check-out. ℹ️ The minimum length is 1 character. payment_data Object The order payment information. payment_type String The order payment type. ℹ️ The possible values: now. deposit. invoice_id Int The order group ID. invoice_id_v2 String The order group ID v2. paid_at String The date of the payment for the booking. payment_by String The information on the person who has paid for the booking. payment_due String The deadline date after which the booking payment becomes overdue. In case it hasn’t been received yet. payment_pending String The date from which the ETG: Begins to wait for the payment. Will notify you with an email that the payment is pending. upsells [Object] The order upsells’ information. ⚠️ Only one early check-in and one late check-out can be requested and selected. amount_payable Object The completed order with upsell amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The amount of the completed order with upsell or the cancellation fee. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_payable_vat Object The completed order upsell VAT amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The completed order upsell VAT amount or the cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_refunded Object The cancelled order upsell refunded amount. amount String The cancelled order upsell refunded amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell Object The upsell amount. amount String The upsell amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell_b2b2c Object The upsell resale price for the user. amount String The upsell resale price. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. cancelled_at String The date and time of the order upsell cancellation. created_at String The date and time of the order upsell completion. free_cancellation_before String The date and time before which the order upsell cancellation is free of charge. info Object The order upsell information. order_id Int The order upsell ID. ℹ️ The minimum value is 1. order_type String The order upsell type. ℹ️ The possible values: additional_service. complimentary. early_checkin. extra_bed. hotel_facilities. insurance. late_checkout. meal_upgrade. name_change. room_service. room_upgrade. taxes_and_fees. visa_support. payment_data Object The order payment information. invoice_id Int The order group ID. invoice_id_v2 String The order group ID v2. paid_at String The date of the payment for the upsell. payment_by String The information on the person who has paid for the upsell. payment_due String The deadline date after which the upsell payment becomes overdue. In case it hasn’t been received yet. payment_pending String The date from which the ETG: Begins to wait for the payment. Will notify you with an email that the payment is pending. payment_type String The upsell payment type. ℹ️ The possible values: now. hotel. deposit. status String The upsell status. ℹ️ The possible values: awaiting_confirmation. cancelled. completed. noshow. recalled. type String The upsell type. ℹ️ The possible values: additional_service. complimentary. early_checkin. extra_bed. hotel_facilities. insurance. late_checkout. meal_upgrade. name_change. room_service. room_upgrade. taxes_and_fees. visa_support. has_tickets Boolean Whether the booking has tickets (additional requests) or not. user_data Object The information on the user who has created the booking. email String The user email address. arrival_datetime String The date and time at which the user plans to check into the hotel. user_comment String The comment the user wrote when was filling out the booking form. amount_sell_b2b2c_commission Object The commission information from reselling the ETG rate. Works in a pair with the amount_sell_b2b2c field from the Start booking process call. Has the null value if there is no setting. To discuss a change, contact the API support team. amount String The commission amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. Response example { "data": { "current_page_number": 1, "total_orders": 869, "total_pages": 290, "found_orders": 549, "found_pages": 183, "orders": [ { "agreement_number": null, "amount_payable": { "amount": "0.00", "currency_code": "EUR" }, "amount_payable_vat": { "amount": "0.00", "currency_code": "EUR" }, "amount_refunded": { "amount": "411.20", "currency_code": "EUR" }, "amount_sell": { "amount": "411.20", "currency_code": "EUR" }, "amount_sell_b2b2c": { "amount": "0.00", "currency_code": "EUR" }, "api_auth_key_id": 1234, "cancelled_at": "2025-09-18T12:38:00", "checkin_at": "2025-12-25", "checkout_at": "2025-12-26", "contract_slug": "only.look.no.book", "created_at": "2025-09-18T08:09:04", "hotel_data": { "id": "test_hotel", "hid": 8526976, "order_id": null }, "is_cancellable": false, "modified_at": "2025-09-18T12:38:01", "nights": 1, "order_id": 260453787, "order_type": "hotel", "roomnights": 1, "rooms_data": [ { "bedding_name": [ "sofa-bed" ], "guest_data": { "adults_number": 2, "children_number": 0, "guests": [ { "first_name": "Marty", "first_name_original": "Marty", "last_name": "Quatro", "last_name_original": "Quatro", "is_child": false, "age": null }, { "first_name": "Marta", "first_name_original": "Marta", "last_name": "Quatro", "last_name_original": "Quatro", "is_child": false, "age": null } ] }, "meal_name": "half-board-lunch", "has_breakfast": true, "no_child_meal": false, "room_idx": 0, "room_name": "Quadruple Junior Suite (+ sofa, treatment program included, kitchen)" } ], "source": "b2b-api", "status": "cancelled", "supplier_data": { "confirmation_id": "361911424", "name": "Extranet", "order_id": "361911424" }, "taxes": [ { "amount_tax": { "amount": "0.41", "currency_code": "EUR" }, "is_included": true, "name": "city_tax" }, { "amount_tax": { "amount": "2000.00", "currency_code": "EUR" }, "is_included": false, "name": "cleaning_fee" }, { "amount_tax": { "amount": "3.06", "currency_code": "EUR" }, "is_included": true, "name": "hotel_fee" }, { "amount_tax": { "amount": "5000.00", "currency_code": "EUR" }, "is_included": false, "name": "luxury_tax" }, { "amount_tax": { "amount": "40.00", "currency_code": "EUR" }, "is_included": false, "name": "resort_fee" }, { "amount_tax": { "amount": "22.00", "currency_code": "EUR" }, "is_included": false, "name": "service_fee" }, { "amount_tax": { "amount": "11.00", "currency_code": "EUR" }, "is_included": false, "name": "vat" } ], "total_vat": { "amount": "0.00", "currency_code": "EUR", "included": false }, "is_package": false, "partner_data": { "order_comment": "partner_comment", "order_id": "tut" }, "amount_payable_with_upsells": { "amount": "0.00", "currency_code": "EUR" }, "cancellation_info": { "free_cancellation_before": "2025-12-25T05:00:00", "policies": [ { "end_at": "2025-12-25T05:00:00", "penalty": { "amount": "0.00", "currency_code": "EUR", "amount_info": { "amount_commission": "0.00", "amount_gross": "0.00", "amount_net": "0.00" } }, "start_at": null }, { "end_at": null, "penalty": { "amount": "411.20", "currency_code": "EUR", "amount_info": { "amount_commission": "102.80", "amount_gross": "514.00", "amount_net": "411.20" } }, "start_at": "2025-12-25T05:00:00" } ] }, "invoice_id": null, "is_checked": false, "meta_data": { "voucher_order_comment": null }, "payment_data": { "payment_type": "deposit", "invoice_id": null, "invoice_id_v2": null, "paid_at": null, "payment_by": null, "payment_due": "2026-01-15", "payment_pending": "2026-01-12" }, "upsells": [], "has_tickets": false, "user_data": { "email": "asdfds@foo.com", "arrival_datetime": null, "user_comment": "comment" }, "amount_sell_b2b2c_commission": null }, { "agreement_number": null, "amount_payable": { "amount": "0.00", "currency_code": "EUR" }, "amount_payable_vat": { "amount": "0.00", "currency_code": "EUR" }, "amount_refunded": { "amount": "30908.00", "currency_code": "EUR" }, "amount_sell": { "amount": "30908.00", "currency_code": "EUR" }, "amount_sell_b2b2c": { "amount": "0.00", "currency_code": "EUR" }, "api_auth_key_id": 1234, "cancelled_at": "2025-09-16T14:15:45", "checkin_at": "2025-09-29", "checkout_at": "2025-09-30", "contract_slug": "only.look.no.book", "created_at": "2025-09-16T14:06:35", "hotel_data": { "id": "test_hotel_do_not_book", "hid": 8473727, "order_id": null }, "is_cancellable": false, "modified_at": "2025-09-16T14:15:46", "nights": 1, "order_id": 246069602, "order_type": "hotel", "roomnights": 2, "rooms_data": [ { "bedding_name": [ "double" ], "guest_data": { "adults_number": 1, "children_number": 0, "guests": [ { "first_name": "Mikhail", "first_name_original": "Mikhail", "last_name": "Rudenko", "last_name_original": "Rudenko", "is_child": false, "age": null } ] }, "meal_name": "nomeal", "has_breakfast": false, "no_child_meal": true, "room_idx": 0, "room_name": "Standard Double room (shared bathroom) (full double bed)" }, { "bedding_name": [ "double" ], "guest_data": { "adults_number": 1, "children_number": 0, "guests": [ { "first_name": "Alan", "first_name_original": "Alan", "last_name": "Tashev", "last_name_original": "Tashev", "is_child": false, "age": null } ] }, "meal_name": "nomeal", "has_breakfast": false, "no_child_meal": true, "room_idx": 1, "room_name": "Standard Double room (shared bathroom) (full double bed)" } ], "source": "b2b-api", "status": "cancelled", "supplier_data": { "confirmation_id": "853713014", "name": "Extranet", "order_id": "853713014" }, "taxes": [ { "amount_tax": { "amount": "781.92", "currency_code": "HNL" }, "is_included": false, "name": "city_tax" }, { "amount_tax": { "amount": "9.20", "currency_code": "EUR" }, "is_included": true, "name": "electricity_fee" }, { "amount_tax": { "amount": "2015.08", "currency_code": "HNL" }, "is_included": false, "name": "service_fee" }, { "amount_tax": { "amount": "705.46", "currency_code": "HNL" }, "is_included": false, "name": "vat" } ], "total_vat": { "amount": "0.00", "currency_code": "EUR", "included": false }, "is_package": false, "partner_data": { "order_comment": "Tryin p-hash.", "order_id": "52multi_book52" }, "amount_payable_with_upsells": { "amount": "0.00", "currency_code": "EUR" }, "cancellation_info": { "free_cancellation_before": "2025-09-29T06:00:00", "policies": [ { "end_at": "2025-09-29T06:00:00", "penalty": { "amount": "0.00", "currency_code": "EUR", "amount_info": { "amount_commission": "0.00", "amount_gross": "0.00", "amount_net": "0.00" } }, "start_at": null }, { "end_at": null, "penalty": { "amount": "30908.00", "currency_code": "EUR", "amount_info": { "amount_commission": "7727.00", "amount_gross": "38635.00", "amount_net": "30908.00" } }, "start_at": "2025-09-29T06:00:00" } ] }, "invoice_id": null, "is_checked": false, "meta_data": { "voucher_order_comment": null }, "payment_data": { "payment_type": "deposit", "invoice_id": null, "invoice_id_v2": null, "paid_at": null, "payment_by": null, "payment_due": "2025-11-06", "payment_pending": "2025-10-31" }, "upsells": [], "has_tickets": false, "user_data": { "email": "mikhail.rudenko@emergingtravel.com", "arrival_datetime": null, "user_comment": null }, "amount_sell_b2b2c_commission": null }, { "agreement_number": null, "amount_payable": { "amount": "0.00", "currency_code": "EUR" }, "amount_payable_vat": { "amount": "0.00", "currency_code": "EUR" }, "amount_refunded": { "amount": "30887.20", "currency_code": "EUR" }, "amount_sell": { "amount": "30887.20", "currency_code": "EUR" }, "amount_sell_b2b2c": { "amount": "0.00", "currency_code": "EUR" }, "api_auth_key_id": 1234, "cancelled_at": "2025-09-15T18:24:41", "checkin_at": "2025-09-29", "checkout_at": "2025-09-30", "contract_slug": "only.look.no.book", "created_at": "2025-09-15T18:21:50", "hotel_data": { "id": "test_hotel_do_not_book", "hid": 8473727, "order_id": null }, "is_cancellable": false, "modified_at": "2025-09-15T18:24:42", "nights": 1, "order_id": 395221637, "order_type": "hotel", "roomnights": 2, "rooms_data": [ { "bedding_name": [ "double" ], "guest_data": { "adults_number": 1, "children_number": 0, "guests": [ { "first_name": "Mikhail", "first_name_original": "Mikhail", "last_name": "Rudenko", "last_name_original": "Rudenko", "is_child": false, "age": null } ] }, "meal_name": "nomeal", "has_breakfast": false, "no_child_meal": true, "room_idx": 0, "room_name": "Standard Double room (shared bathroom) (full double bed)" }, { "bedding_name": [ "double" ], "guest_data": { "adults_number": 1, "children_number": 0, "guests": [ { "first_name": "Alan", "first_name_original": "Alan", "last_name": "Tashev", "last_name_original": "Tashev", "is_child": false, "age": null } ] }, "meal_name": "nomeal", "has_breakfast": false, "no_child_meal": true, "room_idx": 1, "room_name": "Standard Double room (shared bathroom) (full double bed)" } ], "source": "b2b-api", "status": "cancelled", "supplier_data": { "confirmation_id": "261499472", "name": "Extranet", "order_id": "261499472" }, "taxes": [ { "amount_tax": { "amount": "781.92", "currency_code": "HNL" }, "is_included": false, "name": "city_tax" }, { "amount_tax": { "amount": "9.26", "currency_code": "EUR" }, "is_included": true, "name": "electricity_fee" }, { "amount_tax": { "amount": "2015.08", "currency_code": "HNL" }, "is_included": false, "name": "service_fee" }, { "amount_tax": { "amount": "705.46", "currency_code": "HNL" }, "is_included": false, "name": "vat" } ], "total_vat": { "amount": "0.00", "currency_code": "EUR", "included": false }, "is_package": false, "partner_data": { "order_comment": "Tryin p-hash.", "order_id": "52multibook52_test52" }, "amount_payable_with_upsells": { "amount": "0.00", "currency_code": "EUR" }, "cancellation_info": { "free_cancellation_before": "2025-09-29T06:00:00", "policies": [ { "end_at": "2025-09-29T06:00:00", "penalty": { "amount": "0.00", "currency_code": "EUR", "amount_info": { "amount_commission": "0.00", "amount_gross": "0.00", "amount_net": "0.00" } }, "start_at": null }, { "end_at": null, "penalty": { "amount": "30887.20", "currency_code": "EUR", "amount_info": { "amount_commission": "7721.80", "amount_gross": "38609.00", "amount_net": "30887.20" } }, "start_at": "2025-09-29T06:00:00" } ] }, "invoice_id": null, "is_checked": false, "meta_data": { "voucher_order_comment": null }, "payment_data": { "payment_type": "deposit", "invoice_id": null, "invoice_id_v2": null, "paid_at": null, "payment_by": null, "payment_due": "2025-11-06", "payment_pending": "2025-10-31" }, "upsells": [], "has_tickets": false, "user_data": { "email": "mikhail.rudenko@emergingtravel.com", "arrival_datetime": null, "user_comment": null }, "amount_sell_b2b2c_commission": null } ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/order/info", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2025-09-24T21:55:00", "seconds_number": 60 }, "request": { "ordering": { "ordering_type": "desc", "ordering_by": "created_at" }, "pagination": { "page_size": "3", "page_number": "1" }, "search": { "created_at": { "from_date": "2018-12-05T00:00" } }, "language": "en" }, "method": "POST", "real_ip": "2a09:bac0:1000:623::388:9b", "request_id": "75438e77fd5bb04f01b7876cc21980bb", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-09-24T21:54:26.442209" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. page_out_of_range The page_number field value is greater than the total_pages field value. --- # Retrieve closing documents Source: https://docs.emergingtravel.com/docs/b2b-api/documents/retrieve-closing-documents/ https://api.worldota.net/api/b2b/v3/general/document/closing_documents/download/ The call gets the confirmatory accounting document. The document is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/document/closing_documents/download/?data={%22package_id%22%3A55225%2C%22seal%22%3Atrue}' Parameters Expand this| Collapse this package_id String, Query required The confirmatory accounting document ID. seal String, Query required Whether the seal is needed or not. Errors The error field has the value specified in the headers below. failed_to_generate_document The confirmatory accounting document is in generating. Try to request later. --- # Retrieve hotel dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-hotel-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/dump/ https://api.worldota.net/api/b2b/v3/hotel/info/dump/ ℹ️ The call is required. The call gets the dump of all available ETG hotels as a single archive for a single language. The link to the archive is passed in the url response field. You must open the link to start the downloading. The dump format is the Zstd. The ETG updates the data every week. To renew your local dump, use the Retrieve hotel incremental dump call. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Any internal content such as photos, descriptions, and others can’t be indexed. It isn’t allowed. Any public content such as name, address, amenities, and policies can be indexed. Sandbox limitations The value of the language field is always set to en. The inventory field supports the following values: all, direct, preferable, and direct_fast. In the sandbox dump, the number of items is always 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/dump/' \ --header 'Content-Type: application/json' \ --data '{ "inventory": "all", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/dump/' \ --header 'Content-Type: application/json' \ --data '{ "inventory": "all", "language": "en" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. inventory String optional The hotel list to get. ℹ️ The possible values: all — all available suppliers. direct — Chains, Extranet, DMC, Switch, Consolidator, Wholesaler. direct_fast — Chains, Extranet. direct_fast_extended — Chains, Extranet, DMC, Switch. preferable — all sellable hotels that had at least one available rate in the last 6 months. top — the 500k top hotels by their paid bookings. The default value is all. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2024-03-07T20:00:00Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Dump file structure The dump is a Zstd archive that contains a file with a list of objects line by line: { "address": "Gabriele-Tergit-Promenade 19, Berlin", "amenity_groups": [ { "amenities": [ "Common kitchen", "Kitchen" ] } ] }, { "address": "Passeig De Gracia, 68, Barcelona", "amenity_groups": [ { "amenities": [ "Common kitchen", "Kitchen" ] } ] }, { "address": "Great Cumberland Place, London", "amenity_groups": [ { "amenities": [ "Cable TV", "Locker" ] } ] } Field details The entire dump structure is described in the response of the Retrieve hotel content call. To decompress the archive you can use, for example, a Zstandard plugin or 7-zip archive manager with Zstandard. Errors The error field has the value specified in the headers below. dump_not_ready The dump is being updated. Try to download the archive later. --- # Retrieve order groups Source: https://docs.emergingtravel.com/docs/b2b-api/order-groups/retrieve-order-groups/ https://api.worldota.net/api/b2b/v3/ordergroup/info/ The call gets the order group information. Use it to check the order group information before applying the Make order group overpay call. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/info/' \ --header 'Content-Type: application/json' \ --data '{ "ordering": { "ordering_type": "asc", "ordering_by": "invoice_id" }, "pagination": { "page_size": "1", "page_number": "1" }, "search": { "invoice_id": "12980-00260" } }' Request body Expand this| Collapse this pagination Object required The response pagination options. page_number Int required The bookings’ page number to receive. ℹ️ The minimum value is 1. page_size Int required The number of bookings per page to receive. ℹ️ The minimum value is 1. The maximum value is 50. search Object optional The response search options. agreement_number String optional The contract agreement number. invoice_id String optional The order group ID. created_at Object optional The date and time of the order group creation. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. paid_at Object optional The date and time of the order group payment. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. ordering Object required The response sorting options. ordering_type String required The sorting type. ℹ️ The possible values: asc—ascending sorting. desc—descending sorting. ordering_by String required The name of the order field by which sorting is made. ℹ️ The possible values: cancelled_at. checkin_at. checkout_at. created_at. free_cancellation_before. modified_at. payment_due. payment_pending. Response Expand this| Collapse this total_pages Int The total bookings’ page number received by the request. total_groups Int The order group total number. groups Object The order group information. agreement_number String The contract agreement number. amount_payable Object Either the booking amount for the completed order or the cancellation fee amount in case it is cancelled. Not free of charge. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_payable_vat Object The VAT booking amount for the completed order. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_commission Object The booking commission amount. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_commission_vat Object The VAT order commission amount. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. created_at String The date and time of the order group creation. invoice_id String The order group ID. ℹ️ The minimum length is 1 character. orders [Object] The list of bookings inside the order group. amount_payable Object Either the booking amount for the completed order or the cancellation fee amount in case it is cancelled. Not free of charge. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_payable_vat Object The VAT booking amount for the completed order. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_commission Object The booking commission amount. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_commission_vat Object The VAT order commission amount. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. created_at String The date and time of the booking completion. payment_due String The date when the booking payment becomes overdue. Works if the payment isn’t received yet. status String The booking status. ℹ️ The minimum length is 1 character. order_id Int The booking order ID. ℹ️ The minimum value is 1. order_type String The order type. ℹ️ The possible values: hotel. upsell. payment_due String The date when the booking payment becomes overdue. Works if the payment isn’t received yet. current_page_number Int The current page number out of the received bookings’ page number. Response example { "data":{ "current_page_number":1, "groups":[ { "agreement_number":"B2B-12980/1", "amount_commission": { "amount":"0.73", "currency_code":"EUR" }, "amount_commission_vat":{ "amount":"0", "currency_code":"EUR" }, "amount_payable":{ "amount":"7.27", "currency_code":"EUR" }, "amount_payable_vat":{ "amount":"0", "currency_code":"EUR" }, "created_at":"2018-12-04T08:51:10.254781", "invoice_id":"12980-00260", "orders":[ { "amount_commission":{ "amount":"0.73", "currency_code":"EUR" }, "amount_commission_vat":{ "amount":"0", "currency_code":"EUR" }, "amount_payable":{ "amount":"7.27", "currency_code":"EUR" }, "amount_payable_vat":{ "amount":"0", "currency_code":"EUR" }, "created_at":"2018-12-04T08:49:36.129298", "order_id":863255831, "order_type":"hotel", "payment_due":"2018-12-14", "status":"completed" } ], "payment_due":"2018-12-14" } ], "total_groups":1, "total_pages":1 }, "debug":null, "error":null, "status":"ok" } Errors The error field has the value specified in the headers below. page_out_of_range The current_page_number field value is greater than the total_pages field value. It should be less. --- # Retrieve profiles Source: https://docs.emergingtravel.com/docs/b2b-api/profiles/retrieve-profiles/ https://api.worldota.net/api/b2b/v3/profiles/list/ The call gets a contract profiles list. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/profiles/list/' Response Expand this| Collapse this user [Object] The profile list. email String The profile email address. first_name String The profile first name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. last_name String The profile last name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. middle_name String The profile middle name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. phone String The profile phone number. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. status String The profile status. ℹ️ The possible values: active. awaiting_confirmation. deleted. disabled. type String The profile type. ℹ️ The possible values: csbt_admin. employee. finance. manager. master. self_booker. sub_agent_supervisor. supervisor. travel_manager. Response example { "data":{ "users":[ { "email":"eliot.white@example.com", "first_name":"Eliot", "last_name":"White", "middle_name":null, "phone":"+38112344567888", "status":"awaiting_confirmation", "type":"master" }, { "email":"john.smith@example.com", "first_name":"John", "last_name":"Smith", "middle_name":null, "phone":"+4412344567899", "status":"awaiting_confirmation", "type":"manager" } ] }, "debug":null, "error":null, "status":"ok" } --- # Retrieve financial details Source: https://docs.emergingtravel.com/docs/b2b-api/contracts/retrieve-financial-details/ https://api.worldota.net/api/b2b/v3/general/financial/info/ The call gets the contract financial details. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/financial/info/' Response Expand this| Collapse this contract Object The contract general financial information. contract_overpay Float The amount of money that could be used for bookings. Consists of: Orders refundable money. Balances from previous transfers. And money deposited in advance on the contract. credit_limit Float The contract credit limit. deposit Float The contract deposit amount. max_booking_price String The limit for new bookings. overdue_debt Float The contract overdue debt. reporting_currency String The contract reporting currency in the ISO 4217 format. ℹ️ The possible values: AED. AUD. BGN. BRL. BYN. CAD. CHF. CNY. DKK. EUR. GBP. HKD. IDR. KZT. MYR. NOK. PLN. QAR. RON. RUB. SEK. SGD. THB. TRY. USD. VND. ZAR. unpaid_non_ref_orders_sum Float The unpaid non-refundable bookings’ amount. unpaid_orders_sum Float The amount of: All bookings that are not paid including overdue payment. Or the cost of its cancellation, if the booking is canceled. unpaid_ref_orders_sum Float The unpaid refundable bookings’ amount. terminated_at Object The partner contract list. agreement_number String The contract agreement number. overdue_debt Float The contract data overdue debt. overpay Float The amount of money that could be used for bookings. Consists of: Orders refundable money. Balances from previous transfers. And money deposited in advance on the contract. unpaid_non_ref_orders_sum Float The unpaid non-refundable bookings’ amount. unpaid_orders_sum Float The amount of: All bookings that are not paid including overdue payment. Or the cost of its cancellation, if the booking is canceled. unpaid_ref_orders_sum Float The unpaid refundable bookings’ amount. Response example { "data": { "contract": { "contract_overpay": "3000.98", "credit_limit": "1451.00", "deposit": "1000.00", "max_booking_price": "0", "overdue_debt": "7762.48", "reporting_currency": "EUR", "unpaid_non_ref_orders_sum": "9454.93", "unpaid_orders_sum": "9507.93", "unpaid_ref_orders_sum": "53.00" }, "contract_datas": [ { "agreement_number": "B2B-12980/2", "overdue_debt": "0.00", "overpay": "0", "unpaid_non_ref_orders_sum": "0.00", "unpaid_orders_sum": "0.00", "unpaid_ref_orders_sum": "0.00" }, { "agreement_number": "B2B-12980", "overdue_debt": "187.12", "overpay": "130.31", "unpaid_non_ref_orders_sum": "187.12", "unpaid_orders_sum": "204.12", "unpaid_ref_orders_sum": "17.00" }, { "agreement_number": "B2B-12980/1", "overdue_debt": "7574.36", "overpay": "2870.67", "unpaid_non_ref_orders_sum": "9258.01", "unpaid_orders_sum": "9258.01", "unpaid_ref_orders_sum": "0.00" }, { "agreement_number": "B2B-12980/3", "overdue_debt": "1.00", "overpay": "0", "unpaid_non_ref_orders_sum": "1.00", "unpaid_orders_sum": "1.00", "unpaid_ref_orders_sum": "0.00" } ] }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. unauthorized The authorization error. Ensure your API key and credentials are correct. unknown The internal ETG services’ timeout. --- # Search by geo coordinates Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/search-by-geo-coordinates/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/ https://api.worldota.net/api/b2b/v3/search/serp/geo/' The call gets hotels’ rates by the SERP mechanism and the given geographical details. ⚠️ Let users choose the rates from this call response isn’t recommended. A full match with a response from the Retrieve hotelpage request isn’t expected. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. When using latitude and longitude, use one of the following coordinate pairs for convenience: latitude: 34.077194, longitude: -118.36068. latitude: 25.0753, longitude: 55.1385. latitude: 55.8034, longitude: 37.5226. latitude: 48.87844, longitude: 2.35829. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross. hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission. Internal search errors are not supported. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "latitude": 25.1259, "longitude": 55.15305, "radius": 150, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/serp/geo/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "latitude": 25.1259, "longitude": 55.15305, "radius": 150, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. latitude Float required The hotel geographical latitude. longitude Float required The hotel geographical longitude. radius Int required The radius size for circular search in meters. ℹ️ The minimum value is 1. The maximum value is 70000. hotels_limit Int optional The maximum number of the available hotels in the response. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] optional The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). upsells Object optional Whether additional services are needed or not. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. ℹ️ For step-by-step instructions and code examples on processing this field, see Upsells. early_checkin Object optional Whether early check-in is needed or not. time String optional The early check-in time (12-hour format with *_day_period; otherwise 24-hour format). late_checkout Object optional Whether late check-out is needed or not. time String optional The late check-out time (12-hour format with *_day_period; otherwise 24-hour format). only_eclc Boolean optional Whether the rates with only early check-in or late check-out are needed or not. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. search_hash String The unique search rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from search step call. The value lifetime is 38 minutes after you have got the rate from the search results. If an outdated or invalid hash is used, an error will be returned. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. perks String The additional services’ information. early_checkin [Object] The early check-in information. charge_price String The early check-in amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the early check-in is requested or not. show_price String The early check-in amount in the search currency. time String The early check-in time. late_checkout [Object] The late check-out information. charge_price String The late check-out amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the late check-out is requested or not. show_price String The late check-out amount in the search currency. time String The late check-out time. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. bar_rate_price_data Object Contains information about the BAR (Best Available Rate), which is the lowest publicly available rate for a hotel room. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. amount String The BAR price value in the currency specified by the currency_code field. It represents the lowest publicly available price for a room. currency_code String Currency of the BAR price. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "royal_central_hotel_the_palm", "hid": 9015534, "rates": [ { "match_hash": "m-f7c360b9-f104-58b6-b479-bc7c8f06cdd5", "search_hash": "sr-019d97c9-9574-722d-af02-3a16f1295d79", "daily_prices": [ "505.35", "505.35", "505.35" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "136272.92", "show_amount": "1516.06", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "86.26", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "135.86", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "61.62", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1547.00", "amount_net": "1516.06", "amount_commission": "30.94" }, "charge": { "amount_gross": "139054.00", "amount_net": "136272.92", "amount_commission": "2781.08" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-20T18:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-10-20T18:00:00", "end_at": "2026-10-21T12:00:00", "amount_charge": "45403.40", "amount_show": "505.68", "commission_info": { "show": { "amount_gross": "516.00", "amount_net": "505.68", "amount_commission": "10.32" }, "charge": { "amount_gross": "46330.00", "amount_net": "45403.40", "amount_commission": "926.60" } } }, { "start_at": "2026-10-21T12:00:00", "end_at": null, "amount_charge": "136272.92", "amount_show": "1516.06", "commission_info": { "show": { "amount_gross": "1547.00", "amount_net": "1516.06", "amount_commission": "30.94" }, "charge": { "amount_gross": "139054.00", "amount_net": "136272.92", "amount_commission": "2781.08" } } } ], "free_cancellation_before": "2026-10-20T18:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 5, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Superior Double room (full double bed) (king size bed, private beach)", "room_name_info": { "original_rate_name": "Superior Double Room with Hotel Private Beach Access , 1 King Bed" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "king-bed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Superior Double room", "main_name": "Superior Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed, private beach", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false }, { "match_hash": "m-9680fd5d-aaa7-59fd-a68f-24cdd7918fb5", "search_hash": "sr-019d97c9-9574-7229-9d7a-8ee2d75349d5", "daily_prices": [ "914.99", "914.99", "914.99" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "246775.76", "show_amount": "2744.98", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "156.19", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "245.99", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "111.56", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "2801.00", "amount_net": "2744.98", "amount_commission": "56.02" }, "charge": { "amount_gross": "251812.00", "amount_net": "246775.76", "amount_commission": "5036.24" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-18T21:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-10-18T21:00:00", "end_at": null, "amount_charge": "246775.76", "amount_show": "2744.98", "commission_info": { "show": { "amount_gross": "2801.00", "amount_net": "2744.98", "amount_commission": "56.02" }, "charge": { "amount_gross": "251812.00", "amount_net": "246775.76", "amount_commission": "5036.24" } } } ], "free_cancellation_before": "2026-10-18T21:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 4, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 27, "floor": 0 }, "room_name": "Deluxe Double room with partial sea view (twin beds)", "room_name_info": { "original_rate_name": "Premium Room Twin with Sea View" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room with partial sea view", "main_name": "Deluxe Double room with partial sea view", "bathroom": null, "bedding_type": "twin beds", "misc_room_type": null, "beds": [ { "bed": "single", "count": 2 } ] }, "legal_info": null, "is_package": false } ], "bar_price_data": null } ], "total_hotels": 1 }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/geo", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-04-16T19:35:00", "seconds_number": 60 }, "request": { "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "latitude": 25.1259, "longitude": 55.15305, "radius": 150, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "13e88b7ec7068ac587c45cd0b225c1f5", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T19:34:17.217907" }, "status": "ok", "error": null } Errors Invalid JSON The error field has the invalid_json_format value. The debug.validation_error field has the value specified in the headers below. body_must_be_json The passed JSON isn’t valid. Invalid parameters or request body For these, the error field has the invalid_params value. The debug.validation_error field has the value specified in the headers below. date should be ISO8601 (YYYY-MM-DD) The passed checkin and checkout fields have an invalid format. The valid format is YYYY-MM-DD. checkin date must be current or future date The checkin field value is in the past. Provide the current or future date. checkin date must be less than or equal to 730 days since today The checkin field value should be no later than 730 days from the day of the request. checkout date must be less than or equal to %d days since today The checkout field value should be no later than 30 days from the checkin field value. checkout date must be after checkin date The checkout field value should be later than the checkin field value. checkout cannot be later than X days since checkin The checkout field value should be no later than 30 days from the checkin field value. residency is required The residency field is required. residency must be one of X The residency field has an invalid format. The valid format is in the ISO 3166-1 alpha-2. unknown currency The currency field has an invalid format. The valid format is in the ISO 4217. early checkin date must be equal checkin date The upsells.early_checkin.time field value should be the same as the checkin field value. late checkout date must be equal checkout date The upsells.late_checkout.time field value should be the same as the checkout field value. early checkin must be in datetime format The checkin field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. late checkout must be in datetime format The checkout field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. guests number must be positive The guests field value must be positive. too many rooms, value should be no more than X The item number of the guests field must be between 1 and 9. adults number per room must be in range 1 to X inc The adults field value must be between 1 and 6. children number per room must be not greater then X The children field value must be between 1 and 4. child's age must be in range 0 to X incl The age field value must be between 0 and 17. radius is required The radius field is required. radius must be in range 1 to X inc The radius field value is invalid. The valid value is between 1 and 70000. longitude is required The longitude field is required. latitude is required The latitude field is required. Internal search error The error field has the core_search_error value. The debug.validation_error field has the null value. The error occurs if the ETG has: An internal search error. A geo search error. The number of recurrent identical requests must be limited. --- # Cancel booking Source: https://docs.emergingtravel.com/docs/b2b-api/post-booking/cancel-booking/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/cancel/ https://api.worldota.net/api/b2b/v3/hotel/order/cancel/ ℹ️ This call is required for the bookings made for the test hotel. The call allows to cancel only successfully confirmed orders. ⚠️ When canceling a non-refundable booking, penalties will be real. Sandbox limitations Making the call is not required. When canceling a non-refundable booking, penalties are not actually applied. For any object containing the currency_code field, its value is always set to EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/cancel/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/cancel/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' Request body Expand this| Collapse this partner_order_id String required The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. Response Expand this| Collapse this amount_payable Object The cancellation fee amount. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. amount_refunded Object The cancellation refunded amount. amount String The cancellation refunded amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. amount_sell Object The booking amount. amount String The booking amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. Response example { "data": { "amount_payable": { "amount": "42.73", "currency_code": "EUR" }, "amount_refunded": { "amount": "50.00", "currency_code": "EUR" }, "amount_sell": { "amount": "92.73", "currency_code": "EUR" } }, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. order_not_found The order is finished with other than the completed or rejected status. The order with the partner_order_id field value isn’t found. order_not_cancellable The stay period has already started. You don’t have permission to cancel non-refundable bookings. Contact your account manager. sandbox_restriction An attempt to cancel the real hotel in the test environment. To cancel the real hotel, use the production environment. To cancel the test hotel, use the test environment. lock This error occurs if requests for an endpoint meet both conditions: Several requests use the same partner_order_id field value. One request is sent twice within a short amount of time. unknown The error occurs if something else has gone wrong. --- # Create credit card token Source: https://docs.emergingtravel.com/docs/b2b-api/booking/create-credit-card-token/ https://api.payota.net/api/public/v1/manage/init_partners ℹ️ The call is required for bookings where the is_need_credit_card_data field was passed with the true value. The call creates and returns a credit card token for the order payment. The PCI DSS standard guarantees safe and secure processing. Request example curl --user ':' 'https://api.payota.net/api/public/v1/manage/init_partners' \ --header 'Content-Type: application/json' \ --data '{ "object_id": "32165487", "pay_uuid": "797870e3-e1f0-470a-87b3-38694f58bed1", "init_uuid": "c44ef1ba-595b-437f-ad14-74ce39a0f9ad", "user_last_name": "LastName", "cvc": "123", "is_cvc_required": true, "credit_card_data_core": { "year": "18", "card_number": "4111111111111111", "card_holder": "TEST", "month": "01" }, "user_first_name": "Name" }' Request body Expand this| Collapse this object_id String required The booking order ID. You can find this value of the item_id field in the response to the Create booking process call. ℹ️ The minimum length is `1` character. The maximum length is `20` characters. pay_uuid String required The external booking payment ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. init_uuid String required The external booking token ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. user_first_name String required The guest first name. ℹ️ The minimum length is 1 character. user_last_name String required The guest last name. ℹ️ The minimum length is 1 character. cvc String optional The CVC. ℹ️ The length is 3 characters. is_cvc_required Boolean required Whether the CVC is required or not. credit_card_data_core Object required The credit card information. year String required The valid thru year. ℹ️ The length is 2 characters. card_number String required The credit card number without spaces. ℹ️ The minimum length is 13 characters. The maximum length is 19 characters. card_holder String required The cardholder name. ℹ️ The minimum length is 1 character. month String required The valid thru month. ℹ️ The length is 2 characters. Response example { "status": "ok" } Errors The error field has the value specified in the headers below. body_error The passed JSON isn’t valid. validation_error Not all required field values are passed. invalid_pay_uuid The invalid_pay_uuid field value doesn’t match the pattern. invalid_init_uuid The invalid_init_uuid field value doesn’t match the pattern. invalid_month The month is invalid. Try a different one. invalid_year The year is invalid. Try a different one. invalid_cvc Incorrect CVC code. invalid_card_number The credit card data is invalid. Try a different one. invalid_card_holder The cardholder name is invalid. Try a different one. invalid_is_cvc_required The is_cvc_required field value is required. luhn_algorithm_error The credit card number hasn’t passed the Luhn algorithm check. --- # Create order group Source: https://docs.emergingtravel.com/docs/b2b-api/order-groups/create-order-group/ https://api.worldota.net/api/b2b/v3/ordergroup/create/ HTTP/1.1 The call creates an order group. Each order should be in one order group only. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/create/?data={%22orders%22%3A[{%22order_id%22%3A197205577%2C%22order_type%22%3A%22hotel%22}]}' Parameters Expand this| Collapse this orders String, Query required The bookings’ information. Response Expand this| Collapse this invoice_id String, Query The order group ID. ℹ️ The minimum length is 1 character. Response example { "data": { "invoice_id": "12980-00259" }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. orders_not_found The order group with the order_id field value isn’t found. orders_already_added The order is already added to this or another order group. orders_are_blocked The order is in processing. order_not_white_b2b_invoiceable The order group couldn’t be created for the requested order. different_contract_data The bookings have different contract data. --- # Create profile Source: https://docs.emergingtravel.com/docs/b2b-api/profiles/create-profile/ https://api.worldota.net/api/b2b/v3/profiles/create/ The call creates a contract profile. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/profiles/create/' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "john.smith@example.com", "first_name": "John", "last_name": "Smith", "phone": "+4412344567899", "type": "master", }' Request body Expand this| Collapse this email String required The profile email address. first_name String required The profile first name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. last_name String required The profile last name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. middle_name String optional The profile middle name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. type String optional The profile phone number. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. type String required The profile type. ℹ️ The possible values: csbt_admin. employee. finance. manager. master. self_booker. sub_agent_supervisor. supervisor. travel_manager. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. user_already_exists The profile with such an email address already exists. --- # Retrieve closing documents info Source: https://docs.emergingtravel.com/docs/b2b-api/documents/retrieve-closing-documents-info/ https://api.worldota.net/api/b2b/v3/general/document/closing_documents/info/ The call gets the confirmatory accounting documents details. Use the call to: Check the details on confirmatory accounting documents. And get a package_id field value for the Retrieve closing documents call. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/document/closing_documents/info/?data={%22order_ids%22%3A55225%2C%22seal%22%3Atrue}' Parameters ℹ️ The following fields are required: The agreement_numbers and issue_date. Or the order_ids. Expand this| Collapse this agreement_numbers String, Query optional The contract agreement numbers. issue_date String, Query optional The confirmatory accounting documents’ issue date. order_ids String, Query optional The order ID. Response Expand this| Collapse this packages Object The confirmatory accounting document list. agreement_number String The contract agreement number. order_ids [Int] The order ID. package_id Int The confirmatory accounting document ID. package_issue_date String The confirmatory accounting document issue date. package_number String The confirmatory accounting document number. reporting_month Int The confirmatory accounting document reporting month. reporting_year Int The confirmatory accounting document reporting year. total_commission Float The agent remuneration during the reporting month. total_sum Float The bookings total amount during the reporting month. total_vat Float The bookings total VAT during the reporting month. Response example { "data": { "packages": [ { "agreement_number": "B2B-1234", "order_ids": [ 314159265, 100666001 ], "package_id": 55225, "package_issue_date": "2018-09-30", "package_number": "АТBP-083391", "reporting_month": 9, "reporting_year": 2018, "total_commission": "300.00", "total_sum": "314660.00", "total_vat": "0.00" } ] }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. invalid_params The call is requested with the incorrect order of parameters. The correct order is: The agreement_numbers and issue_date. Or the order_ids. invalid_params_issue_date_agreement_numbers The agreement_numbers and issue_date fields should be requested together. orders_not_found The order with the order_id field value isn’t found. agreements_not_found The documents with the agreement_numbers field value aren’t found. --- # Retrieve hotel custom dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-hotel-custom-dump/ https://api.worldota.net/api/b2b/v3/hotel/custom/dump/ The call gets the dump customized by the request body. Custom dumps (e.g., ski, usa, etc.) are curated manually or defined by internal business rules. Their content and criteria may change without notice and are not exhaustive. For a comprehensive hotel selection by location or attributes, use the Retrieve hotel dump and apply your own filters. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/custom/dump/' \ --header 'Content-Type: application/json' --data '{ "type": "ski", "language": "en" }' Request body Expand this| Collapse this type String required Type of the custom hotel dump. ℹ️ The possible values: ski. apartments. usa. rome. london_apartments. uk. africa_preferable. asia_preferable. south_europe_cis_preferable. latin_america_preferable. middle_east_preferable. north_america_preferable. oceania_preferable. west_europe_preferable. language String optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } --- # Search by region Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/search-by-region/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/serp/region/ https://api.worldota.net/api/b2b/v3/search/serp/region/ The call gets hotels’ rates by the SERP mechanism and the given region. ⚠️ Let users choose the rates from this call response isn’t recommended. A full match with a response from the Retrieve hotelpage request isn’t expected. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The input value for the language field is ignored; it is always set to en. The possible values for the region_id field are: 2011, 2395, 2734, and 6053839. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission Internal search errors are not supported. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/region/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "region_id": 6053839, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/serp/region/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "region_id": 6053839, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. hotels_limit Int optional The maximum number of the available hotels in the response. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. region_id Int required The region ID. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Number optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests Array[Object] optional The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). upsells Object optional Whether additional services are needed or not. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. ℹ️ For step-by-step instructions and code examples on processing this field, see Upsells. early_checkin Object optional Whether early check-in is needed or not. time String optional The early check-in time (12-hour format with *_day_period; otherwise 24-hour format). late_checkout Object optional Whether late check-out is needed or not. time String optional The late check-out time (12-hour format with *_day_period; otherwise 24-hour format). only_eclc Boolean optional Whether the rates with only early check-in or late check-out are needed or not. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. search_hash String The unique search rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from search step call. The value lifetime is 38 minutes after you have got the rate from the search results. If an outdated or invalid hash is used, an error will be returned. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. perks String The additional services’ information. early_checkin [Object] The early check-in information. charge_price String The early check-in amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the early check-in is requested or not. show_price String The early check-in amount in the search currency. time String The early check-in time. late_checkout [Object] The late check-out information. charge_price String The late check-out amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the late check-out is requested or not. show_price String The late check-out amount in the search currency. time String The late check-out time. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. bar_rate_price_data Object Contains information about the BAR (Best Available Rate), which is the lowest publicly available rate for a hotel room. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. amount String The BAR price value in the currency specified by the currency_code field. It represents the lowest publicly available price for a room. currency_code String Currency of the BAR price. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "dukes_dubai", "hid": 8663536, "rates": [ { "match_hash": "m-35722d9f-63eb-5658-b99d-0088f3ff4e51", "search_hash": "sr-019d97d3-f8ef-710b-b146-96da8da2db6d", "daily_prices": [ "537.04", "537.04", "537.04" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "144765.60", "show_amount": "1611.12", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "EUR", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "91.67", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "144.38", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "65.48", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1644.00", "amount_net": "1611.12", "amount_commission": "32.88" }, "charge": { "amount_gross": "147720.00", "amount_net": "144765.60", "amount_commission": "2954.40" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-08T22:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-10-08T22:00:00", "end_at": "2026-10-14T22:00:00", "amount_charge": "48190.52", "amount_show": "536.06", "commission_info": { "show": { "amount_gross": "547.00", "amount_net": "536.06", "amount_commission": "10.94" }, "charge": { "amount_gross": "49174.00", "amount_net": "48190.52", "amount_commission": "983.48" } } }, { "start_at": "2026-10-14T22:00:00", "end_at": null, "amount_charge": "144765.60", "amount_show": "1611.12", "commission_info": { "show": { "amount_gross": "1644.00", "amount_net": "1611.12", "amount_commission": "32.88" }, "charge": { "amount_gross": "147720.00", "amount_net": "144765.60", "amount_commission": "2954.40" } } } ], "free_cancellation_before": "2026-10-08T22:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 4, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Double room (full double bed) (bed type is subject to availability)", "room_name_info": { "original_rate_name": "Deluxe Room " }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 99, "amenities_data": [ "non-smoking", "not-guaranteed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room", "main_name": "Deluxe Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ], "bar_price_data": null } ], "total_hotels": 32 }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/region", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-04-16T19:46:00", "seconds_number": 60 }, "request": { "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "region_id": 6053839, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "e6adb60495d944e6c0d7c8a0db76f6b0", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T19:45:34.896285" }, "status": "ok", "error": null } Errors Invalid JSON The error field has the invalid_json_format value. The debug.validation_error field has the value specified in the headers below. body_must_be_json The passed JSON isn’t valid. Invalid parameters or request body For these, the error field has the invalid_params value. The debug.validation_error field has the value specified in the headers below. date should be ISO8601 (YYYY-MM-DD) The passed checkin and checkout fields have an invalid format. The valid format is YYYY-MM-DD. checkin date must be current or future date The checkin field value is in the past. Provide the current or future date. checkin date must be less than or equal to 730 days since today The checkin field value should be no later than 730 days from the day of the request. checkout date must be less than or equal to %d days since today The checkout field value should be no later than 30 days from the checkin field value. checkout date must be after checkin date The checkout field value should be later than the checkin field value. checkout cannot be later than X days since checkin The checkout field value should be no later than 30 days from the checkin field value. residency is required The residency field is required. residency must be one of X The residency field has an invalid format. The valid format is in the ISO 3166-1 alpha-2. unknown currency The currency field has an invalid format. The valid format is in the ISO 4217. early checkin date must be equal checkin date The upsells.early_checkin.time field value should be the same as the checkin field value. late checkout date must be equal checkout date The upsells.late_checkout.time field value should be the same as the checkout field value. early checkin must be in datetime format The checkin field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. late checkout must be in datetime format The checkout field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. guests number must be positive The guests field value must be positive. too many rooms, value should be no more than X The item number of the guests field must be between 1 and 9. adults number per room must be in range 1 to X inc The adults field value must be between 1 and 6. children number per room must be not greater then X The children field value must be between 1 and 4. child's age must be in range 0 to X incl The age field value must be between 0 and 17. region_id value should be greater than 0 The region_id field value is invalid. The valid value is equal to or greater than 0. hotels_limit value should be greater than or equal to 0 The hotels_limit field value is invalid. The valid value is equal to or greater than 0. hotels_not_found The hotels aren’t found or an internal error has occurred. invalid region_id field, this region cannot be searched The region_id field value is invalid. The valid values are in the Retrieve regions’ dump call response. Internal search error The error field has the core_search_error value. The debug.validation_error field has the null value. The error occurs if the ETG has: An internal search error. A region search error. The number of recurrent identical requests must be limited. --- # Add to order group Source: https://docs.emergingtravel.com/docs/b2b-api/order-groups/add-to-order-group/ https://api.worldota.net/api/b2b/v3/ordergroup/order/add/ HTTP/1.1 The call adds an order to the existing order group. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/order/add/?data={%22invoice_id%22%3A%2212980-00259%22%2C%22orders%22%3A[{%22order_id%22%3A197205577%2C%22order_type%22%3A%22hotel%22}]}' Parameters Expand this| Collapse this orders String, Query required The bookings’ information. invoice_id String, Query required The order group ID. ℹ️ The minimum length is 1 character. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. invoice_not_found The order group with the invoice_id field value isn’t found. orders_already_added The order is already added to this or another order group. orders_are_blocked The order is in processing. orders_not_found The order with the order_id field value isn’t found. order_not_white_b2b_invoiceable The order group couldn’t be created for the requested order. different_contract_data The bookings have different contract data. --- # Edit profile Source: https://docs.emergingtravel.com/docs/b2b-api/profiles/edit-profile/ https://api.worldota.net/api/b2b/v3/profiles/edit/ The call edits a contract profile. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/profiles/edit/' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "john.smith@example.com", "first_name": "John", "last_name": "Smith", "phone": "+4412344567899" "type": "manager" }' Request body Expand this| Collapse this email String required The profile email address. first_name String required The profile first name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. last_name String required The profile last name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. middle_name String optional The profile middle name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. phone String optional The profile phone number. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. type String required The profile type. ℹ️ The possible values: csbt_admin. employee. finance. manager. master. self_booker. sub_agent_supervisor. supervisor. travel_manager. Response Expand this| Collapse this user [Object] The profile list. email String The profile email address. first_name String The profile first name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. last_name String The profile last name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. middle_name String The profile middle name. ℹ️ The value matches the pattern: ^[^\W\d_]+([^\W\d_]*[\u0590-\u05FF\u0900-\u097F\u0980-\u09FF\u0E00-\u0E7F'\-,.’\s]*)*$. phone String The profile phone number. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. status String The profile status. ℹ️ The possible values: active. awaiting_confirmation. deleted. disabled. type String The profile type. ℹ️ The possible values: csbt_admin. employee. finance. manager. master. self_booker. sub_agent_supervisor. supervisor. travel_manager. Response example { "data":{ "user":{ "email":"john.smith@example.com", "first_name":"John", "last_name":"Smith", "middle_name":null, "phone":"+4412344567899", "status":"awaiting_confirmation", "type":"manager" } }, "debug":null, "error":null, "status":"ok" } Errors The error field has the value specified in the headers below. users_profile_not_found The profile isn’t found. --- # Retrieve hotel incremental dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-hotel-incremental-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/incremental_dump/ https://api.worldota.net/api/b2b/v3/hotel/info/incremental_dump/ The call gets the dump with the ETG hotels which content has changed in the previous day. ℹ️ The dump: Is incremental. Should be updated every day. The ETG generates each archive for a single language. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Indexing of any internal content such as photos, descriptions and others isn’t allowed. Any public content such as a name, address, amenities and policies can be indexed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The inventory field supports the following values: all, direct, preferable, and direct_fast. The maximum number of items in the dump is 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/incremental_dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en", "inventory": "all" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/incremental_dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en", "inventory": "all" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. inventory String optional The hotel list to get. ℹ️ The possible values: all — all available suppliers. direct — Chains, Extranet, DMC, Switch, Consolidator, Wholesaler. direct_fast — Chains, Extranet. direct_fast_extended — Chains, Extranet, DMC, Switch. preferable — all sellable hotels with availability within last 6 months. The default value is all. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Retrieve voucher Source: https://docs.emergingtravel.com/docs/b2b-api/documents/retrieve-voucher/ https://api.worldota.net/api/b2b/v3/hotel/order/document/voucher/download/ The call gets the order voucher file. The file is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/document/voucher/download/?data={%22partner_order_id%22%3A%22asd123%22%2C%22language%22%3A%22en%22}' Parameters Expand this| Collapse this language String, Query required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. partner_order_id String, Query required The external order ID. ℹ️ The minimum length is 1 character. Errors The error field has the value specified in the headers below. failed_to_generate_document The voucher is in generating. Try to request later. order_not_found The order with the partner_order_id field value isn’t found. pending The voucher is in processing. Try to request later. voucher_is_not_downloadable The order is in processing. Try to request when the order will be completed and its cost will be paid. --- # Start booking process Source: https://docs.emergingtravel.com/docs/b2b-api/booking/start-booking-process/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/ https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/ ℹ️ This call is required. Request this call right after the Create booking process call. As the booking process is made asynchronously, repeatedly request the Check booking process call to know the status. The call starts the booking process. ⚠️ If invalid user data is used, the data may be added to the stop list. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The possible values for the payment_type.type field are hotel and deposit. The value of the payment_type.currency_code field is always USD. The following fields are not supported: payment_type.init_uuid, payment_type.pay_uuid, upsell_data, and return_path. For all objects with the currency_code field the value is always EUR. The following errors are not supported: book_hash_not_found, rate_not_found, return_path_required, not_enough_credit_card_data, incorrect_init_uuid_format, and incorrect_pay_uuid_format. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/' \ --header 'Content-Type: application/json' \ --data '{ "user": { "email": "john.smith@example.com", "comment": "The user comment.", "phone": "12124567899" }, "supplier_data": { "first_name_original": "Peter", "last_name_original": "Collins", "phone": "12124567880", "email": "peter.collins@example.com" }, "partner": { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "comment": "The partner comment.", "amount_sell_b2b2c": "10" }, "language": "en", "rooms": [ { "guests": [ { "first_name": "Martin", "last_name": "Smith" }, { "first_name": "Eliot", "last_name": "Smith" } ] } ], "upsell_data": [ { "name": "early_checkin", "uid": "d7b56e81-b874-40ee-b195-e2f73d1ec714" }, { "name": "late_checkout", "uid": "c4013ea8-3ffd-4eee-bbbc-37693670031e" } ], "payment_type": { "type": "deposit", "amount": "9", "currency_code": "EUR" }, "return_path": "https://example.com" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/' \ --header 'Content-Type: application/json' \ --data '{ "user": { "email": "john.smith@example.com", "comment": "The user comment.", "phone": "12124567899" }, "supplier_data": { "first_name_original": "Peter", "last_name_original": "Collins", "phone": "12124567880", "email": "peter.collins@example.com" }, "partner": { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "comment": "The partner comment.", "amount_sell_b2b2c": "10" }, "language": "en", "rooms": [ { "guests": [ { "first_name": "Martin", "last_name": "Smith" }, { "first_name": "Eliot", "last_name": "Smith" } ] } ], "upsell_data": [ { "name": "early_checkin", "uid": "d7b56e81-b874-40ee-b195-e2f73d1ec714" }, { "name": "late_checkout", "uid": "c4013ea8-3ffd-4eee-bbbc-37693670031e" } ], "payment_type": { "type": "deposit", "amount": "9", "currency_code": "EUR" }, "return_path": "https://example.com" }' Request body Expand this| Collapse this arrival_datetime DateTime optional The estimated arrival time to the hotel (12-hour format with *_day_period; otherwise 24-hour format). language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. partner Object required The partner information. partner_order_id String required The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. comment String optional The partner booking internal comment. The comment isn’t sent to the hotel and not processed by the ETG API support team. It is visible only to the partner itself. ℹ️ The minimum length is 1 character. The maximum length is 256 character. amount_sell_b2b2c String optional The resale price for the user in the contract currency. The value is accepted if transferred (even if automatic completion of the resale price value is activated) and is displayed in the confirmatory accounting documents for the partners. ℹ️ The minimum value is 1. payment_type Object required The order payment information. type String required The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. amount String required The booking amount in the currency specified by the currency_code field. currency_code String required The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. init_uuid String optional The external booking token ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. Is required for bookings where the is_need_credit_card_data field was passed with the true value. Should be the same with the init_uuid field value from the Create credit card token) call. pay_uuid String optional The external booking payment ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. Is required for bookings where the is_need_credit_card_data field was passed with the true value. Should be the same with the pay_uuid field value from the Create credit card token) call. upsell_data Object optional The order upsell information. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. attributes String optional The upsell check-in and check-out dates. checkin_datetime Datetime optional The upsell check-in date and time (12-hour format with *_day_period; otherwise 24-hour format). checkout_datetime Datetime optional The upsell check-out date and time (12-hour format with *_day_period; otherwise 24-hour format). name String optional The upsell name. ℹ️ The possible values: early_checkin. late_checkout. rule_id Int optional The upsell rule ID. uid String optional The upsell ID. ℹ️ Use the value of the uid field from the Create booking process call. return_path String optional The URL at your side to redirect the user to. It is done by the payment gateway after 3D Secure check. The reason the ETG needs it. This field is required if the rate you are booking has the payment_types field with the now value. The field data_3ds of the Check booking process call will have the null value if: You don’t pass this field. The issuing bank requires 3D Secure check. ℹ️ Must have the HTTPS scheme. Might have GET parameters. The minimum length is 1 character. The maximum length is 256 character. rooms [Object] required The guests’ information for the rooms. guests Object required The guests’ information. first_name String required or optional The guest first name. ℹ️ It is mandatory to provide the first name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. last_name String required or optional The guest last name. For test purposes use the Ratehawk value. ℹ️ It is mandatory to provide the last name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. is_child Boolean required or optional Whether the guest is a child or not. ℹ️ Guests are considered adults unless is_child = true, even if their age is that of a child. age Int required or optional The child age in years. ℹ️ Specify the child’s age if there are children in the booking request (is_child = true). The minimum value is 0. The maximum value is 17. gender String optional The guest gender. ℹ️ Is required if the hotel you intend to book has the is_gender_specification_required field with the true value. The field appears only in the Retrieve hotel content call response. The possible values: male. female. unknown. user Object required The partner manager additional information. comment String optional The partner manager comments sent to the hotel. ℹ️ The minimum length is 1 character. The maximum length is 256 character. email String required The partner manager email address for contact purposes and sending transactional emails. The email address must be valid. To view all bookings in your account, get a Master or Supervisor type of account. With Manager type the user will see only reservations with their own email address. phone String required The partner manager phone number for contacting purposes. The phone number must be valid. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. supplier_data Object required or optional The contact details of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. first_name_original String required The first name of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. last_name_original String required The last name of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. email String required The email address of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. phone String required The phone number of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. The minimum length is 5 characters. The maximum length is 35 characters. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. book_hash_not_found A rare internal error when the ETG couldn’t recognize the book_hash used in the booking. After getting the error, the only option is to find another rate and continue with it. booking_form_expired In case Create booking process has been expired. Request a new Create booking process with a different partner_order_id. chosen_payment_type_was_not_available_on_booking_form The payment_type field values don’t match any of the payment_types field values in the response of the Create booking process call. Try to change the payment_type field value according to the payment_types field values in the response. double_booking_finish An attempt to finish the booking for the second time while the status of the first attempt isn’t an error. email The provided email address isn’t valid. incorrect_chosen_payment_type Invalid data provided in the payment_type field of the call request. The supplied type, amount, and/or currency_code values do not match any of the payment_type options received from the Create booking process call. incorrect_guests_number The adult guest number doesn’t match the adult guest number in the request of the Retrieve hotelpage call. Try to change the rooms field item number according to the guests field values in the request. The total number of adults derived from rooms[].guests[] does not match the search query. Any guest without is_child = true is treated as an adult (the age field alone does not mark a guest as a child). incorrect_children_data The children guest number doesn’t match the children guest number in the request of the Retrieve hotelpage call. The children age is incorrect. Try to change: The rooms field item number according to the guests field values in the request. The age field value. incorrect_rooms_number The room number doesn’t match the room number in the request of the Retrieve hotelpage call. Try to change the rooms field item number according to the guests field values in the request. insufficient_b2b_balance In case the credit limit is not sufficient for the reservation. To discuss changes to this limit please contact your account manager. order_not_found The order with the partner_order_id field value isn’t found. Send another booking creation request and change the partner_order_id field value. rate_not_found The rate isn’t found. Send another search request. return_path_required The return_path field is required if the rate you are booking has the payment_types field with the now value. unauthorized_group_booking An attempt to make a request with the conditions: More than 9 bookings in the same hotel. More than 9 bookings for the same dates. In one request. To make a group booking: Contact the API support team. Fill in the group booking form on the site. invalid_upsell_attributes Invalid name and attributes combination in upsell_data field. invalid_upsell_uid Invalid upsell uid in upsell_data field. invalid_upsell_data Only early check-in and late check-out can be specified in the upsell_data, with a maximum of two values allowed. arrival_date_differs_from_checkin_date The check-in date should be equal to or the day after the check-in date in the request of the Retrieve hotelpage call. Try to change the checkin_datetime field value according to the checkin field value in the request. not_enough_credit_card_data The init_uuid and pay_uuid fields are required if the rate you are booking has the is_need_credit_card_data field with the true value. incorrect_init_uuid_format The init_uuid field values don’t match the regular expression. incorrect_pay_uuid_format The pay_uuid field values don’t match the regular expression. sandbox_restriction An attempt to book the test hotel with the hid = 6291619 or id = test_hotel_do_not_book in the production environment. To book the test hotel, use the test environment. supplier_data_required The supplier_data field is required for your integration. Contact your account manager. timeout, unknown, and 5xx If you get the error, it doesn’t necessarily mean the booking isn’t created. These errors may occur because of the ETG services’ timeout. To check the booking creation, send the Check booking process request. Error Handling Diagram Below is a sequence diagram describing how to handle errors during the start booking process: sequenceDiagram participant User participant API User->>API: Start booking process alt status == "ok" or error is timeout/unknown or HTTP status code 5xx API-->>User: Response: status == "ok" or error is timeout/unknown or HTTP status code 5xx User->>User: Proceed to Check Booking Process else API-->>User: Response: other error User->>User: Show error and stop end --- # Sort hotels Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/sort-hotels/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/hotelsort/ https://api.worldota.net/api/b2b/v3/search/hotelsort/ The call ranks the hotels in the region. The ranking is made the internal ETG algorithm. 💡 Recommendations Use the call when you want to determine the order of the bookings to display in a third-party product. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The possible values for the region_id field are: 2011, 2395, 2734, and 6053839. The maximum value for the hotels_limit field is 250. The maximum number of items in hotels is 250. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/hotelsort/' \ --header 'Content-Type: application/json' \ --data '{ "region_id": 536, "sort_type": "b2b", "hotels_limit": 5 }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/hotelsort/' \ --header 'Content-Type: application/json' \ --data '{ "region_id": 536, "sort_type": "b2b", "hotels_limit": 5 }' Request body Expand this| Collapse this hotels_limit Int optional The maximum number of the available hotels in the response. region_id Int required The region ID. sort_type String optional The sort order type. Is different for the B2B and B2C clients. ℹ️ The possible values: b2b. b2c. Response Expand this| Collapse this hotels [String] The hotel ID list that matches the request body. Response example { "data": { "hotels": [ "concorde_am_studio", "berlin_marriott_hotel_2", "novum_hotel_aldea_berlin_centrum", "nh_berlin_mitte", "best_western_premier_hotel_moa_berlin" ] }, "debug": { "request": { "region_id": 536, "sort_type": "b2b", "hotels_limit": 5 }, "key_id": 7705, "validation_error": null }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The region_id field is required. The region_id field is equal or greater than 0. The hotels_limit field is equal or greater than 0. The sort_type field is incorrect. hotels_not_found An internal search error. Has 500 status code. --- # Check booking process Source: https://docs.emergingtravel.com/docs/b2b-api/booking/check-booking-process/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ ℹ️ This call is required if you don’t use the Receive booking status webhook call. As the booking process is made asynchronously, repeatedly request this call to know the status. The call checks the booking process status. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The following features are not supported: 3D Secure check and cut-off logic. The data_3ds field is not supported. The possible values for the status field are: ok, processing, and error. The following errors are not supported: block, charge, 3ds, and not_allowed. Usage scenarios The only possible call requesting scenarios: General. No need for you to make additional steps except for receiving the final status. 3D Secure check. Needs you to make additional steps. 3D Secure check ℹ️ The scenario is required to be completed if the rate you are booking has the payment_types field with the now value. To complete the scenario, make the following steps: Request this call and receive the check details. Make the 3D Secure check request. After the 3D Secure check is completed, the payment gateway will redirect the user to the URL passed in the return_path field value of the Start booking process call. Request this call again and receive the final status. 3D Secure check details If the issuing bank supports 3D Secure cards, as the response to this call you will get: The status field with the 3ds value. The special data in data.data_3ds field. The response example: { "data": { "data_3ds": { "action_url": "https://example.com/ACS/auth/start.do", "data": { "MD": "94cf25b2-aa6d-4204-83e4-acf036d263f6", "PaReq": "eJxVkt1ygjAQhV/F4R7zIwI6azptqa2dAR0L0+s0RKAV0ADVvn0TC33833+zObs5G7g5l/vRp1RNUVcLi4yxNZKVqNOiyhZWEi9t37phEOdKyuBFik5JBqFsGp6JUZEurBl358xfpLbvSWw7U05sHzvU3hGyS92Z8DyfWww2t1t5ZNA3YrrPmAIaUCsqkfOqZcDF8W4VMYd6LsaAeoRSqlXACJ04U9fzAf0wVLyUTPFW5vz0AeiCIOquatUXc20JoAGgU3uWt+1hjtBwYSzqEpA5APQ3waYzUaOFzkXKwvfwHMXZaR08kHWQOGH8cIqC5BTGyQKQqYBUyzGKKcYOpiPszbEzx1NAlzzw0kzACJmYXE9wME1ur47+p0AbrfQehkcMBPJ8qCupK7R7vzGgv3nvn4yHotXuLPPZIY2ecbeLGlI8bulbkh2zzRZvXvfG2UuRUSy0P5Rg9yJpAJCRQf3SUL9vHV39g287E7qa", "TermUrl": "https://example.com/rebpayment/rest/finish3ds.do?ret_path=finish" }, "method": "post" }, "partner_order_id": "asd123", "percent": 66 }, "debug": null, "error": null, "status": "3ds" } 3D Secure check request Send the request with received data for the 3D Secure check: Via the GET method if the data.data_3ds.method field has the get value. Or via the POST method if the data.data_3ds.method field has the post value. The request example: curl -d '{"PaReq":"eJxVkt1ygjAQhV/F4R7zIwI6azptqa2dAR0L0+s0RKAV0ADVvn0TC33833+zObs5G7g5l/vRp1RNUVcLi4yxNZKVqNOiyhZWEi9t37phEOdKyuBFik5JBqFsGp6JUZEurBl358xfpLbvSWw7U05sHzvU3hGyS92Z8DyfWww2t1t5ZNA3YrrPmAIaUCsqkfOqZcDF8W4VMYd6LsaAeoRSqlXACJ04U9fzAf0wVLyUTPFW5vz0AeiCIOquatUXc20JoAGgU3uWt+1hjtBwYSzqEpA5APQ3waYzUaOFzkXKwvfwHMXZaR08kHWQOGH8cIqC5BTGyQKQqYBUyzGKKcYOpiPszbEzx1NAlzzw0kzACJmYXE9wME1ur47+p0AbrfQehkcMBPJ8qCupK7R7vzGgv3nvn4yHotXuLPPZIY2ecbeLGlI8bulbkh2zzRZvXvfG2UuRUSy0P5Rg9yJpAJCRQf3SUL9vHV39g287E7qa","termurl":"https://example.com/rebpayment/rest/finish3ds.do?ret_path=finish","MD":"94cf25b2-aa6d-4204-83e4-acf036d263f6}"' https://example.com/ACS/auth/start.do Result interpretation The result is described in the status response field. The possible values: ok — the booking finishing has ended with success. processing — the booking finishing is in progress. Request the status change every second until you get the ok or error value. 3ds — the booking finishing needs to complete the 3D Secure check. error — the booking finishing has ended with an error. ⚠️ Don’t forget that you might have the timeout, unknown, and 5xx error. Retry logic During the maximum booking time request this call any time you like. The recommended time is once per 5 seconds. ⚠️ Always send a final status request at the last second before the booking timeout, even if you check every 5 seconds. This reduces the risk of missing the correct status, especially with short timeouts. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' Request body Expand this| Collapse this partner_order_id String required The unique partner booking ID. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. Response Expand this| Collapse this data_3ds Object The 3D Secure check information. action_url String The URL of a new request for the 3D Secure check. Must have the data object field as the query parameter. data Object optional The 3D Secure check information that should be sent back. MD String optional The payment session ID returned by the card issuer. PaReq String optional The 3D Secure request data for the issuer. ℹ️ The line breaks in the value must be retained in all requests. Otherwise, the transaction will be declined. TermUrl String optional The URL of the merchant site page to redirect the user to after completing 3D Secure check on the card issuer site. ℹ️ The maximum length is 1024 characters. method String The HTTP method of sending the information. ℹ️ The possible values: get. post. partner_order_id String The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. percent Int deprecated The order confirmation percentage. All current statuses are described in the Result interpretation section. The ok status in the response indicates that the order is confirmed. Response example { "data": { "data_3ds": null, "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "percent": 100 }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. block The card funds can’t be frozen (blocked) for the booking payment. charge The card funds can’t be withdrawn for the booking payment due to: A failed freeze. Another reason. 3ds The MD field value is invalid. soldout The rate is no longer available as its rooms are sold out. book_limit The cut-off logic limit for the booking finishing is reached. not_allowed There is no permission to use this call for this contract: Contact the API support team. Tell the user the booking error has occurred. When contacting the API support team, provide at least: The hotel name where the booking is in process. The order_id field with the value from the Create booking process call. The user and rooms fields with the values from the Start booking process call. This information will help to identify the request attempt. provider A technical error at the rate provider side. order_not_found The order with the partner_order_id field value isn’t found. Try to change the value. booking_finish_did_not_succeed An attempt to request this call without a successful response from the Start booking process call. timeout, unknown, and 5xx An internal error. Continue to request this call until you get the following response: The status field has the ok value. The error field has one of the values: 3ds. block. book_limit. booking_finish_did_not_succeed. charge. decoding_json. endpoint_exceeded_limit. endpoint_not_active. endpoint_not_found. incorrect_credentials. invalid_auth_header. invalid_params. lock. no_auth_header. not_allowed. not_allowed_host. order_not_found. overdue_debt. provider. soldout. unexpected_method. ℹ️ The requests should be sent within the agreed booking timeout. Error Handling Diagram Below is a sequence diagram describing how to handle errors during the booking check process: sequenceDiagram participant User participant API User->>API: Check booking process alt status == "ok" API-->>User: Booking is successfully confirmed else status == "processing" or error is (timeout/unknown) or HTTP status code 5xx loop Wait and poll (until status is "ok", final error, or booking timeout reached) User->>API: Check Booking Process alt status == "ok" API-->>User: Booking is successfully confirmed User->>User: Stop polling else status == "processing" or error is (timeout/unknown) or HTTP status code 5xx API-->>User: Still processing or transient error, continue polling else status is final error (e.g., soldout, provider, book_limit) or booking timeout reached API-->>User: Return final error or booking timeout User->>User: Stop polling, show error end end else status is final error (e.g., soldout, provider, book_limit) or booking timeout reached API-->>User: Return final error or booking timeout User->>User: Stop, show error end --- # Disable profile Source: https://docs.emergingtravel.com/docs/b2b-api/profiles/disable-profile/ https://api.worldota.net/api/b2b/v3/profiles/disable/ The call disables a contract profile. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/profiles/disable/' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "john.smith@example.com" }' Request body Expand this| Collapse this email String required The profile email address. Request example {"data":null,"debug":null,"error":"profile_is_already_disabled","status":"error"} Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. users_profile_not_found The profile isn’t found. profile_is_already_disabled The profile with such an email address is already disabled. disable_users_profile_error An unknown error. To eliminate the error, contact the API support team. --- # Retrieve hotel reviews’ dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-hotel-reviews-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/reviews/dump/ https://api.worldota.net/api/b2b/v3/hotel/reviews/dump/ The call gets the dump with the hotels reviews of the ETG clients. ℹ️ The dump should be updated every week. The ETG generates each archive for a single language. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. The ETG can’t share the TripAdvisor reviews via the API. Reviews indexing isn’t allowed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The maximum number of items in the dump is 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Dump file structure The dump is a GZIP archive that contains a file with hotel IDs and objects with theirs reviews. { "corendon_vitality_hotel_amsterdam": { "rating": 9, "detailed_ratings": { "cleanness": 8.6, "location": 7.9, "price": 8.6, "services": 8.4, "room": 9.5, "meal": 10, "wifi": 10, "hygiene": null }, "reviews": [ { "review_plus": "It is near the metro m51 which is good for reaching any place of city. Breakfast is really good. Clean confortable and with great view", "review_minus": "Nothing all good", "created": "2022-05-17", "author": "Alban", "adults": 2, "children": 0, "room_name": "Standard Double room (full double bed) (bed type is subject to availability)", "nights": 2, "images": [], "detailed": { "cleanness": 10, "location": 10, "price": 8, "services": 10, "room": 10, "meal": 10, "wifi": "perfect", "hygiene": "unspecified" }, "traveller_type": "couple", "trip_type": "leisure", "rating": 9 } ] } } Field details The entire dump structure is described in the response of the Retrieve hotels review by IDs call. Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Retrieve invoice info Source: https://docs.emergingtravel.com/docs/b2b-api/documents/retrieve-invoice-info/ https://api.worldota.net/api/b2b/v3/hotel/order/document/info_invoice/download/ The call gets the order invoice. The invoice is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/document/info_invoice/download/?data={%22partner_order_id%22%3A%22asd123%22}' Parameters Expand this| Collapse this partner_order_id String, Query required The external order ID. ℹ️ The minimum length is 1 character. Errors The error field has the value specified in the headers below. failed_to_generate_document The invoice is in generating. Try to request later. order_not_found The order with the partner_order_id field value isn’t found. invoice_not_available No invoice is available for the order. Check the payable amount, contract kind, legal entity, and contract data. --- # Remove order group Source: https://docs.emergingtravel.com/docs/b2b-api/order-groups/remove-from-order-group/ https://api.worldota.net/api/b2b/v3/ordergroup/order/remove/ HTTP/1.1 The call deletes the order from the existing order group. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/order/remove/?data={%22invoice_id%22%3A%2212980-00259%22%2C%22orders%22%3A[{%22order_id%22%3A197205577%2C%22order_type%22%3A%22hotel%22}]}' Parameters Expand this| Collapse this orders String, Query required The bookings’ information. invoice_id String, Query required The order group ID. ℹ️ The minimum length is 1 character. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. invoice_not_found The order group with the invoice_id field value isn’t found. orders_are_blocked The order is in processing. orders_not_found The order with the order_id field value isn’t found. --- # Suggest hotel and region Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/suggest-hotel-and-region/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/multicomplete/ https://api.worldota.net/api/b2b/v3/search/multicomplete/ This call enables autocomplete: you can find a region or hotel by entering just part of its name. The response returns no more than 5 results per category. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The input value for the language field is ignored; it is always set to en. The maximum number of items in hotels is 5. The possible values for hotels.region_id are: 2011, 2395, 2734, and 6053839. The regions field is always null. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/multicomplete/' \ --header 'Content-Type: application/json' \ --data '{ "query": "Ber", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/multicomplete/' \ --header 'Content-Type: application/json' \ --data '{ "query": "Ber", "language": "en" }' Request body Expand this| Collapse this language String optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. query String required The part of the hotel or region name. Response Expand this| Collapse this hotels Object Hotels of different types that meet request parameters. ℹ️ The maximum number of items is 5. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. name String Hotel’s name. region_id Int The region ID. regions Object The region list. ℹ️ The maximum items’ number is 5. id String deprecated The unique region ID. name String The region name. type String The region type. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (Within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). country_code String The region country code in the ISO 3166-1 alpha-2 format. Response example { "data": { "hotels": [ { "id": "gostinitsa_berlin", "hid": 8066022, "name": "Berlin Hotel", "region_id": 1798 }, { "id": "bergs_hotel_2", "hid": 9974510, "name": "Bergs Spa and Сonference Hotel", "region_id": 5580 }, { "id": "rp_bergamo_hotel", "hid": 10575679, "name": "Bergamo Eco Hotel", "region_id": 6057804 }, { "id": "hotel_dacha_na_berezovoy", "hid": 6344433, "name": "Dacha Na Berezovoi Apartments", "region_id": 965821558 }, { "id": "travel_hotels_bereg_hotel", "hid": 10211188, "name": "Hotel Priboi by Sun City Hotels", "region_id": 299 } ], "regions": [ { "id": 536, "name": "Berlin", "type": "City", "country_code": "DE" }, { "id": 965888340, "name": "Saint-Philbert-de-Grand-Lieu", "type": "City", "country_code": "FR" }, { "id": 6340759, "name": "Montalbert", "type": "City", "country_code": "FR" }, { "id": 965850065, "name": "Cote d'Azur", "type": "Multi-Region (within a country)", "country_code": "FR" }, { "id": 966047519, "name": "Saint-Philbert-sur-Orne, Normandy", "type": "City", "country_code": "FR" } ] }, "debug": { "request": { "query": "Ber", "language": "en" }, "key_id": 7705, "validation_error": null }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The query field is required. core_search_error An internal search error. Has 500 status code. --- # Disband order group Source: https://docs.emergingtravel.com/docs/b2b-api/order-groups/disband-order-group/ https://api.worldota.net/api/b2b/v3/ordergroup/disband/ HTTP/1.1 The call disbands the existing order group. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/disband/?data={%22invoice_id%22%3A%2212980-00236%22}' Parameters Expand this| Collapse this invoice_id String, Query required The order group ID. ℹ️ The minimum length is 1 character. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. invoice_not_disbandable The order group can’t be disbanded. It is already paid for. invoice_not_found The order group with the invoice_id field value isn’t found. --- # Receive booking status webhook Source: https://docs.emergingtravel.com/docs/b2b-api/booking/receive-booking-status-webhook/ ℹ️ This call is required if you don’t use the Check booking process call. The call retrieves a webhook for the booking process status via the POST method. Sandbox limitations No changes. Getting webhook scenario Provide the callback URL to the API support team. The API support team sets up the callback URL. Once the callback URL is set and the booking process is finished, the ETG API sends the webhook. Check if the webhook is received on your side and send the appropriate response. ℹ️ At the last second, request this call for the last time and receive the status: completed — the booking finishing will end with success. failed — the booking finishing will end with an error. Your server responses The ETG listens to the following codes from your server and reacts accordingly: Code 200 — the webhook is received successfully and doesn’t need a retry. Any code greater than 299 (including 4xx and 5xx responses) — the ETG will retry sending the webhook. Retries are performed with increasing intervals, depending on the number of previous attempts: 30 seconds. 60 seconds. 90 seconds. 120 seconds. 150 seconds. 300 seconds (5 minutes). 1 hour. 12 hours. After the 7th attempt, all subsequent retries will be performed every 12 hours, up to a total of 21 retry attempts. Payload Expand this| Collapse this partner_order_id String required The unique partner booking ID. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. status String required The booking finishing status. ℹ️ The possible values: completed — the booking finishing has ended with success. failed — the booking finishing has ended with an error. To know the reason for the failure, use the Check booking process call. The payload example: { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "status": "completed" } Secure data Expand this| Collapse this signature String required The hexadecimal digits generated by the HMAC algorithm. timestamp Int required The date and time of creating a webhook token in the Unix Timestamp format. ℹ️ The minimum date is January 1, 1970. You can find it in the token signature when decoding. token String required The randomly generated string with the length of 50 characters. The secure data example: { "signature": { "signature": "7865d225dbee1b54909er153d193e0b57b707ebe81ff5b2e1b71ebaf749bec23", "timestamp": 1574146939, "token": "d3395025-1ee7-49a2-bd86-e4bd6b9908b2" } } Whole fields example { "data": { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "status": "completed" }, "signature": { "signature": "7865d225dbee1b54909er153d193e0b57b707ebe81ff5b2e1b71ebaf749bec23", "timestamp": 1574146939, "token": "d3395025-1ee7-49a2-bd86-e4bd6b9908b2" } } Signature verification To verify the webhook issued by the ETG: Concatenate the timestamp and token values. The “token” means the one sent by the ETG in the webhook data. Encode the resulting string with the HMAC algorithm: Use your API Key token as a key. Use the SHA256 digest mode. Use the hexdigest() method to make a resulting string. Compare the resulting string to the signature. Optional. Cache the token locally and don’t honor any subsequent request with the same token. This will prevent replay attacks. Optional. Check that the timestamp is within the token lifetime. Examples Python import hashlib, hmac def verify(api_key, token, timestamp, signature): hmac_digest = hmac.new(key=api_key, msg='{}{}'.format(timestamp, token), digestmod=hashlib.sha256).hexdigest() return hmac.compare_digest(unicode(signature), unicode(hmac_digest)) Ruby require 'openssl' def verify(api_key, token, timestamp, signature) digest = OpenSSL::Digest::SHA256.new data = [timestamp, token].join signature == OpenSSL::HMAC.hexdigest(digest, api_key, data) end PHP function verify($apiKey, $token, $timestamp, $signature) { // check if the timestamp is fresh if (abs(time() - $timestamp) > 15) { return false; } // returns true if signature is valid return hash_hmac('sha256', $timestamp . $token, $apiKey) === $signature; } Node.js const crypto = require('crypto') const verify = ({ apiKey, timestamp, token, signature }) => { const encodedToken = crypto .createHmac('sha256', apiKey) .update(timestamp.toString().concat(token)) .digest('hex') return (encodedToken === signature) } --- # Restore profile Source: https://docs.emergingtravel.com/docs/b2b-api/profiles/restore-profile/ https://api.worldota.net/api/b2b/v3/profiles/restore/ The call restores a contract profile. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/profiles/restore/' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "one@test.com" }' Request body Expand this| Collapse this email String required The profile email address. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. users_profile_not_found The profile isn’t found. profile_is_already_restored The profile with such an email address is already restored. restore_users_profile_error An unknown error. To eliminate the error, contact the API support team. --- # Retrieve invoice Source: https://docs.emergingtravel.com/docs/b2b-api/documents/retrieve-invoice/ https://api.worldota.net/api/b2b/v3/ordergroup/document/invoice/download/ The call gets the order group invoice. The invoice is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/document/invoice/download/?data={%22invoice_id%22%3A%2212345-67890%22}' Parameters Expand this| Collapse this invoice_id String, Query required The order group ID. ℹ️ The minimum length is 1 character. Errors The error field has the value specified in the headers below. failed_to_generate_document The invoice is in generating. Try to request later. invoice_not_found The order group with the invoice_id field value isn’t found. terminal_invoice The group order has the payment_options.payment_types.later field or is paid for by a terminal. --- # Retrieve regions’ dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-regions-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/region/dump/ https://api.worldota.net/api/b2b/v3/hotel/region/dump/ The call gets the dump with the hotels of all available ETG regions. ℹ️ The dump should be updated every week. The ETG generates one archive only. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Content indexing isn’t allowed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. In the dump, the number of items is 1000. For all objects with the region_id field, the possible values are: 2011, 2395, 2734, and 6053839. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/region/dump/' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/region/dump/' Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Dump file structure The dump is a Zstd archive that contains a file with a list of objects line by line: [ { "country_name": { "ar": null, "bg": "Полша" // other languages... } }, { "country_name": { "ar": "الولايات المتحدة الأمريكية", "bg": "Съединени щати" // other languages... } } ] Each object in its turn contains a region’s description (each line is a single region in json format). Structure of the region { "country_name": { "ar": "باربادوس", "bg": "Барбадос", "de": "Barbados", "el": "Μπαρμπάντος", "en": "Barbados", "es": "Barbados", "fr": "Barbade", "hu": "Barbados", "it": "Barbados", "pl": "Barbados", "pt": "Barbados", "ro": "Barbados", "sq": "Barbadosi", "sr": "Барбадос", "tr": "Barbados" }, "country_code": "BB", "center": { "longitude": -59.618847, "latitude": 13.101827 }, "hids": [ 101, 102, 103 ], "hotels": [ "radisson_aquatica_resort_barbados", "spacious_colonial", "malfranza_apartments", "island_inn_all_inclusive_hotel", "hilton_barbados_resort", "sweetfield_manor_historic_inn_", "bellevue_plantation", "nautilus_beach_apartments", "walmer_lodge_apartments", "melbourne_apartments_3", "the_barbados_chi_centre", "paradise_villas_2", "beach_nest", "3_angels", "believe_caribbean_apartments", "bellevue_plantation_polo_club" ], "iata": "BGI", "id": 554, "type": "City", "name": { "ar": "بريدج تاون", "bg": null, "de": "Bridgetown", "el": "Bridgetown", "en": "Bridgetown", "es": "Bridgetown", "fr": "Bridgetown", "hu": null, "it": "Bridgetown", "pl": "Bridgetown", "pt": "Bridgetown", "ro": null, "sq": null, "sr": null, "tr": null } } Field details Expand this| Collapse this country_name Object The name of the region’s country in all languages available at Emerging Travel Group. country_code String The region country code in the ISO 3166-1 alpha-2 format. center [Object] Geographical coordinates of the region’s center. longitude Float The region’s center geographical longitude. latitude Float The region’s center geographical latitude. hids Object Array of internal hotel IDs. ℹ️ Field may be missing, null, or [ ] (empty array) if there are no items. hotels Object The list of hotel IDs that are located in the region. iata String Three-letter IATA code. id String The unique region ID. type String The type of the region where the hotel is located. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). name Object The name of the region in all languages available at Emerging Travel Group. To decompress the archive you can use, for example, a Zstandard plugin or 7-zip archive manager with Zstandard. Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Retrieve hotelpage Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/retrieve-hotelpage/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/hp/ https://api.worldota.net/api/b2b/v3/search/hp/ ℹ️ This call is required for the Recommended Flow (Prebook from Hotelpage). Request this call only when the user has chosen the hotel. Don’t request this call for each of the hotels found from the calls made by the SERP mechanism. The call gets the hotel available rates. Show this information to the user when they have chosen the hotel and want to see the rates. ℹ️ The limitations: The recommended rate lifetime is 30 minutes. The actual rate lifetime is longer and depends on different internal factors. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross. hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/hp/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-11-22", "checkout": "2026-11-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hid": 10004834, "currency": "USD", "filter": { "star_rating": [ 4 ], "kind": [ "Hotel" ], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/hp/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-11-22", "checkout": "2026-11-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hid": 10004834, "currency": "USD", "filter": { "star_rating": [], "kind": [], "meal_type": [] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. id String required or optional deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int required or optional The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. match_hash String optional The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] optional The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). upsells Object optional Whether additional services are needed or not. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. ℹ️ For step-by-step instructions and code examples on processing this field, see Upsells. early_checkin Object Whether early check-in is needed or not. time String optional The early check-in time (12-hour format with *_day_period; otherwise 24-hour format). late_checkout Object Whether late check-out is needed or not. time String optional The late check-out time (12-hour format with *_day_period; otherwise 24-hour format). multiple_eclc Boolean Whether all available early check-ins or check-outs for the rate are needed or not. only_eclc Boolean Whether the rates with only early check-in or late check-out are needed or not. Response Expand this| Collapse this hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from hotelpage step call. The value lifetime is 24 hours after you have got the available rate. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. perks String The additional services’ information. early_checkin [Object] The early check-in information. charge_price String The early check-in amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the early check-in is requested or not. show_price String The early check-in amount in the search currency. time String The early check-in time. late_checkout [Object] The late check-out information. charge_price String The late check-out amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the late check-out is requested or not. show_price String The late check-out amount in the search currency. time String The late check-out time. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. bar_rate_price_data Object Contains information about the BAR (Best Available Rate), which is the lowest publicly available rate for a hotel room. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. amount String The BAR price value in the currency specified by the currency_code field. It represents the lowest publicly available price for a room. currency_code String Currency of the BAR price. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "conrad_los_angeles", "hid": 10004834, "rates": [ { "book_hash": "h-14eb5985-5e2b-505d-b67f-113e20411698", "match_hash": "m-7c23a289-cef7-5ef5-919c-0fce06e7713d", "daily_prices": [ "306.09", "306.09", "306.09" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "70036.68", "show_amount": "918.26", "currency_code": "USD", "show_currency_code": "USD", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "126.66", "currency_code": "USD" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "135.00", "currency_code": "USD" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "937.00", "amount_net": "918.26", "amount_commission": "18.74" }, "charge": { "amount_gross": "71466.00", "amount_net": "70036.68", "amount_commission": "1429.32" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "70036.68", "amount_show": "918.26", "commission_info": { "show": { "amount_gross": "937.00", "amount_net": "918.26", "amount_commission": "18.74" }, "charge": { "amount_gross": "71466.00", "amount_net": "70036.68", "amount_commission": "1429.32" } } } ], "free_cancellation_before": null }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Double room (full double bed) (king size bed)", "room_name_info": { "original_rate_name": "Deluxe One King Bed" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "king-bed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room", "main_name": "Deluxe Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Лос-Анджелес", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "from 9-18 local time" } }, "is_package": false }, { "book_hash": "h-56055c91-a6f3-5b14-889c-53e2556f67f1", "match_hash": "m-453eb380-8110-5433-9b7a-762711fa7e46", "daily_prices": [ "321.77", "321.77", "321.77" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "73662.68", "show_amount": "965.30", "currency_code": "USD", "show_currency_code": "USD", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "133.14", "currency_code": "USD" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "135.00", "currency_code": "USD" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "985.00", "amount_net": "965.30", "amount_commission": "19.70" }, "charge": { "amount_gross": "75166.00", "amount_net": "73662.68", "amount_commission": "1503.32" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-11-12T02:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-11-12T02:00:00", "end_at": "2026-11-20T02:00:00", "amount_charge": "24505.88", "amount_show": "321.44", "commission_info": { "show": { "amount_gross": "328.00", "amount_net": "321.44", "amount_commission": "6.56" }, "charge": { "amount_gross": "25006.00", "amount_net": "24505.88", "amount_commission": "500.12" } } }, { "start_at": "2026-11-20T02:00:00", "end_at": null, "amount_charge": "73662.68", "amount_show": "965.30", "commission_info": { "show": { "amount_gross": "985.00", "amount_net": "965.30", "amount_commission": "19.70" }, "charge": { "amount_gross": "75166.00", "amount_net": "73662.68", "amount_commission": "1503.32" } } } ], "free_cancellation_before": "2026-11-12T02:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": { "amount": "1330.38", "currency_code": "USD" }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Double room (full double bed) (king size bed)", "room_name_info": { "original_rate_name": "Deluxe Room, 1 King Bed" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "non-smoking", "king-bed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room", "main_name": "Deluxe Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Лос-Анджелес", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "from 9-18 local time" } }, "is_package": false } ], "bar_price_data": { "hotel": { "price": "1330.38", "currency": "USD" }, "room_groups": [ { "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 0, "family": 0, "capacity": 0, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "price": "1399.50", "currency": "USD" }, { "rg_ext": { "class": 6, "quality": 20, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 } } ] } } ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/hp", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-04-16T19:19:00", "seconds_number": 60 }, "request": { "checkin": "2026-11-22", "checkout": "2026-11-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hid": 10004834, "currency": "USD", "filter": { "star_rating": [], "kind": [], "meal_type": [] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "bb8cb3201e92944fb8f9191cccf5b31d", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T19:18:06.432524" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The request body is invalid. core_search_error An internal search error. Has 500 status code. --- # Delete profile Source: https://docs.emergingtravel.com/docs/b2b-api/profiles/delete-profile/ https://api.worldota.net/api/b2b/v3/profiles/delete/ The call deletes a contract profile. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/profiles/delete/' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "john.smith@example.com" }' Request body Expand this| Collapse this email String required The profile email address. Response example { "data":null, "debug":null, "error":null, "status":"ok" } Errors The error field has the value specified in the headers below. users_profile_not_found The profile isn’t found. delete_users_profile_error An unknown error. To eliminate the error, contact the API support team. --- # Make order group overpay Source: https://docs.emergingtravel.com/docs/b2b-api/order-groups/make-order-group-overpay/ https://api.worldota.net/api/b2b/v3/ordergroup/pay/overpay/ HTTP/1.1 The call makes the payment for the existing order group from the overpay. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/ordergroup/pay/overpay/?data={%22invoice_id%22%3A%2212980-00236%22%2C%22amount%22%3A%22314.15%22}' Parameters Expand this| Collapse this amount String, Query required The order group amount. invoice_id String, Query required The order group ID. ℹ️ The minimum length is 1 character. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. invoice_already_paid The order group is already paid for. overpay_not_enough The overpay amount is less than the pay amount for the order group. invoice_not_found The order group with the invoice_id field value isn’t found. payment_amount_discrepancy The order group amount differs from the order group needed amount. ordergroup_is_being_paid The order group is currently being paid for. The payment is in processing. --- # Retrieve hotel reviews’ incremental dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-incremental-hotel-reviews-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/ https://api.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/ The call gets the dump with the hotel reviews of the ETG clients whose reviews have been added from the previous update. ℹ️ The dump: Is incremental. Should be updated every week. The ETG generates each archive for a single language. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. The ETG can’t share the TripAdvisor reviews via the API. Reviews indexing isn’t allowed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The maximum number of items in the dump is 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Retrieve single act Source: https://docs.emergingtravel.com/docs/b2b-api/documents/retrieve-single-act/ https://api.worldota.net/api/b2b/v3/hotel/order/document/single_act/download/ The call gets the order act. The act is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/document/single_act/download/?data={%22partner_order_id%22%3A%22asd123%22%2C%22show_b2b2c_price%22%3Atrue%2C%22add_commission%22%3Atrue%2C%22seal%22%3Atrue}' Parameters Expand this| Collapse this add_commission String, Query optional Whether the commission information is needed or not. partner_order_id String, Query required The external order ID. ℹ️ The minimum length is 1 character. seal String, Query optional Whether the seal is needed or not. show_b2b2c_price String, Query optional Whether the resale price needs to be shown or not. The price is taken instead of the amount_sell field value. Errors The error field has the value specified in the headers below. failed_to_generate_document The act is in generating. Try to request later. order_not_found The order with the partner_order_id field value isn’t found. order_not_assigned No contract is assigned to the order. single_act_is_not_downloadable The act is in processing. Try to request with the following field values in the past or today: Amount payable. Contract kind. Legal entity. Checkout date. --- # Prebook rate from hotelpage step Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/prebook-rate-from-hotelpage-step/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/prebook/ https://api.worldota.net/api/b2b/v3/hotel/prebook/ ℹ️ This call is recommended. If method is not used: The risk of receiving a soldout error at the booking stage increases. The order confirmation process will take longer. The call checks if the requested rate is still available before it can be booked and improves the booking success rate: When the original rate is not available, the system searches only for alternative rates of the same room type and board type (e.g., switching between refundable and non-refundable conditions within the price_increase_percent limit). The search does not extend to different room types or board types. If an alternative rate is found, new book_hash and match_hash values are returned. In cases where the same rate cannot be found and a price increase is permitted via the price_increase_percent field. The call will attempt to find the same room and board type at an increased price, but not exceeding the allowed percentage. The value in the payment_options field may change. ℹ️ The limitations: The recommended call timeout is 60 seconds. The minimum call timeout is 30 seconds. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission The following errors are not supported: no_available_rates, unknown, and contract_mismatch. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "h-027a29bc-eb54-5a23-a73c-07261af22c1b", "price_increase_percent": 20 }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "h-d01a824f-dcce-5932-af8d-8bafc6badc3b", "price_increase_percent": 20 }' Request body Expand this| Collapse this hash String required The unique rate ID. Use this value within 24 hours after the Retrieve hotelpage call returns a relevant rate. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. price_increase_percent Int optional The percentage by which the new price can be higher than the original price. For example, if you send price_increase_percent=20 and the starting price is 1,000, the maximum allowed price for this pre-book call is 1,200. If the value isn’t provided, the API will try to rebook with the same price or lower. ℹ️ The minimum value is 0. The maximum value is 100. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. changes Object The rate price change information. price_changed Boolean Whether the rate price is changed or not. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the book_hash field of the Create booking process call. The value lifetime is 6 hours after you have got the rate from the search results. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. Response example { "data": { "hotels": [ { "id": "conrad_los_angeles", "hid": 10004834, "rates": [ { "book_hash": "p-e7029d6b-7b28-4e99-893f-3434d5065f33", "match_hash": "m-afd54df0-5f86-5b45-b011-4a94ccd81e43", "daily_prices": [ "329.61", "329.61", "329.61" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "75446.28", "show_amount": "988.82", "currency_code": "USD", "show_currency_code": "USD", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "136.39", "currency_code": "USD" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "135.00", "currency_code": "USD" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1009.00", "amount_net": "988.82", "amount_commission": "20.18" }, "charge": { "amount_gross": "76986.00", "amount_net": "75446.28", "amount_commission": "1539.72" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "75446.28", "amount_show": "988.82", "commission_info": { "show": { "amount_gross": "1009.00", "amount_net": "988.82", "amount_commission": "20.18" }, "charge": { "amount_gross": "76986.00", "amount_net": "75446.28", "amount_commission": "1539.72" } } } ], "free_cancellation_before": null }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 17, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Premium Double room (full double bed) (king size bed)", "room_name_info": { "original_rate_name": "Premium One King Bed" }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "non-smoking", "king-bed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Premium Double room", "main_name": "Premium Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Лос-Анджелес", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "с 9 до 18 по местному времени" } }, "is_package": false } ], "bar_price_data": null } ], "changes": { "price_changed": false } }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/prebook", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-04-16T20:19:00", "seconds_number": 60 }, "request": { "hash": "h-d01a824f-dcce-5932-af8d-8bafc6badc3b", "price_increase_percent": 20 }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "969d452ece3347081865c46265cae077", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:18:14.564703" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. no_available_rates The rate with the price_increase_percent field value isn’t found. Try to change the value. rate_not_found The rate with the hash field value isn’t found. The hash field value has expired. Send another search request and change the hash field value. invalid_params The hash field is required. The hash field value is incorrect. The price_increase_percent field value is less than 0. unknown The internal ETG services’ timeout. prebook_disabled There is no permission to use this call for this contract. Contact the API support team. contract_mismatch The pre-book contract differs from the rate contract. They should be the same. --- # Retrieve point of interest dump Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-point-of-interest-dump/ https://api.worldota.net/api/b2b/v3/hotel/poi/dump The call returns a dump with a list of hotels by various locations along with nearby points of interest (POI). ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Content indexing isn’t allowed. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/poi/dump' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' Response Expand this| Collapse this language Int required or optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour "last_update": "2025-09-15T04:47:20Z" }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/poi/dump", "is_active": true, "is_limited": true, "remaining": 98, "requests_number": 100, "reset": "2025-09-17T00:00:00", "seconds_number": 86400 }, "request": { "language": "en" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "3234913e4c9dc04f843410ecd098a596", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-09-16T16:14:50.755175" }, "status": "ok", "error": null } Dump file structure The file available at the url contains the following structure: [ { "id": "string", "hid": 12345, "pois": [ { "poi_name": "string", "poi_name_en": "string", "poi_type": "string", "poi_subtype": "string", "distance": 321 } ] } ] Field details Expand this| Collapse this hotel [Object] Describes a hotel, providing its unique identifiers together with a list of associated points of interest (POI). id [String] The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. pois [Object] The list of nearby points of interest (POI) associated with this hotel. poi_name String The name of the point of interest in the local language. poi_name_en String The name of the point of interest in English. poi_type String The main category or type of the point of interest (e.g., beach, airport, attraction). ℹ️ The possible values: Unspecified, Continent. Country. Multi-Region (within a country). Province (State). Multi-City (Vicinity). City. Airport. Bus Station. Railway Station. Subway (Entrace). Neighborhood. Point of Interest. Multi-Railway Station. Main Railway Station. poi_subtype String A more specific category or subtype of the point of interest. ℹ️ The possible values: unspecified, administrative_center. arenas_and_stadiums. bars_and_restaurants. beach. buddist_temple. business_center. cableway. casino_and_gambling. church. concerts_and_performances. educational_objects. entertainment_and_games. harbor. historical_poi. hospital. library. mosque. museum. park. shopping. ski. theater. viewpoint. water_parks_and_amusement_parks. zoos_and_aquariums. distance Int The distance from the hotel to the point of interest, in meters. Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Prebook rate from search step Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/prebook-rate-from-search-step/ This call is available upon request. Please contact our API support team to gain access. Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/serp/prebook/ https://api.worldota.net/api/b2b/v3/serp/prebook/ ℹ️ This call is recommended. If method is not used: The risk of receiving a soldout error at the booking stage increases. The order confirmation process will take longer. Request this call right after the SERP calls withing 38 minutes. The call checks if the requested rate is still available before it can be booked and improves the booking success rate: When the original rate is not available, the system searches only for alternative rates of the same room type and board type (e.g., switching between refundable and non-refundable conditions within the price_increase_percent limit). The search does not extend to different room types or board types. If an alternative rate is found, new book_hash and match_hash values are returned. In cases where the same rate cannot be found and a price increase is permitted via the price_increase_percent field. The call will attempt to find the same room and board type at an increased price, but not exceeding the allowed percentage. The value in the payment_options field may change. ℹ️ The limitations: The recommended call timeout is 60 seconds. The minimum call timeout is 30 seconds. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission The following errors are not supported: no_available_rates, unknown. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/serp/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "sr-019975cf-b533-71e1-975c-a8fd3fa72d3e", "price_increase_percent": 20 }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/serp/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "sr-019d97d3-f8ef-70e7-b3c8-d9886d2164b0", "price_increase_percent": 20 }' Request body Expand this| Collapse this hash String required The unique rate ID. ℹ️ Get this value from the search_hash field of the calls: Search by hotel IDs. Search by geo coordinates. Search by region. Use this value within 6 hours after you have got the rate. The minimum length is 1 character. The maximum length is 256 characters. price_increase_percent Int optional The percentage by which the new price can be higher than the original price. For example, if you send price_increase_percent=20 and the starting price is 1,000, the maximum allowed price for this pre-book call is 1,200. If the value isn’t provided, the API will try to rebook with the same price or lower. ℹ️ The minimum value is 0. The maximum value is 100. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. changes Object The rate price change information. price_changed Boolean Whether the rate price is changed or not. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the book_hash field of the Create booking process call. The value lifetime is 6 hours after you have got the rate from the search results. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. bar_rate_price_data Object Contains information about the BAR (Best Available Rate), which is the lowest publicly available rate for a hotel room. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. amount String The BAR price value in the currency specified by the currency_code field. It represents the lowest publicly available price for a room. currency_code String Currency of the BAR price. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "dukes_dubai", "hid": 8663536, "rates": [ { "book_hash": "p-ca1f9fef-bcf7-461e-a0d1-00850ffd10bb", "match_hash": "m-d0b85aee-3e6e-556b-a9b6-d98b084764ff", "daily_prices": [ "605.97", "605.97", "605.97" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "163377.76", "show_amount": "1817.90", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "EUR", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "103.44", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "162.91", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "73.88", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1855.00", "amount_net": "1817.90", "amount_commission": "37.10" }, "charge": { "amount_gross": "166712.00", "amount_net": "163377.76", "amount_commission": "3334.24" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-08T22:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-10-08T22:00:00", "end_at": "2026-10-14T22:00:00", "amount_charge": "54393.92", "amount_show": "605.64", "commission_info": { "show": { "amount_gross": "618.00", "amount_net": "605.64", "amount_commission": "12.36" }, "charge": { "amount_gross": "55504.00", "amount_net": "54393.92", "amount_commission": "1110.08" } } }, { "start_at": "2026-10-14T22:00:00", "end_at": null, "amount_charge": "163377.76", "amount_show": "1817.90", "commission_info": { "show": { "amount_gross": "1855.00", "amount_net": "1817.90", "amount_commission": "37.10" }, "charge": { "amount_gross": "166712.00", "amount_net": "163377.76", "amount_commission": "3334.24" } } } ], "free_cancellation_before": "2026-10-08T22:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 17, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Premium Double room (full double bed) (bed type is subject to availability)", "room_name_info": { "original_rate_name": "Premium Room " }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 99, "amenities_data": [ "not-guaranteed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Premium Double room", "main_name": "Premium Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Отель Dukes The Palm Dubai", "address": "Palm Jumeirah, Dubai, Дубай", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "с 9 до 18 по местному времени" } }, "is_package": false } ], "bar_price_data": null } ], "changes": { "price_changed": false } }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/serp/prebook", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-04-16T20:00:00", "seconds_number": 60 }, "request": { "hash": "sr-019d97d3-f8ef-70e7-b3c8-d9886d2164b0", "price_increase_percent": 20 }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "386c74eff7c700ac70c55ab501d97faf", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T19:59:32.918838" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. no_available_rates The rate with the price_increase_percent field value isn’t found. Try to change the value. rate_not_found The rate with the hash field value isn’t found. The hash field value has expired. Send another search request and change the hash field value. invalid_params The hash field is required. The hash field value is incorrect. The price_increase_percent field value is less than 0. unknown The internal ETG services’ timeout. prebook_from_serp_disabled There is no permission to use this call for this contract. Contact the API support team. contract_mismatch The pre-book contract differs from the rate contract. They should be the same. --- # Retrieve hotel static data Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-hotel-static-data/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/static/ https://api.worldota.net/api/b2b/v3/hotel/static/ The call gets descriptions and translations for the static parameters of the hotels and rooms. Renew the dump every month. Sandbox limitations No changes. Response Expand this| Collapse this beddings [Object] The list of room beddings. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. meals [Object] The list of the hotel meal types. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. room_amenities [Object] The list of room amenities. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. serp_filters [Object] The list of hotel amenities. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. socket_types [Object] The reference list of all supported socket types. ℹ️ Use this field to map the socket type codes to their human-readable names and translations. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. taxes [Object] The list of rate taxes. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. amenity_translations [Object] Amenity names translated into different languages for various types of accommodation (e.g., apartments, hotels, etc.). slug String Amenity identifier used as a key for integration. kind String Type of accommodation for which this amenity is relevant (e.g., APARTMENT). name [Object] List of translations of the amenity name in different languages. lang String Language code according to ISO 639-1. value String Translation of the amenity name in the specified language. amenities [Object] A list with detailed translations of descriptive amenity information for various languages. Provides more specific information in addition to amenity_translations. name [Object] List of translations of the amenity name in different languages. lang String Language code according to ISO 639-1. value String Translation of the detailed amenity description in the specified language. Response example { "data": { "beddings": [ { "locale": { "ar": "سريرين مفرّدين", "bg": "2 единични легла", "cs": "2 samostatné postele" }, "name": "twin" }, { "locale": { "ar": "سرير بطابقين", "bg": "Двуетажно легло", "cs": "Patrová postel" }, "name": "sofa-bed" } ], "meals": [ { "locale": { "ar": "العشاء", "bg": "Вечеря", "cs": "Večeře" }, "name": "dinner" }, { "locale": { "ar": "وجبات الإفطار والغداء والعشاء مشمولة", "bg": "С включени закуска, обяд и вечеря", "cs": "Snídaně, oběd a večeře v ceně" }, "name": "breakfast" } ], "room_amenities": [ { "locale": { "ar": "سرير الأطفال مشمول", "bg": "С включено детско легло", "cs": "Dětská postel je zahrnuta v ceně" }, "name": "child-bed" }, { "locale": { "ar": "سرير الأطفال غير مشمول", "bg": "Не е включено детско легло", "cs": "Dětská postel není zahrnuta v ceně" } } ], "taxes": [ { "locale": { "ar": "ضريبة القيمة المضافة", "bg": "ДДС", "cs": "DPH" }, "name": "vat" }, { "locale": { "ar": "رسوم المنتجع", "bg": "Курортна такса", "cs": "Rekreační poplatek" } } ], "serp_filters": [ { "locale": { "ar": "الانتقال بمصعد التزلج", "bg": "Трансфер до ски лифта", "cs": "Transfer k lyžařskému vleku" }, "name": "has_ski_shuttle" }, { "locale": { "ar": "مطبخ", "bg": "Кухня", "cs": "Kuchyň" } } ], "socket_types": [ { "locale": { "ar": "مقبس أمريكي (غير مؤرض)", "bg": "американски контакт (заземен)", "cs": "Americká zásuvka (bez uzemnění)" }, "name": "a" }, { "locale": { "ar": "مقبس أمريكي (مؤرض)", "bg": "американски контакт (заземен)", "cs": "Americká zásuvka (s uzemněním)" } } ], "amenity_translations": [ { "slug": "has_parking", "kind": "APARTMENT", "name": [ { "lang": "tr", "value": "Parking" }, { "lang": "fi", "value": "Parking" }, { "lang": "fr", "value": "Parking" } ] }, { "slug": "has_disabled_support", "kind": "APARTMENT", "name": [ { "lang": "kk", "value": "Инклюзивтілік" }, { "lang": "uk", "value": "Інклюзивність" }, { "lang": "sq", "value": "Inklusivitet" } ] } ], "amenities": [ { "name": [ { "lang": "he", "value": "חניה מחוץ לאתר בחינם" }, { "lang": "hu", "value": "Ingyenes parkolás a helyszínen kívül" }, { "lang": "kk", "value": "Қонақ үйден тыс тегін тұрақ" } ] } ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/static", "is_active": true, "is_limited": true, "remaining": 98, "requests_number": 100, "reset": "2026-03-03T00:00:00", "seconds_number": 86400 }, "request": {}, "method": "GET", "real_ip": "104.30.161.77", "request_id": "e65b239ba9daff01d9b0f37a021a8a66", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-03-02T11:51:20.794630" }, "status": "ok", "error": null } --- # Retrieve rate info Source: https://docs.emergingtravel.com/docs/b2b-api/hotel-search/retrieve-rate-info/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/lookuprate/ https://api.worldota.net/api/b2b/v3/search/lookuprate/ The call gets one hotel rate. The response format is as in the Retrieve hotelpage call. ⚠️ To have permission to the call with your API key, contact the API support team. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The input value for the language field is ignored; it is always set to en. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission For all objects containing the currency_code field, its value is always set to USD. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/lookuprate/' \ --header 'Content-Type: application/json' \ --data '{ "book_hash": "h-7e16d7a9-fe3c-5ba0-8aa1-0ea5b851afe7", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/lookuprate/' \ --header 'Content-Type: application/json' \ --data '{ "book_hash": "h-7e16d7a9-fe3c-5ba0-8aa1-0ea5b851afe7", "language": "en" }' Request body Expand this| Collapse this book_hash String required The unique rate ID used to identify the selected rate. ℹ️ Use the value of the book_hash field from one of the calls: Prebook rate from hotelpage step. Prebook rate from search step. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this original_request_params [Object] Information about the request body from the Retrieve hotelpage call. checkin String The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String The check-out date. The value must be not later than 30 days from the checkin field value. residency String The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. guests [Object] The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from hotelpage step call. The value lifetime is 24 hours after you have got the available rate. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. perks String The additional services’ information. early_checkin [Object] The early check-in information. charge_price String The early check-in amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the early check-in is requested or not. show_price String The early check-in amount in the search currency. time String The early check-in time. late_checkout [Object] The late check-out information. charge_price String The late check-out amount in the charge (contract) currency. commission_info [Object] The commission information. charge [Object] The commission information in the charge (contract) currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. show [Object] The commission information in the requested currency. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. is_requested Boolean Whether the late check-out is requested or not. show_price String The late check-out amount in the search currency. time String The late check-out time. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Every payment goes under a credit limit for the deposit. vat_data Object The rate VAT information. amount String The VAT amount in the currency specified by the currency_code field. If the value is 0, it means that the rate is without VAT. Otherwise, the rate includes VAT. applied Boolean Whether the VAT is applied or not. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Whether the VAT is included or not. If the value is false, it means that the rate is without VAT. Otherwise, the rate includes VAT. value Float deprecated The VAT amount in the currency of this object currency_code field value. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. bar_rate_price_data Object Contains information about the BAR (Best Available Rate), which is the lowest publicly available rate for a hotel room. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. amount String The BAR price value in the currency specified by the currency_code field. It represents the lowest publicly available price for a room. currency_code String Currency of the BAR price. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. sell_price_limits Object Information on the restrictions on the final selling price for the client. ℹ️ This field is available only upon request. Please contact your account manager if you need access to this data. If not null, the final selling price should be: Within the min_price and max_price field values. In the search currency. min_price String The minimum final selling price for the client in the search currency. max_price String The maximum final selling price for the client in the search currency. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "conrad_los_angeles", "hid": 10004834, "rates": [ { "book_hash": "h-7e16d7a9-fe3c-5ba0-8aa1-0ea5b851afe7", "match_hash": "m-850df586-6e03-5044-ba4f-4f5d0d7e8651", "daily_prices": [ "299.00" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "27062.00", "show_amount": "299.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "USD", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "41.24", "currency_code": "EUR" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "45.00", "currency_code": "USD" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "299.00", "amount_net": "299.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "27062.00", "amount_net": "27062.00", "amount_commission": "0.00" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-05-18T07:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-05-18T07:00:00", "end_at": null, "amount_charge": "27062.00", "amount_show": "299.00", "commission_info": { "show": { "amount_gross": "299.00", "amount_net": "299.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "27062.00", "amount_net": "27062.00", "amount_commission": "0.00" } } } ], "free_cancellation_before": "2026-05-18T07:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": { "amount": "390.00", "currency_code": "EUR" }, "rg_ext": { "class": 3, "quality": 17, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Premium Double room (full double bed) (king size bed)", "room_name_info": { "original_rate_name": "Premium One King Bed" }, "serp_filters": [ "has_bathroom", "has_internet" ], "sell_price_limits": null, "allotment": 1, "amenities_data": [ "king-bed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Premium Double room", "main_name": "Premium Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed" }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Los Angeles", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "from 9-18 local time" } }, "is_package": false } ], "bar_price_data": null } ], "original_request_params": { "checkin": "2026-05-25", "checkout": "2026-05-26", "guests": [ { "adults": 2, "children": [] } ], "residency": "us" } }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/lookuprate", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-01-16T12:51:00", "seconds_number": 60 }, "request": { "book_hash": "h-7e16d7a9-fe3c-5ba0-8aa1-0ea5b851afe7", "language": "en" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "8d5ca365f5f455d978060d43e2e293a9", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-01-16T12:50:21.366240" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The book_hash field is required. contract_mismatch An attempt to make the to check the rate found with the different contract. rate_not_found The rate with the book_hash field value isn’t found. The book_hash field value has expired. Send another search request and change the book_hash field value. core_search_error An internal search error. Has 500 status code. --- # Retrieve hotel content Source: https://docs.emergingtravel.com/docs/b2b-api/static-content/retrieve-hotel-content/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/ https://api.worldota.net/api/b2b/v3/hotel/info/ The call searches for static hotel data by hotel ID. Use this call in the following cases: An available hotel isn’t included in the hotel data dump. This can happen with new hotels in the ETG inventory. You want to check the hotel content for potential updates before making a booking. ℹ️ Limitations: The maximum number of requests is 30 per 60 seconds. ⚠️ Any internal content such as photos, descriptions, and others can’t be indexed; this isn’t allowed. Any public content such as name, address, amenities, and policies can be indexed. If you try to download all images from CDN without a corresponding search request by the user, your IP address will be blocked. To avoid being blocked, send the custom User-Agent header with the following information: Required: PartnerName; ClientVersion. Optional: ClientTechnicalDetails. Example: RatehawkPartner/1.0 (python-requests/2.18.4). Please use a single channel for downloading (limit requests to 30 per 60 seconds). Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The hid field is not supported yet. The value of the language field is always set to en. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/' \ --header 'Content-Type: application/json' \ --data '{ "hid": "10004834", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/' \ --header 'Content-Type: application/json' \ --data '{ "hid": "10004834", "language": "en" }' Request body Expand this| Collapse this id String required or optional deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int required or optional The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. language Int required or optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this address String The hotel physical address. amenity_groups [Object] The hotel amenities list divided in groups. For example, Health and Safety Measures, Beauty and wellness. ℹ️ The full list of supported group values is available in the amenity_translations directory. amenities [String] The list of amenities inside the group. group_name String The amenity group name. non_free_amenities [String] The list of additional non-free services. check_in_time String The check-in time. Local time in HH:MM:SS format (24-hour). check_in_time_end String The latest allowed check-in time in 24-hour format, or empty if unspecified. check_out_time String The check-out time. The local time in the HH:MM:SS format (24-hour). description_struct Object The list of hotel descriptions divided into paragraphs. ℹ️ Store and display it in the UI, but do not index it or use it for internal search queries or SEO. paragraphs [String] The description itself. title String The description title. email String The hotel email address. hotel_chain String The hotel chain name. id [String] deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. images [String] deprecated The list of the URLs for the hotel images. ⚠️ Please use the images_ext field instead of this one. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. images_ext [Object] Information about the hotel images divided into categories. category_slug String The hotel image category. ℹ️ The possible values: unspecified — unspecified. balcony — balconies. bathroom — bathrooms. beach — beaches. business — business zone. entertainment — entertainment zones. exterior — hotel exterior. guest_rooms — guest rooms. hotel_front — hotel front. hotel_rooms — hotel rooms. lobby — lobby. meal — meals. outside — hotel outside view. pool — pools. spa — SPA zones. sports — sport zones. children — children zones. miscellaneous — other. url String The URL for the hotel image. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. kind String The hotel type. ℹ️ The possible values: Unspecified, Resort. Sanatorium. Guesthouse. Mini-hotel. Castle. Hotel. Boutique_and_Design. Apartment. Cottages_and_Houses. Farm. Villas_and_Bungalows. Camping. Hostel. BNB. Glamping. Apart-hotel. latitude Float The hotel geographical latitude. longitude Float The hotel geographical longitude. name String The hotel name. metapolicy_struct Object The additional accommodation conditions. Is the same as the section “Hotel policies” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from this param must be shown. ℹ️ For step-by-step instructions and code examples on processing this field, see Metapolicy_struct. add_fee [Object] required The additional services, fees, and taxes information. currency String required The additional services, fees, and taxes price currency. Is the same as the hotel currency. fee_type String required The additional service type. ℹ️ The possible values: unspecified. television. towels. conditioning. housekeeping. heating. refrigerator. utility. safe. microwave. luggage_storage. tour_guide. bicycle_rental. baby_highchair. bed_linen. towels_only. luggage_storage_apartment. luggage_storage_office. price String required The additional services, fees, and taxes price in the hotel currency. price_unit String required The additional service price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. check_in_check_out [Object] required The check-in and check-out policies’ information. check_in_check_out_type String required The check-in or check-out type. ℹ️ The possible values: unspecified. early_checkin. late_checkout. holiday_checkin. holiday_checkout. currency String required The check-in and check-out price currency. Is the same as the hotel currency. inclusion String required The check-in and check-out inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The check-in or check-out price in the hotel currency. children [Object] required The children extra beds’ policy information. age_start Int required The minimum child age for the children extra bed policy being applied. age_end Int required The maximum child age for the children extra bed policy being applied. currency String required The child extra bed price currency. Is the same as the hotel currency. extra_bed String required The extra bed for a child availability. ℹ️ The possible values: unspecified. available. unavailable. price String required The child extra bed price in the hotel currency. children_meal [Object] required The children meals’ policy information. age_start Int required The minimum child age for the children meal policy being applied. age_end Int required The maximum child age for the children meal policy being applied. currency String required The children meal price currency. Is the same as the hotel currency. inclusion String required The children meal inclusion. ℹ️ The possible values: unspecified. included. not_included. meal_type String required The children meal type. ℹ️ The possible values: unspecified. all-inclusive. breakfast. breakfast-buffet. continental-breakfast. dinner. full-board. half-board. lunch. nomeal. some-meal. english-breakfast. american-breakfast. asian-breakfast. chinese-breakfast. israeli-breakfast. japanese-breakfast. scandinavian-breakfast. scottish-breakfast. breakfast-for-1. breakfast-for-2. super-all-inclusive. soft-all-inclusive. ultra-all-inclusive. half-board-lunch. half-board-dinner. price String required The children meal price in the hotel currency. cot [Object] required The cots’ policy information. amount Int required The available cot number. currency String required The cot price currency. Is the same as the hotel currency. inclusion String required The cot inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The cot price in the hotel currency. price_unit String required The cot price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. deposit [Object] required The deposit information. availability String required The deposit availability. ℹ️ The possible values: unspecified. available. unavailable. currency String required The deposit amount currency. Is the same as the hotel currency. deposit_type String required The deposit type. ℹ️ The possible values: unspecified. pet. breakage. keys. payment_type String required The deposit payment type. ℹ️ The possible values: unspecified. cash. card. price String required The deposit amount in the hotel currency. price_unit String required The deposit amount unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. pricing_method String required The deposit pricing method. ℹ️ The possible values: unspecified. percent. fixed. extra_bed [Object] required The adult extra beds’ policy information. amount Int required The available extra bed number. currency String required The extra bed price currency. Is the same as the hotel currency. inclusion String required The extra bed inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The extra bed price in the hotel currency. price_unit String required The extra bed price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. internet [Object] required The internet policy information. currency String required The internet price currency. Is the same as the hotel currency. inclusion String required The internet inclusion. ℹ️ The possible values: unspecified. included. not_included. internet_type String required The internet type. ℹ️ The possible values: unspecified. wireless. wired. price String required The internet price in the hotel currency. price_unit String required The internet price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. work_area String required The internet coverage area. ℹ️ The possible values: unspecified. hotel. room. meal [Object] required The adult meals’ policy information. currency String required The meal price currency. Is the same as the hotel currency. inclusion String required The meal inclusion. ℹ️ The possible values: unspecified. included. not_included. meal_type String required The meal type. ℹ️ The possible values: unspecified. all-inclusive. breakfast. breakfast-buffet. continental-breakfast. dinner. full-board. half-board. lunch. nomeal. some-meal. english-breakfast. american-breakfast. asian-breakfast. chinese-breakfast. israeli-breakfast. japanese-breakfast. scandinavian-breakfast. scottish-breakfast. breakfast-for-1. breakfast-for-2. super-all-inclusive. soft-all-inclusive. ultra-all-inclusive. half-board-lunch. half-board-dinner. price String required The meal price in the hotel currency. no_show [Object] required The no-show policy information. availability String required The no-show availability. ℹ️ The possible values: unspecified. available. unavailable. day_period String required The time period related to the time value, used for fields with a 12-hour format. ℹ️ The possible values: unspecified — period is not specified; use with caution. before_midday — AM (before 12:00 noon). after_midday — PM (after 12:00 noon). time String required The applicable time for no-show. The local time in the HH:MM:SS format (24-hour). parking Object required The parking policy information. currency String required The parking price currency. Is the same as the hotel currency. inclusion String required The parking inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The parking price in the hotel currency. price_unit String required The parking price unit. ℹ️ The possible values: unspecified. per_car_per_night. per_car_per_stay. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. territory_type String required The parking territory type. ℹ️ The possible values: unspecified. on_side. off_side. pets [Object] required The pets’ accommodation policy information. currency String required The pet accommodation price currency. Is the same as the hotel currency. inclusion String required The pet accommodation inclusion. ℹ️ The possible values: unspecified. included. not_included. pets_type String required The pet weight type. ℹ️ The possible values: unspecified — no information on the pet weight. lt_5kg — the pet weight is less than 5 kg. gt_5kg — the pet weight is greater than 5 kg. price String required The pet accommodation price in the hotel currency. price_unit String required The pet accommodation price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. shuttle [Object] required The shuttles’ policy information. currency String required The shuttle price currency. Is the same as the hotel currency. destination_type String required The shuttle destination type. ℹ️ The possible values: unspecified. airport. train. ship. airport_train. inclusion String required The shuttle inclusion. ℹ️ The possible values: unspecified. included. not_included. shuttle_type String required The shuttle type. ℹ️ The possible values: unspecified. one_way. two_ways. price String required The shuttle price in the hotel currency. visa [Object] required The visa support policy information. visa_support String required The visa support for the embassy of the hotel country. ℹ️ The possible values: unspecified — no information on the visa support. support_enable — the visa supported is available. metapolicy_extra_info String The additional hotel information. Is the same as the section “Extra info” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from the field must be shown to the end user. phone String The hotel phone number. policy_struct [Object] deprecated The additional accommodation conditions. Is the same as the section “Important - Please Note” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from the field is obligatory for showing to the end user. paragraphs [String] The policy itself. title String The policy title. postal_code String The hotel postal code. region Object The region where the hotel is located. country_code String Hotel’s country code (capital Latin letters, according to ISO 3166-1 alpha-2 standard). iata String The region airport IATA code. id String deprecated The unique ID of the region where the hotel is located. name String The name of the region where the hotel is located. type String The type of the region where the hotel is located. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). room_groups Object The list of the hotel room groups. images [String] deprecated The list of the URLs for the room images. ⚠️ Please use the images_ext field instead of this one. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. images_ext [Object] Information about the room images divided into categories. category_slug String The room image category. ℹ️ The possible values: unspecified — unspecified. balcony — balconies. bathroom — bathrooms. beach — beaches. business — business zone. entertainment — entertainment zones. exterior — hotel exterior. guest_rooms — guest rooms. hotel_front — hotel front. hotel_rooms — hotel rooms. lobby — lobby. meal — meals. outside — hotel outside view. pool — pools. spa — SPA zones. sports — sport zones. children — children zones. miscellaneous — other. url String The URL for the room image. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. name String The full room name. room_amenities [String] The room amenities list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. room_group_id Int deprecated The room ID. rg_ext Object The room ID. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. 8 — chair-bed. 9 — sofa. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuple. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. size Number Room area in square meters. ℹ️ This parameter is available only via the Content API for partners with the relevant feature enabled. To activate it, please contact your account manager and ensure a supplementary agreement is signed. Not available in data dumps. name_struct Object The structured room name. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. star_rating Int The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The minimum value is 0. The maximum value is 5. serp_filters [String] The list of amenities for the hotel selection based on a cumulative set of features from: All the hotels’ rates. And common hotels’ features. To get all available room amenities and their definitions, use the serp_filters field from the Retrieve hotel static data call. star_certificate Object Information about the hotel star certificate. Applicable only for hotels in some specific countries. Has the null value if there is no information about the star certificate. valid_to String The valid true date. certificate_id String The certificate ID. Has the null value if there is no information about the certificate ID. is_closed Boolean Whether the hotel property is closed or not. keys_pickup Object Information about how to pick up the hotel room keys. type String The picking-up type. ℹ️ The possible values: unspecified — no instructions. phone — get the keys with a call. To get the instructions, call the phone number in the phone field of this object. address — get the keys on the address specified in the apartment_office_address field of this object. smartlock — get the keys in a smart lock. Can be opened with an app or code. keypad — get the keys in a lock with a keypad. lockbox — get the keys in a lock box. reception — get the keys at the 24-hour reception. phone String The phone number for contacting purposes. The phone number must be valid. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. is_contactless Boolean Whether the hotel room keys’ pick-up is contactless or not. email String The email address for contacting purposes. The email address must be valid. apartment_office_address String The actual pick-up reception address. apartment_extra_information String The additional pick-up information. distance_center Number Distance from the property to the city center, in meters. ℹ️ This parameter is available only via the Content API for partners with the relevant feature enabled. To activate it, please contact your account manager and ensure a supplementary agreement is signed. Not available in data dumps. facts Object The hotel information. floors_number Int The floors number. register Object Information about the hotel registration in the FSA register. Applicable only for hotels in some specific countries. Has the null value if there is no information about the registration. record String Registration number in the FSA register. link String Link to the FSA register. email String The hotel email address in the FSA register. phone String The hotel phone number in the FSA register. status String Status of the object in the FSA register. Determines whether the object can be displayed and sold. Possible values: Active — the object can be both displayed and sold. Suspended — the object can be displayed, but selling is not available. Terminated — the object cannot be displayed or sold. Unspecified — status is unknown, used for unexpected values from an external source. kind String The hotel type in the FSA register. ℹ️ The possible values: unspecified — hotel type is not specified. hotel — classic hotel. camping — camping, accommodation in nature (tents, cabins, etc.). resort — resort hotel, often with leisure or recreational facilities. sanatorium — sanatorium, health and wellness facility. guesthouse — guesthouse, small private accommodation. name String Name of the hotel in the FSA register. address String The hotel address in the FSA register. status_end_date String Expiry date of the object in the FSA register. rooms Object Information about hotel rooms from the FSA register. rooms_count Int Number of rooms by category. category_type String Name of room categories. fsa_kind String cancelled The hotel type in the FSA register. ℹ️ The possible values: unspecified — hotel type is not specified. hotel — classic hotel. camping — camping, accommodation in nature (tents, cabins, etc.). resort — resort hotel, often with leisure or recreational facilities. sanatorium — sanatorium, health and wellness facility. guesthouse — guesthouse, small private accommodation. fsa_name String cancelled Name of the hotel in the FSA register. rooms_number Int The rooms number. year_built Int The construction year. year_renovated Int The renovation year. electricity Object The socket type. frequency [Int] The sockets’ frequency. voltage [Int] The sockets’ voltage. sockets [String] The socket types. To get all available socket types and their definitions, use the socket_types field from the Retrieve hotel static data call. payment_methods [String] The card types accepted at the hotel when pay there. ℹ️ The possible values: unspecified — unspecified. american_express — American Express. cash — cash. china_unionpay — China UnionPay. diners_club — Diners Club International. euro_mastercard — Euro/Mastercard. jcb — JCB. maestro — Maestro. master_card — Mastercard. switch_maestro — Switch (Maestro). visa — Visa. visa_debit — Visa Debit. vise_delta — Visa Delta. visa_electron — Visa Electron. pro100 — Pro100. front_desk_time_start String The reception opening time. The local time in the HH:MM:SS format. front_desk_time_end String The reception closing time. The local time in the HH:MM:SS format. is_gender_specification_required Boolean Whether the guests’ gender is required by the hotel or not. Response example { "data": { "address": "100 South Grand Avenue, Los Angeles", "amenity_groups": [ { "amenities": [ "Air conditioning", "24-hour reception" ], "non_free_amenities": null, "group_name": "General" }, { "amenities": [ "Room service" ], "non_free_amenities": null, "group_name": "Rooms" }, { "amenities": [ "Ironing", "Laundry" ], "non_free_amenities": [ "Ironing" ], "group_name": "Services and amenities" } ], "check_in_time": "15:00:00", "check_in_time_end": "15:00:00", "check_out_time": "12:00:00", "description_struct": [ { "paragraphs": [ "Hotel «Conrad Los Angeles» is located in Los Angeles, near the city center." ], "title": "Location" }, { "paragraphs": [ "Free Wi-Fi is available. There is a parking zone." ], "title": "At the hotel" } ], "email": "", "hotel_chain": "Hilton Hotels & Resorts", "hid": 10004834, "id": "conrad_los_angeles", "images_ext": [ { "url": "https://cdn.worldota.net/t/{size}/content/df/1a/df1aeffad82e3fa22007e2008389d20d9374202b.jpeg", "category_slug": "exterior" }, { "url": "https://cdn.worldota.net/t/{size}/content/76/03/760379401030405fd3775a18b6edb0cf1f8971f5.jpeg", "category_slug": "lobby" } ], "kind": "Hotel", "latitude": 34.055176, "longitude": -118.24855, "name": "Conrad Los Angeles", "metapolicy_struct": { "add_fee": [], "check_in_check_out": [], "children": [], "children_meal": [], "cot": [], "deposit": [ { "availability": "available", "currency": "USD", "deposit_type": "unspecified", "payment_type": "unspecified", "price": "300", "price_unit": "per_room_per_night", "pricing_method": "fixed" } ], "extra_bed": [], "internet": [], "meal": [], "no_show": { "availability": "unspecified", "day_period": "unspecified", "time": "" }, "parking": [], "pets": [ { "currency": "USD", "inclusion": "not_included", "pets_type": "unspecified", "price": "100", "price_unit": "per_room_per_stay" } ], "shuttle": [], "visa": { "visa_support": "unspecified" } }, "metapolicy_extra_info": "Front desk is open 24/7.\nGuests are required to show a photo identification and credit card upon check-in.", "phone": "+12133498585", "policy_struct": [ { "paragraphs": [ "Meals included are indicated in the rate details." ], "title": "Meals" } ], "postal_code": "90012", "region": { "country_code": "US", "iata": "LAX", "id": 2011, "name": "Los Angeles", "type": "City" }, "room_groups": [ { "name": "Deluxe room", "images": [ "https://cdn.worldota.net/t/{size}/content/c0/de/c0dea9e5760f33c2b101ed14577e168b3f36c74f.jpeg" ], "images_ext": [ { "url": "https://cdn.worldota.net/t/{size}/content/c0/de/c0dea9e5760f33c2b101ed14577e168b3f36c74f.jpeg", "category_slug": "unspecified" } ], "name_struct": { "bathroom": "", "bedding_type": "", "main_name": "Deluxe room" }, "room_amenities": [ "air-conditioning", "private-bathroom" ], "room_group_id": 28, "rg_ext": { "balcony": 0, "bathroom": 2, "bedding": 0, "bedrooms": 0, "capacity": 0, "club": 0, "family": 0, "floor": 0, "quality": 6, "class": 3, "sex": 0, "view": 0 }, "size": 32.3 } ], "star_rating": 5, "serp_filters": [ "has_internet", "has_parking" ], "star_certificate": { "valid_to": "", "certificate_id": "" }, "is_closed": false, "facts": { "electricity": { "frequency": [ 60 ], "voltage": [ 120 ], "sockets": [ "a", "b" ] }, "type": "", "floors_number": 25, "rooms_number": 305, "year_built": 2022, "year_renovated": 0, "register": { "record": "", "link": "", "email": "", "phone": "", "status": "", "kind": "unspecified", "name": "", "address": "", "status_end_date": "", "rooms": [] } }, "payment_methods": [ "visa", "master_card" ], "front_desk_time_start": "00:00:00", "front_desk_time_end": "00:00:00", "is_gender_specification_required": false, "deleted": false, "keys_pickup": { "type": "unspecified", "phone": "", "is_contactless": false, "email": "", "apartment_office_address": "", "apartment_extra_information": "" }, "distance_center": 531.1, "giata_code": "1315907", "images": [ "https://cdn.worldota.net/t/{size}/content/df/1a/df1aeffad82e3fa22007e2008389d20d9374202b.jpeg", "https://cdn.worldota.net/t/{size}/content/76/03/760379401030405fd3775a18b6edb0cf1f8971f5.jpeg" ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/info", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-04-13T16:19:00", "seconds_number": 60 }, "request": { "hid": "10004834", "language": "en", "check_in_time_end": "23:59:00" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "8c89381358e20e2f7ae04b74a340b7e8", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-13T16:18:00.929864" }, "status": "ok", "error": null } Errors hotel_not_found The hotel isn’t found. unknown The error occurs if something else has gone wrong. --- # Retrieve endpoints Source: https://docs.emergingtravel.com/docs/b2b-api/endpoints/retrieve-endpoints/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/overview/ https://api.worldota.net/api/b2b/v3/overview/ The call gets the list of the ETG API endpoints to which your API key has permission. ℹ️ Increasing limits is possible for a live key after separate approval, depending on the expected sales volume. Please contact our API support team for this. Limits are increased only after certification is completed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. Not every call is supported. The available call list depends on a sandbox API key. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/overview/' curl --user ':' 'https://api.worldota.net/api/b2b/v3/overview/' Response Expand this| Collapse this endpoint String The endpoint URI. is_active Boolean Whether the endpoint is active or not. is_debug_mode Boolean Whether the debug mode is available or not. is_limited Boolean Whether the endpoint has a limit for the request in seconds or not. requests_number Int The maximum number of requests that can be executed within seconds specified in the seconds_number field. seconds_number Int The number of seconds within the request can be executed. Shouldn’t exceed the value of the requests_number field. Response example { "data": [ { "endpoint": "api/b2b/v3/hotel/incremental_reviews/dump/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 100, "seconds_number": 86400 }, { "endpoint": "api/b2b/v3/general/contract/data/info/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/create/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/order/add/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/order/remove/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/disband/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/info/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 } ], "debug": null, "error": null, "status": "ok" } --- # Retrieve contract Source: https://docs.emergingtravel.com/docs/affiliate-api/contracts/retrieve-contract/ https://api.worldota.net/api/b2b/v3/general/contract/data/info/ The call gets contracts information. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/contract/data/info/' Response Expand this| Collapse this contract_datas Object The partner contract list. active_from String The contract commencement date. agreement_date String The contract agreement date. agreement_number String The contract agreement number. closing_documents_issuance_type String The contract confirmatory accounting documents issuance type. ℹ️ The possible values: half_monthly. monthly. single_order. weekly. decadly. kind String The contract kind. ℹ️ The possible values: informational-services. agency. services. corp. individual-contractor. legal_entity Object The contract legal entity information. address_actual String The actual address. address_legal String The legal (registered) address. name String The legal entity name. taxpayer_id String The taxpayer identification number. terminated_at String The contract termination date. Response example { "data":{ "contract_datas":[ { "active_from": "2018-07-02", "agreement_date": "2018-06-29", "agreement_number": "AFF-12980", "closing_documents_issuance_type": "monthly", "kind": "informational-services", "legal_entity": { "address_actual": "123 N Columbia Blvd", "address_legal": "113 N Columbia Blvd", "name": "123onetwothree", "taxpayer_id": "1231231231" }, "terminated_at": null } ] }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. unauthorized The authorization error. Ensure your API key and credentials are correct. unknown The internal ETG services’ timeout. --- # Search by hotel IDs Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/search-by-hotel-ids/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/serp/hotels/ https://api.worldota.net/api/b2b/v3/search/serp/hotels/ ℹ️ This call is required. The call gets hotels’ rates by the SERP mechanism. ⚠️ Let users choose the rates from this call response isn’t recommended. A full match with a response from the Retrieve hotelpage request isn’t expected. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross. hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission. Internal search errors are not supported. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/hotels/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 10004873, 9015534 ], "currency": "EUR", "filter": { "star_rating": [ ], "kind": [], "meal_type": [ "all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/serp/hotels/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 10004873, 9015534 ], "currency": "EUR", "filter": { "star_rating": [ ], "kind": [], "meal_type": [ "all-inclusive" ] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. ids [String] required deprecated The list of the unique hotel IDs. ℹ️ Either this field or the hid field is required. hids [Int] required The list of most preferred hotel IDs. ℹ️ The ID maximum length is 10 characters. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] required The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). Response Expand this| Collapse this total_hotels Int The total number of unique hotels. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. search_hash String The unique search rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from search step call. The value lifetime is 38 minutes after you have got the rate from the search results. If an outdated or invalid hash is used, an error will be returned. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "w_dubai_mina_seyahi", "hid": 10004873, "rates": [ { "match_hash": "m-7ddd263c-a97b-5d02-90a8-99c80d51fd89", "search_hash": null, "daily_prices": [ "714.00", "714.00", "714.00" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "192821.00", "show_amount": "2142.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "121.88", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "191.96", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "87.06", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "192821.00", "amount_show": "2142.00" } ], "free_cancellation_before": null } } ] }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 1, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Corner Double room (full double bed) (bed type is subject to availability, corner room)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "non-smoking", "not-guaranteed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Corner Double room", "main_name": "Deluxe Corner Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability, corner room", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false }, { "match_hash": "m-c9170cad-6ac3-5fb2-ac12-49567bba45aa", "search_hash": null, "daily_prices": [ "743.00", "743.00", "743.00" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "200601.00", "show_amount": "2229.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "126.83", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "199.75", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "90.59", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "200601.00", "amount_show": "2229.00" } ], "free_cancellation_before": null } } ] }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 4, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Double room (twin beds) (bed type is subject to availability)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "not-guaranteed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room", "main_name": "Deluxe Double room", "bathroom": null, "bedding_type": "twin beds", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "single", "count": 2 } ] }, "legal_info": null, "is_package": false }, { "match_hash": "m-c0429ae2-b2bf-52cf-9f22-492e71d2c481", "search_hash": null, "daily_prices": [ "743.00", "743.00", "743.00" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "200601.00", "show_amount": "2229.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "126.83", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "199.75", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "90.59", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "200601.00", "amount_show": "2229.00" } ], "free_cancellation_before": null } } ] }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Double room (full double bed) (bed type is subject to availability)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "non-smoking", "not-guaranteed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room", "main_name": "Deluxe Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false }, { "match_hash": "m-4a0d27e8-80a3-5628-9093-34ce7b3c3dae", "search_hash": null, "daily_prices": [ "1159.00", "1159.00", "1159.00" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "312867.00", "show_amount": "3477.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "197.84", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "311.59", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "141.31", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-18T21:00:00", "amount_charge": "0.00", "amount_show": "0.00" }, { "start_at": "2026-10-18T21:00:00", "end_at": null, "amount_charge": "312867.00", "amount_show": "3477.00" } ], "free_cancellation_before": "2026-10-18T21:00:00" } } ] }, "rg_ext": { "class": 5, "quality": 0, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 1, "balcony": 0, "view": 31, "floor": 0 }, "room_name": "1 Bedroom Double Suite with sea view (full double bed) (private beach)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "non-smoking", "1-bedroom" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "1 Bedroom Double Suite with sea view", "main_name": "1 Bedroom Double Suite with sea view", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "private beach", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ] } ], "total_hotels": 2 }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/hotels", "is_active": true, "is_limited": true, "remaining": 149, "requests_number": 150, "reset": "2026-04-16T20:30:00", "seconds_number": 60 }, "request": { "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hids": [ 10004873, 9015534 ], "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "ea17c1dd67c34f625b26d1c701a12c9f", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:29:14.112091" }, "status": "ok", "error": null } Errors Invalid JSON The error field has the invalid_json_format value. The debug.validation_error field has the value specified in the headers below. body_must_be_json The passed JSON isn’t valid. Invalid parameters or request body For these, the error field has the invalid_params value. The debug.validation_error field has the value specified in the headers below. number of ids should be less than or equal to X The item number of the ids field must be between 1 and 300. date should be ISO8601 (YYYY-MM-DD) The passed checkin and checkout fields have an invalid format. The valid format is YYYY-MM-DD. checkin date must be current or future date The checkin field value is in the past. Provide the current or future date. checkin date must be less than or equal to 730 days since today The checkin field value should be no later than 730 days from the day of the request. checkout date must be less than or equal to %d days since today The checkout field value should be no later than 30 days from the checkin field value. checkout date must be after checkin date The checkout field value should be later than the checkin field value. checkout cannot be later than X days since checkin The checkout field value should be no later than 30 days from the checkin field value. residency is required The residency field is required. residency must be one of X The residency field has an invalid format. The valid format is in the ISO 3166-1 alpha-2. unknown currency The currency field has an invalid format. The valid format is in the ISO 4217. early checkin date must be equal checkin date The upsells.early_checkin.time field value should be the same as the checkin field value. late checkout date must be equal checkout date The upsells.late_checkout.time field value should be the same as the checkout field value. early checkin must be in datetime format The checkin field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. late checkout must be in datetime format The checkout field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. guests number must be positive The guests field value must be positive. too many rooms, value should be no more than X The item number of the guests field must be between 1 and 9. adults number per room must be in range 1 to X inc The adults field value must be between 1 and 6. children number per room must be not greater then X The children field value must be between 1 and 4. child's age must be in range 0 to X incl The age field value must be between 0 and 17. Internal search error The error field has the core_search_error value. The debug.validation_error field has the null value. The error occurs if the ETG has an internal search error. The number of recurrent identical requests must be limited. --- # Create booking process Source: https://docs.emergingtravel.com/docs/affiliate-api/booking/create-booking-process/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/form/ https://api.worldota.net/api/b2b/v3/hotel/order/booking/form/ ℹ️ This call is required. Request this call right after the calls: Retrieve hotelpage. Prebook rate from hotelpage step. Prebook rate from search step. After requesting this call, you must send the Start booking process request. The call creates a booking process. The booking process includes several stages. Their number depends on whether there are 3D Secure and fraud checks. ℹ️ The limitations: The booking form lifetime is 60 minutes. ⚠️ The following applies only when using a test API key: All bookings for the test hotel (use hid = 8473727or id = test_hotel_do_not_book) will be real with all financial responsibilities. Nevertheless, giveaway prices are available within their rates for testing purposes. All test bookings must be canceled. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The 3D Secure check is not supported in the sandbox. The input value for the language field is ignored and is always set to en. The following fields are not supported: item_id, payment_type.type, and payment_types.recommended_price.show_currency_code. For all objects with the currency_code field, the value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/form/' \ --header 'Content-Type: application/json' \ --data '{{ "partner_order_id": "asd12399235", "book_hash": "h-372e7fa4-3a85-5a09-9f14-867766abf26c", "language": "en", "user_ip": "82.29.0.86" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/form/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "asd12399235", "book_hash": "h-372e7fa4-3a85-5a09-9f14-867766abf26c", "language": "en", "user_ip": "82.29.0.86" }' Request body Expand this| Collapse this partner_order_id String required The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field value for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. book_hash String required The unique rate ID used to identify the selected rate. ℹ️ Use the value of the book_hash field from one of the calls: Prebook rate from hotelpage step. Prebook rate from search step. language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. user_ip String required The end user IP address. Will be used for credit card processing if you use payment type now. Response Expand this| Collapse this order_id Int The order ID created by the ETG. ℹ️ The minimum value is 1. partner_order_id String The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field value for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. item_id Int The order item ID. Use this field value in the Create credit card token call to allow the user pay with a bank card. is_gender_specification_required Boolean Whether the guests’ gender is required by the hotel or not. upsell_data [Object] The order upsell information. ⚠️ Set these parameters only when the user really needs additional services. Only one early check-in and one late check-out should be requested and selected. charge_price Object The upsell price information. amount String The upsell amount in the currency specified by the currency_code field. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. name String The upsell name. ℹ️ The possible values: early_checkin. late_checkout. rule_id Int The upsell rule ID. uid String The upsell ID. data Object The upsell time. The local time in the HH:MM:SS format. payment_types [Object] The order payment information. amount String The booking amount in the currency specified by the currency_code field. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. recommended_price String ⚠️ This parameter is currently under development and will be available later. It can be ignored at the moment. The price below which the rate can’t be sold on B2C website. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. Response example { "data": { "order_id": 559350847, "partner_order_id": "asd12399235", "item_id": 128903852, "payment_types": [ { "amount": "2000.00", "currency_code": "INR", "is_need_credit_card_data": false, "is_need_cvc": false, "type": "hotel", "recommended_price": null } ], "is_gender_specification_required": false, "upsell_data": [] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/order/booking/form", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2025-10-21T12:22:00", "seconds_number": 60 }, "request": { "partner_order_id": "asd12399235", "book_hash": "h-372e7fa4-3a85-5a09-9f14-867766abf26c", "language": "en", "user_ip": "82.29.0.86" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "26f502336760ea6e5a71ed6beae781f5", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-10-21T12:21:01.572537" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. contract_mismatch An attempt to make the booking with a rate found with the different contract. double_booking_form An attempt to make a new booking with the partner_order_id that is already used for the API key contract and isn’t completed yet. Make another request with a new partner_order_id. duplicate_reservation An attempt to make a new booking with the partner_order_id that is already used for the API key contract and is already completed with a successful or error status. Make another request with a new partner_order_id. hotel_not_found The hotel isn’t found. insufficient_b2b_balance In case the credit limit is not sufficient for the reservation. To discuss changes to this limit please contact your account manager. reservation_is_not_allowed There is no permission to use this call for this contract. Contact your account manager. rate_not_found The rate with the book_hash field value isn’t found. The book_hash field value has expired. Send another search request and change the book_hash field value. sandbox_restriction An attempt to book the real hotel in the test environment. To book the real hotel, use the production environment. To book the test hotel, use the test environment. timeout, unknown, and 5xx If you get errors timeout, unknown, or the 5xx status code from this call: Make another request with a new partner_order_id. The number of calls should be limited to 10. If you get this error more than 10 times in a row, the issue is probably in automatically changed settings of your contract. Contact your account manager to resolve the issue. Otherwise, the ETG has temporary technical issues. Error Handling Diagram Below is a sequence diagram describing how to handle errors during the booking creation process: ℹ️ The number of retries should be limited to 10. sequenceDiagram participant User participant API User->>API: Create booking process request alt status == "ok" API-->>User: Response: "ok" User->>User: Go to Start booking process else error in (duplicate_reservation, double_booking_form, unknown, timeout) or HTTP status code 5xx loop Retry with new partner_order_id (until status == "ok" or other error) User->>API: Retry Create booking process with new partner_order_id API-->>User: Response alt status == "ok" User->>User: Go to Start booking process else error in retryable set User->>User: Continue retry else other error User->>User: Show error and stop end end else other error API-->>User: Response error User->>User: Show error and stop end --- # Retrieve bookings Source: https://docs.emergingtravel.com/docs/affiliate-api/post-booking/retrieve-bookings/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/info/ https://api.worldota.net/api/b2b/v3/hotel/order/info/ The call gets the order data of the successfully finished booking. ℹ️ It is recommended that there should be a time gap between: Receiving the booking confirmation. Requesting the order information. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The following fields are not supported: orders.rooms_data.bedding_name; orders.rooms_data.meal_name; orders.rooms_data.taxes.name. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/info/' \ --header 'Content-Type: application/json' \ --data '{ "ordering": { "ordering_type": "desc", "ordering_by": "created_at" }, "pagination": { "page_size": "3", "page_number": "1" }, "search": { "created_at": { "from_date": "2018-12-05T00:00" } }, "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/info/' \ --header 'Content-Type: application/json' \ --data '{ "ordering": { "ordering_type": "desc", "ordering_by": "created_at" }, "pagination": { "page_size": "3", "page_number": "1" }, "search": { "created_at": { "from_date": "2018-12-05T00:00" } }, "language": "en" }' Request body Expand this| Collapse this language String optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. ordering Object required The response sorting options. ordering_type String required The sorting type. ℹ️ The possible values: asc—ascending sorting. desc—descending sorting. ordering_by String required The name of the order field by which sorting is made. ℹ️ The possible values: cancelled_at. checkin_at. checkout_at. created_at. free_cancellation_before. modified_at. payment_due. payment_pending. pagination Object required The response pagination options. page_number Int required The bookings’ page number to receive. ℹ️ The minimum value is 1. page_size Int required The number of bookings per page to receive. ℹ️ The minimum value is 1. The maximum value is 50. search Object optional The response search options. cancelled_at Object optional The date and time of the order cancellation. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. checkin_at Object optional The date and time of the order check-in. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. checkout_at Object optional The date and time of the order check-out. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. created_at Object optional The date and time of the order group creation. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. free_cancellation_before Object optional The date and time of the order free cancellation. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. order_ids [Int] optional The list of order IDs created by the ETG. partner_order_ids [String] optional The list of external order IDs. status String required The booking finishing status. ℹ️ The possible values: cancelled. completed. failed. noshow. rejected. modified_at Object optional The date and time of the order update. from_date String optional The value to search for the value greater than or equal to. to_date String optional The value to search for the value less than or equal to. source String optional The type of the web source where the booking has been made. ℹ️ The possible values: b2b-site — a site. b2b-api — an API service. b2b-card — a site. b2b-handmade — the ETG staff member source. b2b-mobile-app-andr—an Android mobile application. b2b-mobile-app-ios—an iOS mobile application. Response Expand this| Collapse this current_page_number Int The current page number out of the received bookings’ page number. total_orders Int The total number of all your bookings. total_pages Int The total bookings’ page number received by the request. found_orders Int The order number received by the request. found_pages Int The bookings’ page number received by the request. orders Object The bookings’ information. agreement_number String The Midoffice agreement number. amount_payable Object The completed order amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The amount of the completed order or the cancellation fee. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_payable_vat Object The completed order VAT amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The completed order VAT amount or the cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_refunded Object The cancelled order refunded amount. amount String The cancelled order refunded amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell Object The booking amount. amount String The booking amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell_b2b2c Object The resale price for the user. amount String The resale price. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. api_auth_key_id Int The API key ID. cancelled_at String The date and time of the booking cancellation. checkin_at String The date of the check-in at the hotel. checkout_at String The date of the check-out from the hotel. contract_slug String The ETG contract slug. created_at String The date and time of the booking finishing. hotel_data Object The information on the booked hotel. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. order_id String A unique identifier assigned by the hotel, also known as the hotel confirmation number (HCN). ℹ️ The hotel confirmation number is not always available immediately after a booking is confirmed. Use this endpoint to retrieve the HCN with delayed polling: HCN is usually provided by suppliers within 48 hours after booking confirmation, or sometimes later. Retry the call periodically (every 24–48 hours is recommended). Continue retrying: for up to 96 hours after the booking is created, and for up to 96 hours before the check-in date. ⚠️ The absence of an HCN does not indicate a booking issue. Do not block post-booking flows while waiting for the HCN. is_cancellable Boolean Whether the order is cancellable or not. modified_at String The date and time of the booking last update. nights Int The number of nights of stay. order_id Int The order ID created by the ETG. ℹ️ The minimum value is 1. order_type String The order type. ℹ️ The possible values: hotel. upsell. roomnights Int The total number of nights of stay for all rooms. rooms_data [Object] The guests’ information for the rooms. bedding_name [String] The bed type list. To get all available bed types and their definitions, use the bedding field from the Retrieve hotel static data call. guest_data String adults_number Int The number of adults in the room. children_number Int The number of children in the room. guests [Object] The guests’ information. first_name String The guest first name. ℹ️ It is mandatory to provide the first name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. first_name_original String The guest first name in the original language sent in the booking request. last_name String The guest last name. For test purposes use the Ratehawk value. ℹ️ It is mandatory to provide the last name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. last_name_original String The guest last name in the original language sent in the booking request. is_child Boolean Whether the guest is a child or not. ℹ️ Guests are considered adults unless is_child = true, even if their age is that of a child. age Int The child age in years. ℹ️ Specify the child’s age if there are children in the booking request (is_child = true). The minimum value is 0. The maximum value is 17. meal_name String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. room_idx Int The room ID. room_name String The room name. source String The type of the web source where the booking has been made. ℹ️ The possible values: b2b-site — a site. b2b-api — an API service. b2b-card — a site. b2b-handmade — the ETG staff member source. b2b-mobile-app-andr—an Android mobile application. b2b-mobile-app-ios—an iOS mobile application. status String The booking finishing status. ℹ️ The possible values: cancelled. completed. failed. noshow. rejected. supplier_data Object The supplier booking information. confirmation_id String The confirmation ID. name String The booking supplier name. order_id String The supplier unique booking ID. taxes [Object] The taxes list. amount_tax Object The tax amount. amount String The tax amount in the currency specified by the currency_code field. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. is_included Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. total_vat Object The completed order VAT amount. Or the VAT cancellation fee of the canceled order which isn’t free of charge. amount String The completed order VAT amount or the cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included Boolean Indicator of whether VAT is included in the order total. ℹ️ Possible values: true — the total amount already includes VAT; false — VAT is charged in addition to the order total. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. partner_data String The partner booking information. order_comment String The partner booking internal comment. The comment isn’t sent to the hotel and not processed by the ETG API support team. It is visible only to the partner itself. ℹ️ The minimum length is 1 character. The maximum length is 256 character. order_id Int utm_term String The partner UTM term. partner_extra_cookie String The partner extra cookies. amount_payable_with_upsells Object The completed order with upsell amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The amount of the completed order with upsell or the cancellation fee. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. cancellation_info Object The booking cancellation information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies’ breakdown by periods. end_at String The date and time when this cancellation policy expires. Has the null value, if this cancellation policy takes effect from the start_at field value till the check-in date. If the start_at and end_at fields have the null value, this cancellation policy: Has no time restrictions. Takes effect all the time. The timezone is in UTC±0. penalty String The penalty information. amount String The penalty amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross amount. amount_net String The net amount. start_at String The date and time when this cancellation policy takes effect. Has the null value, if this cancellation policy takes effect till the end_at field value. The timezone is in UTC±0. invoice_id String The order group ID. ℹ️ The minimum length is 1 character. is_checked Boolean Whether the booking is additionally checked with the hotel by the support team or not. meta_data Object The booking additional information. voucher_order_comment String The API support team comment added upon the partner request. For example, information on early check-in or late check-out. ℹ️ The minimum length is 1 character. payment_data Object The order payment information. payment_type String The order payment type. ℹ️ The possible values: now. hotel. deposit. invoice_id Int The order group ID. invoice_id_v2 String The order group ID v2. paid_at String The date of the payment for the booking. payment_by String The information on the person who has paid for the booking. payment_due String The deadline date after which the booking payment becomes overdue. In case it hasn’t been received yet. payment_pending String The date from which the ETG: Begins to wait for the payment. Will notify you with an email that the payment is pending. upsells [Object] The order upsells’ information. ⚠️ Only one early check-in and one late check-out can be requested and selected. amount_payable Object The completed order with upsell amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The amount of the completed order with upsell or the cancellation fee. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_payable_vat Object The completed order upsell VAT amount. Or the cancellation fee of the canceled order which isn’t free of charge. amount String The completed order upsell VAT amount or the cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_refunded Object The cancelled order upsell refunded amount. amount String The cancelled order upsell refunded amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell Object The upsell amount. amount String The upsell amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_sell_b2b2c Object The upsell resale price for the user. amount String The upsell resale price. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. cancelled_at String The date and time of the order upsell cancellation. created_at String The date and time of the order upsell completion. free_cancellation_before String The date and time before which the order upsell cancellation is free of charge. info Object The order upsell information. order_id Int The order upsell ID. ℹ️ The minimum value is 1. order_type String The order upsell type. ℹ️ The possible values: additional_service. complimentary. early_checkin. extra_bed. hotel_facilities. insurance. late_checkout. meal_upgrade. name_change. room_service. room_upgrade. taxes_and_fees. visa_support. payment_data Object The order payment information. invoice_id Int The order group ID. invoice_id_v2 String The order group ID v2. paid_at String The date of the payment for the upsell. payment_by String The information on the person who has paid for the upsell. payment_due String The deadline date after which the upsell payment becomes overdue. In case it hasn’t been received yet. payment_pending String The date from which the ETG: Begins to wait for the payment. Will notify you with an email that the payment is pending. payment_type String The upsell payment type. ℹ️ The possible values: now. hotel. deposit. status String The upsell status. ℹ️ The possible values: awaiting_confirmation. cancelled. completed. noshow. recalled. type String The upsell type. ℹ️ The possible values: additional_service. complimentary. early_checkin. extra_bed. hotel_facilities. insurance. late_checkout. meal_upgrade. name_change. room_service. room_upgrade. taxes_and_fees. visa_support. has_tickets Boolean Whether the booking has tickets (additional requests) or not. user_data Object The information on the user who has created the booking. email String The user email address. phone String The user phone number. arrival_datetime String The date and time at which the user plans to check into the hotel. user_comment String The comment the user wrote when was filling out the booking form. amount_sell_b2b2c_commission Object The commission information from reselling the ETG rate. Works in a pair with the amount_sell_b2b2c field from the Start booking process call. Has the null value if there is no setting. To discuss a change, contact the API support team. amount String The commission amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. Response example { "data": { "current_page_number": 1, "total_orders": 870, "total_pages": 290, "found_orders": 550, "found_pages": 184, "orders": [ { "agreement_number": null, "amount_payable": { "amount": "0.00", "currency_code": "EUR" }, "amount_payable_vat": { "amount": "0.00", "currency_code": "EUR" }, "amount_refunded": { "amount": "411.20", "currency_code": "EUR" }, "amount_sell": { "amount": "411.20", "currency_code": "EUR" }, "amount_sell_b2b2c": { "amount": "0.00", "currency_code": "EUR" }, "api_auth_key_id": 1234, "cancelled_at": "2025-09-25T07:20:59", "checkin_at": "2025-11-25", "checkout_at": "2025-11-26", "contract_slug": "only.look.no.book", "created_at": "2025-09-25T07:10:54", "hotel_data": { "id": "test_hotel", "hid": 8526976, "order_id": null }, "is_cancellable": false, "modified_at": "2025-09-25T07:21:00", "nights": 1, "order_id": 931517609, "order_type": "hotel", "roomnights": 1, "rooms_data": [ { "bedding_name": [ "sofa-bed" ], "guest_data": { "adults_number": 2, "children_number": 0, "guests": [ { "first_name": "Marty", "first_name_original": "Marty", "last_name": "Quatro", "last_name_original": "Quatro", "is_child": false, "age": null }, { "first_name": "Marta", "first_name_original": "Marta", "last_name": "Quatro", "last_name_original": "Quatro", "is_child": false, "age": null } ] }, "meal_name": "all-inclusive", "has_breakfast": true, "no_child_meal": false, "room_idx": 0, "room_name": "Quadruple Junior Suite (+ sofa, treatment program included, kitchen)" } ], "source": "b2b-api", "status": "cancelled", "supplier_data": { "confirmation_id": "925610135", "name": "Extranet", "order_id": "925610135" }, "taxes": [ { "amount_tax": { "amount": "0.41", "currency_code": "EUR" }, "is_included": true, "name": "city_tax" }, { "amount_tax": { "amount": "1000.00", "currency_code": "EUR" }, "is_included": false, "name": "cleaning_fee" }, { "amount_tax": { "amount": "1.02", "currency_code": "EUR" }, "is_included": true, "name": "hotel_fee" }, { "amount_tax": { "amount": "100.00", "currency_code": "EUR" }, "is_included": false, "name": "luxury_tax" }, { "amount_tax": { "amount": "40.00", "currency_code": "EUR" }, "is_included": false, "name": "resort_fee" }, { "amount_tax": { "amount": "62.00", "currency_code": "EUR" }, "is_included": false, "name": "service_fee" }, { "amount_tax": { "amount": "31.00", "currency_code": "EUR" }, "is_included": false, "name": "vat" } ], "total_vat": { "amount": "0.00", "currency_code": "EUR", "included": false }, "is_package": false, "partner_data": { "order_comment": "partner_comment", "order_id": "wasd12345" }, "amount_payable_with_upsells": { "amount": "0.00", "currency_code": "EUR" }, "cancellation_info": { "free_cancellation_before": "2025-11-25T05:00:00", "policies": [ { "end_at": "2025-11-25T05:00:00", "penalty": { "amount": "0.00", "currency_code": "EUR", "amount_info": { "amount_commission": "0.00", "amount_gross": "0.00", "amount_net": "0.00" } }, "start_at": null }, { "end_at": null, "penalty": { "amount": "411.20", "currency_code": "EUR", "amount_info": { "amount_commission": "102.80", "amount_gross": "514.00", "amount_net": "411.20" } }, "start_at": "2025-11-25T05:00:00" } ] }, "invoice_id": null, "is_checked": false, "meta_data": { "voucher_order_comment": null }, "payment_data": { "payment_type": "deposit", "invoice_id": null, "invoice_id_v2": null, "paid_at": null, "payment_by": null, "payment_due": "2025-12-04", "payment_pending": "2025-12-01" }, "upsells": [], "has_tickets": false, "user_data": { "email": "asdfds@foo.com", "arrival_datetime": null, "user_comment": "comment" }, "amount_sell_b2b2c_commission": { "amount": "0.00", "currency_code": "EUR" } }, { "agreement_number": null, "amount_payable": { "amount": "0.00", "currency_code": "EUR" }, "amount_payable_vat": { "amount": "0.00", "currency_code": "EUR" }, "amount_refunded": { "amount": "411.20", "currency_code": "EUR" }, "amount_sell": { "amount": "411.20", "currency_code": "EUR" }, "amount_sell_b2b2c": { "amount": "0.00", "currency_code": "EUR" }, "api_auth_key_id": 1234, "cancelled_at": "2025-09-18T12:38:00", "checkin_at": "2025-12-25", "checkout_at": "2025-12-26", "contract_slug": "only.look.no.book", "created_at": "2025-09-18T08:09:04", "hotel_data": { "id": "test_hotel", "hid": 8526976, "order_id": null }, "is_cancellable": false, "modified_at": "2025-09-18T12:38:01", "nights": 1, "order_id": 260453787, "order_type": "hotel", "roomnights": 1, "rooms_data": [ { "bedding_name": [ "sofa-bed" ], "guest_data": { "adults_number": 2, "children_number": 0, "guests": [ { "first_name": "Marty", "first_name_original": "Marty", "last_name": "Quatro", "last_name_original": "Quatro", "is_child": false, "age": null }, { "first_name": "Marta", "first_name_original": "Marta", "last_name": "Quatro", "last_name_original": "Quatro", "is_child": false, "age": null } ] }, "meal_name": "half-board-lunch", "has_breakfast": true, "no_child_meal": false, "room_idx": 0, "room_name": "Quadruple Junior Suite (+ sofa, treatment program included, kitchen)" } ], "source": "b2b-api", "status": "cancelled", "supplier_data": { "confirmation_id": "361911424", "name": "Extranet", "order_id": "361911424" }, "taxes": [ { "amount_tax": { "amount": "0.41", "currency_code": "EUR" }, "is_included": true, "name": "city_tax" }, { "amount_tax": { "amount": "2000.00", "currency_code": "EUR" }, "is_included": false, "name": "cleaning_fee" }, { "amount_tax": { "amount": "3.06", "currency_code": "EUR" }, "is_included": true, "name": "hotel_fee" }, { "amount_tax": { "amount": "5000.00", "currency_code": "EUR" }, "is_included": false, "name": "luxury_tax" }, { "amount_tax": { "amount": "40.00", "currency_code": "EUR" }, "is_included": false, "name": "resort_fee" }, { "amount_tax": { "amount": "22.00", "currency_code": "EUR" }, "is_included": false, "name": "service_fee" }, { "amount_tax": { "amount": "11.00", "currency_code": "EUR" }, "is_included": false, "name": "vat" } ], "total_vat": { "amount": "0.00", "currency_code": "EUR", "included": false }, "is_package": false, "partner_data": { "order_comment": "partner_comment", "order_id": "tut" }, "amount_payable_with_upsells": { "amount": "0.00", "currency_code": "EUR" }, "cancellation_info": { "free_cancellation_before": "2025-12-25T05:00:00", "policies": [ { "end_at": "2025-12-25T05:00:00", "penalty": { "amount": "0.00", "currency_code": "EUR", "amount_info": { "amount_commission": "0.00", "amount_gross": "0.00", "amount_net": "0.00" } }, "start_at": null }, { "end_at": null, "penalty": { "amount": "411.20", "currency_code": "EUR", "amount_info": { "amount_commission": "102.80", "amount_gross": "514.00", "amount_net": "411.20" } }, "start_at": "2025-12-25T05:00:00" } ] }, "invoice_id": null, "is_checked": false, "meta_data": { "voucher_order_comment": null }, "payment_data": { "payment_type": "deposit", "invoice_id": null, "invoice_id_v2": null, "paid_at": null, "payment_by": null, "payment_due": "2026-01-15", "payment_pending": "2026-01-12" }, "upsells": [], "has_tickets": false, "user_data": { "email": "asdfds@foo.com", "arrival_datetime": null, "user_comment": "comment" }, "amount_sell_b2b2c_commission": null }, { "agreement_number": null, "amount_payable": { "amount": "0.00", "currency_code": "EUR" }, "amount_payable_vat": { "amount": "0.00", "currency_code": "EUR" }, "amount_refunded": { "amount": "30908.00", "currency_code": "EUR" }, "amount_sell": { "amount": "30908.00", "currency_code": "EUR" }, "amount_sell_b2b2c": { "amount": "0.00", "currency_code": "EUR" }, "api_auth_key_id": 1234, "cancelled_at": "2025-09-16T14:15:45", "checkin_at": "2025-09-29", "checkout_at": "2025-09-30", "contract_slug": "only.look.no.book", "created_at": "2025-09-16T14:06:35", "hotel_data": { "id": "test_hotel_do_not_book", "hid": 8473727, "order_id": null }, "is_cancellable": false, "modified_at": "2025-09-16T14:15:46", "nights": 1, "order_id": 246069602, "order_type": "hotel", "roomnights": 2, "rooms_data": [ { "bedding_name": [ "double" ], "guest_data": { "adults_number": 1, "children_number": 0, "guests": [ { "first_name": "Mikhail", "first_name_original": "Mikhail", "last_name": "Rudenko", "last_name_original": "Rudenko", "is_child": false, "age": null } ] }, "meal_name": "nomeal", "has_breakfast": false, "no_child_meal": true, "room_idx": 0, "room_name": "Standard Double room (shared bathroom) (full double bed)" }, { "bedding_name": [ "double" ], "guest_data": { "adults_number": 1, "children_number": 0, "guests": [ { "first_name": "Alan", "first_name_original": "Alan", "last_name": "Tashev", "last_name_original": "Tashev", "is_child": false, "age": null } ] }, "meal_name": "nomeal", "has_breakfast": false, "no_child_meal": true, "room_idx": 1, "room_name": "Standard Double room (shared bathroom) (full double bed)" } ], "source": "b2b-api", "status": "cancelled", "supplier_data": { "confirmation_id": "853713014", "name": "Extranet", "order_id": "853713014" }, "taxes": [ { "amount_tax": { "amount": "781.92", "currency_code": "HNL" }, "is_included": false, "name": "city_tax" }, { "amount_tax": { "amount": "9.20", "currency_code": "EUR" }, "is_included": true, "name": "electricity_fee" }, { "amount_tax": { "amount": "2015.08", "currency_code": "HNL" }, "is_included": false, "name": "service_fee" }, { "amount_tax": { "amount": "705.46", "currency_code": "HNL" }, "is_included": false, "name": "vat" } ], "total_vat": { "amount": "0.00", "currency_code": "EUR", "included": false }, "is_package": false, "partner_data": { "order_comment": "Tryin p-hash.", "order_id": "52multi_book52" }, "amount_payable_with_upsells": { "amount": "0.00", "currency_code": "EUR" }, "cancellation_info": { "free_cancellation_before": "2025-09-29T06:00:00", "policies": [ { "end_at": "2025-09-29T06:00:00", "penalty": { "amount": "0.00", "currency_code": "EUR", "amount_info": { "amount_commission": "0.00", "amount_gross": "0.00", "amount_net": "0.00" } }, "start_at": null }, { "end_at": null, "penalty": { "amount": "30908.00", "currency_code": "EUR", "amount_info": { "amount_commission": "7727.00", "amount_gross": "38635.00", "amount_net": "30908.00" } }, "start_at": "2025-09-29T06:00:00" } ] }, "invoice_id": null, "is_checked": false, "meta_data": { "voucher_order_comment": null }, "payment_data": { "payment_type": "deposit", "invoice_id": null, "invoice_id_v2": null, "paid_at": null, "payment_by": null, "payment_due": "2025-11-06", "payment_pending": "2025-10-31" }, "upsells": [], "has_tickets": false, "user_data": { "email": "mikhail.rudenko@emergingtravel.com", "arrival_datetime": null, "user_comment": null }, "amount_sell_b2b2c_commission": null } ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/order/info", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2025-09-25T07:49:00", "seconds_number": 60 }, "request": { "ordering": { "ordering_type": "desc", "ordering_by": "created_at" }, "pagination": { "page_size": "3", "page_number": "1" }, "search": { "created_at": { "from_date": "2018-12-05T00:00" } }, "language": "en" }, "method": "POST", "real_ip": "2a09:bac0:1000:623::388:9b", "request_id": "319895058dad3241965e7cc5ffe9a884", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-09-25T07:48:08.032429" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. page_out_of_range The page_number field value is greater than the total_pages field value. --- # Retrieve hotel dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-hotel-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/dump/ https://api.worldota.net/api/b2b/v3/hotel/info/dump/ ℹ️ The call is required. The call gets the dump of all available ETG hotels as a single archive for a single language. The link to the archive is passed in the url response field. You must open the link to start the downloading. The dump format is the Zstd. The ETG updates the data every week. To renew your local dump, use the Retrieve hotel incremental dump call. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Any internal content such as photos, descriptions, and others can’t be indexed. It isn’t allowed. Any public content such as name, address, amenities, and policies can be indexed. Sandbox limitations The value of the language field is always set to en. The inventory field supports the following values: all, direct, preferable, and direct_fast. In the sandbox dump, the number of items is always 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/dump/' \ --header 'Content-Type: application/json' \ --data '{ "inventory": "all", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/dump/' \ --header 'Content-Type: application/json' \ --data '{ "inventory": "all", "language": "en" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. inventory String optional The hotel list to get. ℹ️ The possible values: all — all available suppliers. direct — Chains, Extranet, DMC, Switch, Consolidator, Wholesaler. direct_fast — Chains, Extranet. direct_fast_extended — Chains, Extranet, DMC, Switch. preferable — all sellable hotels that had at least one available rate in the last 6 months. top — the 500k top hotels by their paid bookings. The default value is all. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2024-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Dump file structure The dump is a Zstd archive that contains a file with a list of objects line by line: { "address": "Gabriele-Tergit-Promenade 19, Berlin", "amenity_groups": [ { "amenities": [ "Common kitchen", "Kitchen" ] } ] }, { "address": "Passeig De Gracia, 68, Barcelona", "amenity_groups": [ { "amenities": [ "Common kitchen", "Kitchen" ] } ] }, { "address": "Great Cumberland Place, London", "amenity_groups": [ { "amenities": [ "Cable TV", "Locker" ] } ] } Field details The entire dump structure is described in the response of the Retrieve hotel content call. To decompress the archive you can use, for example, a Zstandard plugin or 7-zip archive manager with Zstandard. Errors The error field has the value specified in the headers below. dump_not_ready The dump is being updated. Try to download the archive later. --- # Retrieve voucher Source: https://docs.emergingtravel.com/docs/affiliate-api/documents/retrieve-voucher/ https://api.worldota.net/api/b2b/v3/hotel/order/document/voucher/download/ The call gets the order voucher file. The file is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/document/voucher/download/?data={%22partner_order_id%22%3A%22asd123%22%2C%22language%22%3A%22en%22}' Parameters Expand this| Collapse this language String, Query required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. date String, Query required The external order ID. ℹ️ The minimum length is 1 character. Errors The error field has the value specified in the headers below. failed_to_generate_document The voucher is in generating. Try to request later. order_not_found The order with the partner_order_id field value isn’t found. pending The voucher is in processing. Try to request later. voucher_is_not_downloadable The order is in processing. Try to request when the order will be completed and its cost will be paid. --- # Search by geo coordinates Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/search-by-geo-coordinates/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/ https://api.worldota.net/api/b2b/v3/search/serp/geo/' The call gets hotels’ rates by the SERP mechanism and the given geographical details. ⚠️ Let users choose the rates from this call response isn’t recommended. A full match with a response from the Retrieve hotelpage request isn’t expected. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. When using latitude and longitude, use one of the following coordinate pairs for convenience: latitude: 34.077194, longitude: -118.36068. latitude: 25.0753, longitude: 55.1385. latitude: 55.8034, longitude: 37.5226. latitude: 48.87844, longitude: 2.35829. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross. hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission. Internal search errors are not supported. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "latitude": 25.091604, "longitude": 55.146603, "radius": 150, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/serp/geo/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "latitude": 25.091604, "longitude": 55.146603, "radius": 150, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. latitude Float required The hotel geographical latitude. longitude Float required The hotel geographical longitude. radius Int required The radius size for circular search in meters. ℹ️ The minimum value is 1. The maximum value is 70000. hotels_limit Int optional The maximum number of the available hotels in the response. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] required The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). Response Expand this| Collapse this total_hotels Int The total number of unique hotels. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. search_hash String The unique search rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from search step call. The value lifetime is 38 minutes after you have got the rate from the search results. If an outdated or invalid hash is used, an error will be returned. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. Response example { "data": { "hotels": [ { "id": "w_dubai_mina_seyahi", "hid": 10004873, "rates": [ { "match_hash": "m-7ddd263c-a97b-5d02-90a8-99c80d51fd89", "search_hash": null, "daily_prices": [ "714.00", "714.00", "714.00" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "192821.00", "show_amount": "2142.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "121.88", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "191.96", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "87.06", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "192821.00", "amount_show": "2142.00" } ], "free_cancellation_before": null } } ] }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 1, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Corner Double room (full double bed) (bed type is subject to availability, corner room)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "not-guaranteed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Corner Double room", "main_name": "Deluxe Corner Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability, corner room", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ] }, { "id": "le_meridien_mina_seyahi_beach_resort_marina", "hid": 7548288, "rates": [ { "match_hash": "m-5daa2409-4b9f-5420-932c-227cee048a4c", "search_hash": null, "daily_prices": [ "821.33", "821.33", "821.33" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "221741.00", "show_amount": "2464.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "140.20", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "220.81", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "100.14", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-07T20:00:00", "amount_charge": "0.00", "amount_show": "0.00" }, { "start_at": "2026-10-07T20:00:00", "end_at": null, "amount_charge": "221741.00", "amount_show": "2464.00" } ], "free_cancellation_before": "2026-10-07T20:00:00" } } ] }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 37, "floor": 0 }, "room_name": "Deluxe Double room Skyline View (full double bed) (bed type is subject to availability)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "non-smoking", "not-guaranteed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Deluxe Double room Skyline View", "main_name": "Deluxe Double room Skyline View", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ] } ], "total_hotels": 2 }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/geo", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-04-16T20:34:00", "seconds_number": 60 }, "request": { "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "latitude": 25.091604, "longitude": 55.146603, "radius": 150, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "5f7e6e7a86a6bb14635da59965ada078", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:33:55.480438" }, "status": "ok", "error": null } Errors Invalid JSON The error field has the invalid_json_format value. The debug.validation_error field has the value specified in the headers below. body_must_be_json The passed JSON isn’t valid. Invalid parameters or request body For these, the error field has the invalid_params value. The debug.validation_error field has the value specified in the headers below. date should be ISO8601 (YYYY-MM-DD) The passed checkin and checkout fields have an invalid format. The valid format is YYYY-MM-DD. checkin date must be current or future date The checkin field value is in the past. Provide the current or future date. checkin date must be less than or equal to 730 days since today The checkin field value should be no later than 730 days from the day of the request. checkout date must be less than or equal to %d days since today The checkout field value should be no later than 30 days from the checkin field value. checkout date must be after checkin date The checkout field value should be later than the checkin field value. checkout cannot be later than X days since checkin The checkout field value should be no later than 30 days from the checkin field value. residency is required The residency field is required. residency must be one of X The residency field has an invalid format. The valid format is in the ISO 3166-1 alpha-2. unknown currency The currency field has an invalid format. The valid format is in the ISO 4217. early checkin date must be equal checkin date The upsells.early_checkin.time field value should be the same as the checkin field value. late checkout date must be equal checkout date The upsells.late_checkout.time field value should be the same as the checkout field value. early checkin must be in datetime format The checkin field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. late checkout must be in datetime format The checkout field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. guests number must be positive The guests field value must be positive. too many rooms, value should be no more than X The item number of the guests field must be between 1 and 9. adults number per room must be in range 1 to X inc The adults field value must be between 1 and 6. children number per room must be not greater then X The children field value must be between 1 and 4. child's age must be in range 0 to X incl The age field value must be between 0 and 17. radius is required The radius field is required. radius must be in range 1 to X inc The radius field value is invalid. The valid value is between 1 and 70000. longitude is required The longitude field is required. latitude is required The latitude field is required. Internal search error The error field has the core_search_error value. The debug.validation_error field has the null value. The error occurs if the ETG has: An internal search error. A geo search error. The number of recurrent identical requests must be limited. --- # Cancel booking Source: https://docs.emergingtravel.com/docs/affiliate-api/post-booking/cancel-booking/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/cancel/ https://api.worldota.net/api/b2b/v3/hotel/order/cancel/ ℹ️ This call is required for the bookings made for the test hotel. The call allows to cancel only successfully confirmed orders. ⚠️ When canceling a non-refundable booking, penalties will be real. Sandbox limitations Making the call is not required. When canceling a non-refundable booking, penalties are not actually applied. For any object containing the currency_code field, its value is always set to EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/cancel/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/cancel/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' Request body Expand this| Collapse this partner_order_id String required The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field value for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. Response Expand this| Collapse this amount_payable Object The cancellation fee amount. amount String The cancellation fee amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. amount_refunded Object The cancellation refunded amount. amount String The cancellation refunded amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. amount_sell Object The booking amount. amount String The booking amount. currency_code String The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. amount_info Object The cancellation information. Has the null value if the commission type has the net or gross value. Has the object value if you: Have a net commission model. Have indicated a non-zero commission in your account. amount_commission String The commission amount. amount_gross String The gross price. amount_net String The net price. Response example { "data": { "amount_payable": { "amount": "42.73", "currency_code": "EUR" }, "amount_refunded": { "amount": "50.00", "currency_code": "EUR" }, "amount_sell": { "amount": "92.73", "currency_code": "EUR" } }, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. order_not_found The order is finished with other than the completed or rejected status. The order with the partner_order_id field value isn’t found. order_not_cancellable The stay period has already started. You don’t have permission to cancel non-refundable bookings. Contact your account manager. sandbox_restriction An attempt to cancel the real hotel in the test environment. To cancel the real hotel, use the production environment. To cancel the test hotel, use the test environment. lock This error occurs if requests for an endpoint meet both conditions: Several requests use the same partner_order_id field value. One request is sent twice within a short amount of time. unknown The error occurs if something else has gone wrong. --- # Create credit card token Source: https://docs.emergingtravel.com/docs/affiliate-api/booking/create-credit-card-token/ https://api.payota.net/api/public/v1/manage/init_partners ℹ️ The call is required for bookings where the is_need_credit_card_data field was passed with the true value. The call creates and returns a credit card token for the order payment. The PCI DSS standard guarantees safe and secure processing. Request example curl --user ':' 'https://api.payota.net/api/public/v1/manage/init_partners' \ --header 'Content-Type: application/json' \ --data '{ "object_id": "32165487", "pay_uuid": "797870e3-e1f0-470a-87b3-38694f58bed1", "init_uuid": "c44ef1ba-595b-437f-ad14-74ce39a0f9ad", "user_last_name": "LastName", "cvc": "123", "is_cvc_required": true, "credit_card_data_core": { "year": "18", "card_number": "4111111111111111", "card_holder": "TEST", "month": "01" }, "user_first_name": "Name" }' Request body Expand this| Collapse this object_id String required The booking order ID. You can find this value of the item_id field in the response to the Create booking process call. ℹ️ The minimum length is `1` character. The maximum length is `20` characters. pay_uuid String required The external booking payment ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. init_uuid String required The external booking token ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. user_first_name String required The guest first name. ℹ️ The minimum length is 1 character. user_last_name String required The guest last name. ℹ️ The minimum length is 1 character. cvc String optional The CVC. ℹ️ The length is 3 characters. is_cvc_required Boolean required Whether the CVC is required or not. credit_card_data_core Object required The credit card information. year String required The valid thru year. ℹ️ The length is 2 characters. card_number String required The credit card number without spaces. ℹ️ The minimum length is 13 characters. The maximum length is 19 characters. card_holder String required The cardholder name. ℹ️ The minimum length is 1 character. month String required The valid thru month. ℹ️ The length is 2 characters. Response example { "status": "ok" } Errors The error field has the value specified in the headers below. body_error The passed JSON isn’t valid. validation_error Not all required field values are passed. invalid_pay_uuid The invalid_pay_uuid field value doesn’t match the pattern. invalid_init_uuid The invalid_init_uuid field value doesn’t match the pattern. invalid_month The month is invalid. Try a different one. invalid_year The year is invalid. Try a different one. invalid_cvc Incorrect CVC code. invalid_card_number The credit card data is invalid. Try a different one. invalid_card_holder The cardholder name is invalid. Try a different one. invalid_is_cvc_required The is_cvc_required field value is required. luhn_algorithm_error The credit card number hasn’t passed the Luhn algorithm check. --- # Retrieve acceptance certificate Source: https://docs.emergingtravel.com/docs/affiliate-api/documents/retrieve-acceptance-certificate/ https://api.worldota.net/api/b2b/v3/general/document/acceptance_certificate/download/ The call gets the acceptance certificate file of the month. The file is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/document/acceptance_certificate/download/?data={%22date%22%3A%222020-03-31%22}' Parameters Expand this| Collapse this date String, Query required The month of the acceptance certificate for generating. Errors The error field has the value specified in the headers below. failed_to_generate_document The acceptance certificate is in generating. Try to request later. invalid_report_date The date field value is invalid. The valid date is in the past or today. not_available No acceptance certificate is available for your contract. Contact your account manager to create a certificate. --- # Retrieve hotel custom dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-hotel-custom-dump/ https://api.worldota.net/api/b2b/v3/hotel/custom/dump/ The call gets the dump customized by the request body. Custom dumps (e.g., ski, usa, etc.) are curated manually or defined by internal business rules. Their content and criteria may change without notice and are not exhaustive. For a comprehensive hotel selection by location or attributes, use the Retrieve hotel dump and apply your own filters. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/custom/dump/' \ --header 'Content-Type: application/json' --data '{ "type": "ski", "language": "en" }' Request body Expand this| Collapse this type String required Type of the custom hotel dump. ℹ️ The possible values: ski. apartments. usa. rome. london_apartments. uk. africa_preferable. asia_preferable. south_europe_cis_preferable. latin_america_preferable. middle_east_preferable. north_america_preferable. oceania_preferable. west_europe_preferable. language String optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } --- # Search by region Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/search-by-region/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/serp/region/ https://api.worldota.net/api/b2b/v3/search/serp/region/ The call gets hotels’ rates by the SERP mechanism and the given region. ⚠️ Let users choose the rates from this call response isn’t recommended. A full match with a response from the Retrieve hotelpage request isn’t expected. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The input value for the language field is ignored; it is always set to en. The possible values for the region_id field are: 2011, 2395, 2734, and 6053839. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission Internal search errors are not supported. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/region/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "region_id": 6053839, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/serp/region/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "region_id": 6053839, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. hotels_limit Int optional The maximum number of the available hotels in the response. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. region_id Int required The region ID. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] required The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). Response Expand this| Collapse this total_hotels Int The total number of unique hotels. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. search_hash String The unique search rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from search step call. The value lifetime is 38 minutes after you have got the rate from the search results. If an outdated or invalid hash is used, an error will be returned. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. Response example { "data": { "hotels": [ { "id": "aloft_palm_jumeirah", "hid": 8746275, "rates": [ { "match_hash": "m-df3c0498-97e0-52de-a524-32c39ca8dfff", "search_hash": null, "daily_prices": [ "340.00", "340.00", "340.00" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "91817.00", "show_amount": "1020.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "45.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "58.04", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "91.41", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "41.45", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-11T20:00:00", "amount_charge": "0.00", "amount_show": "0.00" }, { "start_at": "2026-10-11T20:00:00", "end_at": null, "amount_charge": "91817.00", "amount_show": "1020.00" } ], "free_cancellation_before": "2026-10-11T20:00:00" } } ] }, "rg_ext": { "class": 3, "quality": 2, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Aloft Double room (full double bed) (bed type is subject to availability)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 99, "amenities_data": [ "not-guaranteed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Aloft Double room", "main_name": "Aloft Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ] }, { "id": "moevenpick_hotel_jumeirah_beach", "hid": 7459783, "rates": [ { "match_hash": "m-71b1ec5c-046c-5108-899a-e924d938888f", "search_hash": null, "daily_prices": [ "438.33", "438.33", "438.33" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "118329.00", "show_amount": "1315.00", "currency_code": "EUR", "show_currency_code": "EUR", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "74.82", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "117.84", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "53.44", "currency_code": "EUR" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "118329.00", "amount_show": "1315.00" } ], "free_cancellation_before": null } } ] }, "rg_ext": { "class": 3, "quality": 5, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 1, "view": 0, "floor": 0 }, "room_name": "Superior Double room with balcony (full double bed) (bed type is subject to availability)", "room_name_info": null, "serp_filters": [ "has_bathroom", "has_breakfast" ], "allotment": 30, "amenities_data": [ "non-smoking", "not-guaranteed" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Superior Double room with balcony", "main_name": "Superior Double room with balcony", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": null, "is_package": false } ] } ], "total_hotels": 2 }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/serp/region", "is_active": true, "is_limited": true, "remaining": 9, "requests_number": 10, "reset": "2026-04-16T20:42:00", "seconds_number": 60 }, "request": { "checkin": "2026-10-22", "checkout": "2026-10-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "region_id": 6053839, "currency": "EUR", "filter": { "star_rating": [], "kind": [], "meal_type": [ "all-inclusive" ] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "e2e7c2d267ae2dc6038f5bf886d71e8c", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:41:17.490485" }, "status": "ok", "error": null } Errors Invalid JSON The error field has the invalid_json_format value. The debug.validation_error field has the value specified in the headers below. body_must_be_json The passed JSON isn’t valid. Invalid parameters or request body For these, the error field has the invalid_params value. The debug.validation_error field has the value specified in the headers below. date should be ISO8601 (YYYY-MM-DD) The passed checkin and checkout fields have an invalid format. The valid format is YYYY-MM-DD. checkin date must be current or future date The checkin field value is in the past. Provide the current or future date. checkin date must be less than or equal to 730 days since today The checkin field value should be no later than 730 days from the day of the request. checkout date must be less than or equal to %d days since today The checkout field value should be no later than 30 days from the checkin field value. checkout date must be after checkin date The checkout field value should be later than the checkin field value. checkout cannot be later than X days since checkin The checkout field value should be no later than 30 days from the checkin field value. residency is required The residency field is required. residency must be one of X The residency field has an invalid format. The valid format is in the ISO 3166-1 alpha-2. unknown currency The currency field has an invalid format. The valid format is in the ISO 4217. early checkin date must be equal checkin date The upsells.early_checkin.time field value should be the same as the checkin field value. late checkout date must be equal checkout date The upsells.late_checkout.time field value should be the same as the checkout field value. early checkin must be in datetime format The checkin field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. late checkout must be in datetime format The checkout field has an invalid format. The valid formats are: 2006-01-02. 2006-01-02 15:04. 2006-01-02T15:04. 2006-01-02 15:04:05. 2006-01-02T15:04:05. 2006-01-02T15:04:05-07:00. 2006-01-02T15:04:05Z07:00. guests number must be positive The guests field value must be positive. too many rooms, value should be no more than X The item number of the guests field must be between 1 and 9. adults number per room must be in range 1 to X inc The adults field value must be between 1 and 6. children number per room must be not greater then X The children field value must be between 1 and 4. child's age must be in range 0 to X incl The age field value must be between 0 and 17. region_id value should be greater than 0 The region_id field value is invalid. The valid value is equal to or greater than 0. hotels_limit value should be greater than or equal to 0 The hotels_limit field value is invalid. The valid value is equal to or greater than 0. hotels_not_found The hotels aren’t found or an internal error has occurred. invalid region_id field, this region cannot be searched The region_id field value is invalid. The valid values are in the Retrieve regions’ dump call response. Internal search error The error field has the core_search_error value. The debug.validation_error field has the null value. The error occurs if the ETG has: An internal search error. A region search error. The number of recurrent identical requests must be limited. --- # Retrieve hotel incremental dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-hotel-incremental-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/incremental_dump/ https://api.worldota.net/api/b2b/v3/hotel/info/incremental_dump/ The call gets the dump with the ETG hotels which content has changed in the previous day. ℹ️ The dump: Is incremental. Should be updated every day. The ETG generates each archive for a single language. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Indexing of any internal content such as photos, descriptions and others isn’t allowed. Any public content such as a name, address, amenities and policies can be indexed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The inventory field supports the following values: all, direct, preferable, and direct_fast. The maximum number of items in the dump is 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/incremental_dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en", "inventory": "all" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/incremental_dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en", "inventory": "all" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. inventory String optional The hotel list to get. ℹ️ The possible values: all — all available suppliers. direct — Chains, Extranet, DMC, Switch, Consolidator, Wholesaler. direct_fast — Chains, Extranet. direct_fast_extended — Chains, Extranet, DMC, Switch. preferable — all sellable hotels with availability within last 6 months. The default value is all. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Retrieve remuneration register Source: https://docs.emergingtravel.com/docs/affiliate-api/documents/retrieve-remuneration-register/ https://api.worldota.net/api/b2b/v3/general/document/remuneration_register/download/ The call gets the remuneration register file of the month. The file is provided in PDF format. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/general/document/remuneration_register/download/?data={%22date%22%3A%222020-03-31%22}' Parameters Expand this| Collapse this date String, Query required The month of the remuneration register for generating. Errors The error field has the value specified in the headers below. failed_to_generate_document The remuneration register is in generating. Try to request later. invalid_report_date The date field value is invalid. The valid date is in the past or today. not_available No remuneration register is available for your contract. Contact your account manager to create a register. --- # Start booking process Source: https://docs.emergingtravel.com/docs/affiliate-api/booking/start-booking-process/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/ https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/ ℹ️ This call is required. Request this call right after the Create booking process call. As the booking process is made asynchronously, repeatedly request the Check booking process call to know the status. The call starts the booking process. ⚠️ If invalid user data is used, the data may be added to the stop list. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The possible values for the payment_type.type field are hotel and deposit. The value of the payment_type.currency_code field is always USD. The following fields are not supported: payment_type.init_uuid, payment_type.pay_uuid, upsell_data, and return_path. For all objects with the currency_code field the value is always EUR. The following errors are not supported: book_hash_not_found, rate_not_found, return_path_required, not_enough_credit_card_data, incorrect_init_uuid_format, and incorrect_pay_uuid_format. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/' \ --header 'Content-Type: application/json' \ --data '{ "user": { "email": "john.smith@example.com", "comment": "The user comment.", "phone": "12124567899" }, "supplier_data": { "first_name_original": "Peter", "last_name_original": "Collins", "phone": "12124567880", "email": "peter.collins@example.com" }, "partner": { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "comment": "The partner comment.", "amount_sell_b2b2c": "10" }, "language": "en", "rooms": [ { "guests": [ { "first_name": "Martin", "last_name": "Smith" }, { "first_name": "Eliot", "last_name": "Smith" } ] } ], "payment_type": { "type": "deposit", "amount": "9", "currency_code": "EUR" }, "return_path": "https://example.com" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/' \ --header 'Content-Type: application/json' \ --data '{ "user": { "email": "john.smith@example.com", "comment": "The user comment.", "phone": "12124567899" }, "supplier_data": { "first_name_original": "Peter", "last_name_original": "Collins", "phone": "12124567880", "email": "peter.collins@example.com" }, "partner": { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "comment": "The partner comment.", "amount_sell_b2b2c": "10" }, "language": "en", "rooms": [ { "guests": [ { "first_name": "Martin", "last_name": "Smith" }, { "first_name": "Eliot", "last_name": "Smith" } ] } ], "payment_type": { "type": "deposit", "amount": "9", "currency_code": "EUR" }, "return_path": "https://example.com" }' Request body Expand this| Collapse this arrival_datetime DateTime optional The estimated arrival time to the hotel (12-hour format with *_day_period; otherwise 24-hour format). book_timeout Int optional The booking timeout in seconds. ℹ️ The minimum value is 10. The maximum value is 600. language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. payment_type Object required The order payment information. type String required The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. amount String required The booking amount in the currency specified by the currency_code field. currency_code String required The amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. init_uuid String optional The external booking token ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. Is required for bookings where the is_need_credit_card_data field was passed with the true value. Should be the same with the init_uuid field value from the Create credit card token) call. pay_uuid String optional The external booking payment ID in the UUID format. ℹ️ The length is 36 characters. Must be unique for every payment. Otherwise, the ETG will return an error. The value matches the pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$. Is required for bookings where the is_need_credit_card_data field was passed with the true value. Should be the same with the pay_uuid field value from the Create credit card token) call. return_path String optional The URL at your side to redirect the user to. It is done by the payment gateway after 3D Secure check. The reason the ETG needs it. This field is required if the rate you are booking has the payment_types field with the now value. The field data_3ds of the Check booking process call will have the null value if: You don’t pass this field. The issuing bank requires 3D Secure check. ℹ️ Must have the HTTPS scheme. Might have GET parameters. The minimum length is 1 character. The maximum length is 256 character. rooms [Object] required The guests’ information for the rooms. guests Object required The guests’ information. first_name String optional The guest first name. ℹ️ It is mandatory to provide the first name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. last_name String optional The guest last name. For test purposes use the Ratehawk value. ℹ️ It is mandatory to provide the last name for at least one guest in each booked room. The minimum length is 1 character. The maximum length is 50 characters. Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: '-,.’. is_child Boolean required or optional Whether the guest is a child or not. ℹ️ Guests are considered adults unless is_child = true, even if their age is that of a child. age Int required or optional The child age in years. ℹ️ Specify the child’s age if there are children in the booking request (is_child = true). The minimum value is 0. The maximum value is 17. gender String optional The guest gender. ℹ️ Is required if the hotel you intend to book has the is_gender_specification_required field with the true value. The field appears only in the Retrieve hotel content call response. The possible values: male. female. unknown. user Object required The guest additional information. comment String optional The guest comments sent to the hotel. ℹ️ The minimum length is 1 character. The maximum length is 256 character. email String required The guest email address for contacting purposes. The email address must be valid. phone String required The guest phone number for contacting purposes. The phone number must be valid. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. supplier_data Object required or optional The contact details of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. first_name_original String required The first name of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. last_name_original String required The last name of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. email String required The email address of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. phone String required The phone number of the user who initiated the booking. ℹ️ To know if the field is required for you, contact your account manager. The minimum length is 5 characters. The maximum length is 35 characters. partner Object required The partner information. partner_order_id String required The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field value for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. comment String optional The partner booking internal comment. The comment isn’t sent to the hotel and not processed by the ETG API support team. It is visible only to the partner itself. ℹ️ The minimum length is 1 character. The maximum length is 256 character. amount_sell_b2b2c String optional The resale price for the user in the contract currency. The value is accepted if transferred (even if automatic completion of the resale price value is activated) and is displayed in the confirmatory accounting documents for the partners. ℹ️ The minimum value is 1. Response example { "data": null, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. book_hash_not_found A rare internal error when the ETG couldn’t recognize the book_hash used in the booking. After getting the error, the only option is to find another rate and continue with it. booking_form_expired In case Create booking process has been expired. Request a new Create booking process with a different partner_order_id. chosen_payment_type_was_not_available_on_booking_form The payment_type field values don’t match any of the payment_types field values in the response of the Create booking process call. Try to change the payment_type field value according to the payment_types field values in the response. double_booking_finish An attempt to finish the booking for the second time while the status of the first attempt isn’t an error. email The provided email address isn’t valid. incorrect_chosen_payment_type Invalid data provided in the payment_type field of the call request. The supplied type, amount, and/or currency_code values do not match any of the payment_type options received from the Create booking process call. incorrect_guests_number The adult guest number doesn’t match the adult guest number in the request of the Retrieve hotelpage call. Try to change the rooms field item number according to the guests field values in the request. The total number of adults derived from rooms[].guests[] does not match the search query. Any guest without is_child = true is treated as an adult (the age field alone does not mark a guest as a child). incorrect_children_data The children guest number doesn’t match the children guest number in the request of the Retrieve hotelpage call. The children age is incorrect. Try to change: The rooms field item number according to the guests field values in the request. The age field value. incorrect_rooms_number The room number doesn’t match the room number in the request of the Retrieve hotelpage call. Try to change the rooms field item number according to the guests field values in the request. insufficient_b2b_balance In case the credit limit is not sufficient for the reservation. To discuss changes to this limit please contact your account manager. order_not_found The order with the partner_order_id field value isn’t found. Send another booking creation request and change the partner_order_id field value. rate_not_found The rate isn’t found. Send another search request. return_path_required The return_path field is required if the rate you are booking has the payment_types field with the now value. unauthorized_group_booking An attempt to make a request with the conditions: More than 9 bookings in the same hotel. More than 9 bookings for the same dates. In one request. To make a group booking: Contact the API support team. Fill in the group booking form on the site. invalid_upsell_attributes Invalid name and attributes combination in upsell_data field. invalid_upsell_uid Invalid upsell uid in upsell_data field. arrival_date_differs_from_checkin_date The check-in date should be equal to or the day after the check-in date in the request of the Retrieve hotelpage call. Try to change the checkin_datetime field value according to the checkin field value in the request. not_enough_credit_card_data The init_uuid and pay_uuid fields are required if the rate you are booking has the is_need_credit_card_data field with the true value. incorrect_init_uuid_format The init_uuid field values don’t match the regular expression. incorrect_pay_uuid_format The pay_uuid field values don’t match the regular expression. sandbox_restriction An attempt to book the test hotel with the hid = 6291619 or id = test_hotel_do_not_book in the production environment. To book the test hotel, use the test environment. supplier_data_required The supplier_data field is required for your integration. Contact your account manager. timeout, unknown, and 5xx If you get the error, it doesn’t necessarily mean the booking isn’t created. These errors may occur because of the ETG services’ timeout. To check the booking finishing, send the Check booking process request. Error Handling Diagram Below is a sequence diagram describing how to handle errors during the start booking process: sequenceDiagram participant User participant API User->>API: Start booking process alt status == "ok" or error is timeout/unknown or HTTP status code 5xx API-->>User: Response: status == "ok" or error is timeout/unknown or HTTP status code 5xx User->>User: Proceed to Check Booking Process else API-->>User: Response: other error User->>User: Show error and stop end --- # Sort hotels Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/sort-hotels/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/hotelsort/ https://api.worldota.net/api/b2b/v3/search/hotelsort/ The call ranks the hotels in the region. The ranking is made the internal ETG algorithm. 💡 Recommendations Use the call when you want to determine the order of the bookings to display in a third-party product. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The possible values for the region_id field are: 2011, 2395, 2734, and 6053839. The maximum value for the hotels_limit field is 250. The maximum number of items in hotels is 250. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/hotelsort/' \ --header 'Content-Type: application/json' \ --data '{ "region_id": 536, "sort_type": "b2b", "hotels_limit": 5 }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/hotelsort/' \ --header 'Content-Type: application/json' \ --data '{ "region_id": 536, "sort_type": "b2b", "hotels_limit": 5 }' Request body Expand this| Collapse this hotels_limit Int optional The maximum number of the available hotels in the response. region_id Int required The region ID. sort_type String optional The sort order type. Is different for the B2B and B2C clients. ℹ️ The possible values: b2b. b2c. Response Expand this| Collapse this hotels [String] The hotel ID list that matches the request body. Response example { "data": { "hotels": [ "concorde_am_studio", "berlin_marriott_hotel_2", "novum_hotel_aldea_berlin_centrum", "nh_berlin_mitte", "best_western_premier_hotel_moa_berlin" ] }, "debug": { "request": { "region_id": 536, "sort_type": "b2b", "hotels_limit": 5 }, "key_id": 7705, "validation_error": null }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The region_id field is required. The region_id field is equal or greater than 0. The hotels_limit field is equal or greater than 0. The sort_type field is incorrect. hotels_not_found An internal search error. Has 500 status code. --- # Check booking process Source: https://docs.emergingtravel.com/docs/affiliate-api/booking/check-booking-process/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/ ℹ️ This call is required if you don’t use the Receive booking status webhook call. As the booking process is made asynchronously, repeatedly request this call to know the status. The call checks the booking process status. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The following features are not supported: 3D Secure check and cut-off logic. The data_3ds field is not supported. The possible values for the status field are: ok, processing, and error. The following errors are not supported: block, charge, 3ds, and not_allowed. Usage scenarios The only possible call requesting scenarios: General. No need for you to make additional steps except for receiving the final status. 3D Secure check. Needs you to make additional steps. 3D Secure check ℹ️ The scenario is required to be completed if the rate you are booking has the payment_types field with the now value. To complete the scenario, make the following steps: Request this call and receive the check details. Make the 3D Secure check request. After the 3D Secure check is completed, the payment gateway will redirect the user to the URL passed in the return_path field value of the Start booking process call. Request this call again and receive the final status. 3D Secure check details If the issuing bank supports 3D Secure cards, as the response to this call you will get: The status field with the 3ds value. The special data in data.data_3ds field. The response example: { "data": { "data_3ds": { "action_url": "https://example.com/ACS/auth/start.do", "data": { "MD": "94cf25b2-aa6d-4204-83e4-acf036d263f6", "PaReq": "eJxVkt1ygjAQhV/F4R7zIwI6azptqa2dAR0L0+s0RKAV0ADVvn0TC33833+zObs5G7g5l/vRp1RNUVcLi4yxNZKVqNOiyhZWEi9t37phEOdKyuBFik5JBqFsGp6JUZEurBl358xfpLbvSWw7U05sHzvU3hGyS92Z8DyfWww2t1t5ZNA3YrrPmAIaUCsqkfOqZcDF8W4VMYd6LsaAeoRSqlXACJ04U9fzAf0wVLyUTPFW5vz0AeiCIOquatUXc20JoAGgU3uWt+1hjtBwYSzqEpA5APQ3waYzUaOFzkXKwvfwHMXZaR08kHWQOGH8cIqC5BTGyQKQqYBUyzGKKcYOpiPszbEzx1NAlzzw0kzACJmYXE9wME1ur47+p0AbrfQehkcMBPJ8qCupK7R7vzGgv3nvn4yHotXuLPPZIY2ecbeLGlI8bulbkh2zzRZvXvfG2UuRUSy0P5Rg9yJpAJCRQf3SUL9vHV39g287E7qa", "TermUrl": "https://example.com/rebpayment/rest/finish3ds.do?ret_path=finish" }, "method": "post" }, "partner_order_id": "asd123", "percent": 66 }, "debug": null, "error": null, "status": "3ds" } 3D Secure check request Send the request with received data for the 3D Secure check: Via the GET method if the data.data_3ds.method field has the get value. Or via the POST method if the data.data_3ds.method field has the post value. The request example: curl -d '{"PaReq":"eJxVkt1ygjAQhV/F4R7zIwI6azptqa2dAR0L0+s0RKAV0ADVvn0TC33833+zObs5G7g5l/vRp1RNUVcLi4yxNZKVqNOiyhZWEi9t37phEOdKyuBFik5JBqFsGp6JUZEurBl358xfpLbvSWw7U05sHzvU3hGyS92Z8DyfWww2t1t5ZNA3YrrPmAIaUCsqkfOqZcDF8W4VMYd6LsaAeoRSqlXACJ04U9fzAf0wVLyUTPFW5vz0AeiCIOquatUXc20JoAGgU3uWt+1hjtBwYSzqEpA5APQ3waYzUaOFzkXKwvfwHMXZaR08kHWQOGH8cIqC5BTGyQKQqYBUyzGKKcYOpiPszbEzx1NAlzzw0kzACJmYXE9wME1ur47+p0AbrfQehkcMBPJ8qCupK7R7vzGgv3nvn4yHotXuLPPZIY2ecbeLGlI8bulbkh2zzRZvXvfG2UuRUSy0P5Rg9yJpAJCRQf3SUL9vHV39g287E7qa","termurl":"https://example.com/rebpayment/rest/finish3ds.do?ret_path=finish","MD":"94cf25b2-aa6d-4204-83e4-acf036d263f6}"' https://example.com/ACS/auth/start.do Result interpretation The result is described in the status response field. The possible values: ok — the booking finishing has ended with success. processing — the booking finishing is in progress. Request the status change every second until you get the ok or error value. 3ds — the booking finishing needs to complete the 3D Secure check. error — the booking finishing has ended with an error. ⚠️ Don’t forget that you might have the timeout, unknown, and 5xx error. Retry logic During the maximum booking time request this call any time you like. The recommended time is once per 5 seconds. ⚠️ Always send a final status request at the last second before the booking timeout, even if you check every 5 seconds. This reduces the risk of missing the correct status, especially with short timeouts. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/status/' \ --header 'Content-Type: application/json' \ --data '{ "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }' Request body Expand this| Collapse this partner_order_id String required The unique partner booking ID. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. Response Expand this| Collapse this data_3ds Object The 3D Secure check information. action_url String The URL of a new request for the 3D Secure check. Must have the data object field as the query parameter. data Object The 3D Secure check information that should be sent back. MD String The payment session ID returned by the card issuer. PaReq String The 3D Secure request data for the issuer. ℹ️ The line breaks in the value must be retained in all requests. Otherwise, the transaction will be declined. TermUrl String The URL of the merchant site page to redirect the user to after completing 3D Secure check on the card issuer site. ℹ️ The maximum length is 1024 characters. method String The HTTP method of sending the information. ℹ️ The possible values: get. post. partner_order_id String The external booking ID in the UUID format. The ID remains the same if you cancel a booking that: Is successful. Is failed. Has the fail status response from the Check booking process call. Use this field value for the rest of the booking calls. ℹ️ The value should be unique for the order within the same contact. The minimum length is 3 character. The maximum length is 256 characters. percent Int deprecated The order confirmation percentage. All current statuses are described in the Result interpretation section. The ok status in the response indicates that the order is confirmed. Response example { "data": { "data_3ds": null, "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "percent": 100 }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. block The card funds can’t be frozen (blocked) for the booking payment. charge The card funds can’t be withdrawn for the booking payment due to: A failed freeze. Another reason. 3ds The MD field value is invalid. soldout The rate is no longer available as its rooms are sold out. book_limit The cut-off logic limit for the booking finishing is reached. not_allowed There is no permission to use this call for this contract: Contact the API support team. Tell the user the booking error has occurred. When contacting the API support team, provide at least: The hotel name where the booking is in process. The order_id field with the value from the Create booking process call. The user and rooms fields with the values from the Start booking process call. This information will help to identify the request attempt. provider A technical error at the rate provider side. order_not_found The order with the partner_order_id field value isn’t found. Try to change the value. booking_finish_did_not_succeed An attempt to request this call without a successful response from the Start booking process call. timeout, unknown, and 5xx An internal error. Continue to request this call until you get the following response: The status field has the ok value. The error field has one of the values: 3ds. block. book_limit. booking_finish_did_not_succeed. charge. decoding_json. endpoint_exceeded_limit. endpoint_not_active. endpoint_not_found. incorrect_credentials. invalid_auth_header. invalid_params. lock. no_auth_header. not_allowed. not_allowed_host. order_not_found. overdue_debt. provider. soldout. unexpected_method. ℹ️ The requests should be sent within the agreed booking timeout. Error Handling Diagram Below is a sequence diagram describing how to handle errors during the booking check process: sequenceDiagram participant User participant API User->>API: Check booking process alt status == "ok" API-->>User: Booking is successfully confirmed else status == "processing" or error is (timeout/unknown) or HTTP status code 5xx loop Wait and poll (until status is "ok", final error, or booking timeout reached) User->>API: Check Booking Process alt status == "ok" API-->>User: Booking is successfully confirmed User->>User: Stop polling else status == "processing" or error is (timeout/unknown) or HTTP status code 5xx API-->>User: Still processing or transient error, continue polling else status is final error (e.g., soldout, provider, book_limit) or booking timeout reached API-->>User: Return final error or booking timeout User->>User: Stop polling, show error end end else status is final error (e.g., soldout, provider, book_limit) or booking timeout reached API-->>User: Return final error or booking timeout User->>User: Stop, show error end --- # Retrieve hotel reviews’ dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-hotel-reviews-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/reviews/dump/ https://api.worldota.net/api/b2b/v3/hotel/reviews/dump/ The call gets the dump with the hotels reviews of the ETG clients. ℹ️ The dump should be updated every week. The ETG generates each archive for a single language. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. The ETG can’t share the TripAdvisor reviews via the API. Reviews indexing isn’t allowed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The maximum number of items in the dump is 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Dump file structure The dump is a GZIP archive that contains a file with hotel IDs and objects with theirs reviews. { "corendon_vitality_hotel_amsterdam": { "rating": 9, "detailed_ratings": { "cleanness": 8.6, "location": 7.9, "price": 8.6, "services": 8.4, "room": 9.5, "meal": 10, "wifi": 10, "hygiene": null }, "reviews": [ { "review_plus": "It is near the metro m51 which is good for reaching any place of city. Breakfast is really good. Clean confortable and with great view", "review_minus": "Nothing all good", "created": "2022-05-17", "author": "Alban", "adults": 2, "children": 0, "room_name": "Standard Double room (full double bed) (bed type is subject to availability)", "nights": 2, "images": [], "detailed": { "cleanness": 10, "location": 10, "price": 8, "services": 10, "room": 10, "meal": 10, "wifi": "perfect", "hygiene": "unspecified" }, "traveller_type": "couple", "trip_type": "leisure", "rating": 9 } ] } } Field details The entire dump structure is described in the response of the Retrieve hotels review by IDs call. Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Suggest hotel and region Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/suggest-hotel-and-region/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/multicomplete/ https://api.worldota.net/api/b2b/v3/search/multicomplete/ This call enables autocomplete: you can find a region or hotel by entering just part of its name. The response returns no more than 5 results per category. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The input value for the language field is ignored; it is always set to en. The maximum number of items in hotels is 5. The possible values for hotels.region_id are: 2011, 2395, 2734, and 6053839. The regions field is always null. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/multicomplete/' \ --header 'Content-Type: application/json' \ --data '{ "query": "Ber", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/multicomplete/' \ --header 'Content-Type: application/json' \ --data '{ "query": "Ber", "language": "en" }' Request body Expand this| Collapse this language String optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. query String required The part of the hotel or region name. Response Expand this| Collapse this hotels Object Hotels of different types that meet request parameters. ℹ️ The maximum number of items is 5. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. name String Hotel’s name. region_id Int The region ID. regions Object The region list. ℹ️ The maximum items’ number is 5. id String deprecated The unique region ID. name String The region name. type String The region type. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (Within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). country_code String The region country code in the ISO 3166-1 alpha-2 format. Response example { "data": { "hotels": [ { "id": "gostinitsa_berlin", "hid": 8066022, "name": "Berlin Hotel", "region_id": 1798 }, { "id": "bergs_hotel_2", "hid": 9974510, "name": "Bergs Spa and Сonference Hotel", "region_id": 5580 }, { "id": "rp_bergamo_hotel", "hid": 10575679, "name": "Bergamo Eco Hotel", "region_id": 6057804 }, { "id": "hotel_dacha_na_berezovoy", "hid": 6344433, "name": "Dacha Na Berezovoi Apartments", "region_id": 965821558 }, { "id": "travel_hotels_bereg_hotel", "hid": 10211188, "name": "Hotel Priboi by Sun City Hotels", "region_id": 299 } ], "regions": [ { "id": 536, "name": "Berlin", "type": "City", "country_code": "DE" }, { "id": 965888340, "name": "Saint-Philbert-de-Grand-Lieu", "type": "City", "country_code": "FR" }, { "id": 6340759, "name": "Montalbert", "type": "City", "country_code": "FR" }, { "id": 965850065, "name": "Cote d'Azur", "type": "Multi-Region (within a country)", "country_code": "FR" }, { "id": 966047519, "name": "Saint-Philbert-sur-Orne, Normandy", "type": "City", "country_code": "FR" } ] }, "debug": { "request": { "query": "Ber", "language": "en" }, "key_id": 7705, "validation_error": null }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The query field is required. core_search_error An internal search error. Has 500 status code. --- # Receive booking status webhook Source: https://docs.emergingtravel.com/docs/affiliate-api/booking/receive-booking-status-webhook/ ℹ️ This call is required if you don’t use the Check booking process call. The call retrieves a webhook for the booking process status via the POST method. Sandbox limitations No changes. Getting webhook scenario Provide the callback URL to the API support team. The API support team sets up the callback URL. Once the callback URL is set and the booking process is finished, the ETG API sends the webhook. Check if the webhook is received on your side and send the appropriate response. ℹ️ At the last second, request this call for the last time and receive the status: completed — the booking finishing will end with success. failed — the booking finishing will end with an error. Your server responses The ETG listens to the following codes from your server and reacts accordingly: Code 200 — the webhook is received successfully and doesn’t need a retry. Any code greater than 299 (including 4xx and 5xx responses) — the ETG will retry sending the webhook. Retries are performed with increasing intervals, depending on the number of previous attempts: 30 seconds. 60 seconds. 90 seconds. 120 seconds. 150 seconds. 300 seconds (5 minutes). 1 hour. 12 hours. After the 7th attempt, all subsequent retries will be performed every 12 hours, up to a total of 21 retry attempts. Payload Expand this| Collapse this partner_order_id String required The unique partner booking ID. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. status String required The booking finishing status. ℹ️ The possible values: completed — the booking finishing has ended with success. failed — the booking finishing has ended with an error. To know the reason for the failure, use the Check booking process call. The payload example: { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "status": "completed" } Secure data Expand this| Collapse this signature String required The hexadecimal digits generated by the HMAC algorithm. timestamp Int required The date and time of creating a webhook token in the Unix Timestamp format. ℹ️ The minimum date is January 1, 1970. You can find it in the token signature when decoding. token String required The randomly generated string with the length of 50 characters. The secure data example: { "signature": { "signature": "7865d225dbee1b54909er153d193e0b57b707ebe81ff5b2e1b71ebaf749bec23", "timestamp": 1574146939, "token": "d3395025-1ee7-49a2-bd86-e4bd6b9908b2" } } Whole fields example { "data": { "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6", "status": "completed" }, "signature": { "signature": "7865d225dbee1b54909er153d193e0b57b707ebe81ff5b2e1b71ebaf749bec23", "timestamp": 1574146939, "token": "d3395025-1ee7-49a2-bd86-e4bd6b9908b2" } } Signature verification To verify the webhook issued by the ETG: Concatenate the timestamp and token values. The “token” means the one sent by the ETG in the webhook data. Encode the resulting string with the HMAC algorithm: Use your API Key token as a key. Use the SHA256 digest mode. Use the hexdigest() method to make a resulting string. Compare the resulting string to the signature. Optional. Cache the token locally and don’t honor any subsequent request with the same token. This will prevent replay attacks. Optional. Check that the timestamp is within the token lifetime. Examples Python import hashlib, hmac def verify(api_key, token, timestamp, signature): hmac_digest = hmac.new(key=api_key, msg='{}{}'.format(timestamp, token), digestmod=hashlib.sha256).hexdigest() return hmac.compare_digest(unicode(signature), unicode(hmac_digest)) Ruby require 'openssl' def verify(api_key, token, timestamp, signature) digest = OpenSSL::Digest::SHA256.new data = [timestamp, token].join signature == OpenSSL::HMAC.hexdigest(digest, api_key, data) end PHP function verify($apiKey, $token, $timestamp, $signature) { // check if the timestamp is fresh if (abs(time() - $timestamp) > 15) { return false; } // returns true if signature is valid return hash_hmac('sha256', $timestamp . $token, $apiKey) === $signature; } Node.js const crypto = require('crypto') const verify = ({ apiKey, timestamp, token, signature }) => { const encodedToken = crypto .createHmac('sha256', apiKey) .update(timestamp.toString().concat(token)) .digest('hex') return (encodedToken === signature) } --- # Retrieve regions’ dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-regions-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/region/dump/ https://api.worldota.net/api/b2b/v3/hotel/region/dump/ The call gets the dump with the hotels of all available ETG regions. ℹ️ The dump should be updated every week. The ETG generates one archive only. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Content indexing isn’t allowed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. In the dump, the number of items is 1000. For all objects with the region_id field, the possible values are: 2011, 2395, 2734, and 6053839. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/region/dump/' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/region/dump/' Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Dump file structure The dump is a Zstd archive that contains a file with a list of objects line by line: [ { "country_name": { "ar": null, "bg": "Полша" // other languages... } }, { "country_name": { "ar": "الولايات المتحدة الأمريكية", "bg": "Съединени щати" // other languages... } } ] Each object in its turn contains a region’s description (each line is a single region in json format). Structure of the region { "country_name": { "ar": "باربادوس", "bg": "Барбадос", "de": "Barbados", "el": "Μπαρμπάντος", "en": "Barbados", "es": "Barbados", "fr": "Barbade", "hu": "Barbados", "it": "Barbados", "pl": "Barbados", "pt": "Barbados", "ro": "Barbados", "sq": "Barbadosi", "sr": "Барбадос", "tr": "Barbados" }, "country_code": "BB", "center": { "longitude": -59.618847, "latitude": 13.101827 }, "hids": [ 101, 102, 103 ], "hotels": [ "radisson_aquatica_resort_barbados", "spacious_colonial", "malfranza_apartments", "island_inn_all_inclusive_hotel", "hilton_barbados_resort", "sweetfield_manor_historic_inn_", "bellevue_plantation", "nautilus_beach_apartments", "walmer_lodge_apartments", "melbourne_apartments_3", "the_barbados_chi_centre", "paradise_villas_2", "beach_nest", "3_angels", "believe_caribbean_apartments", "bellevue_plantation_polo_club" ], "iata": "BGI", "id": 554, "type": "City", "name": { "ar": "بريدج تاون", "bg": null, "de": "Bridgetown", "el": "Bridgetown", "en": "Bridgetown", "es": "Bridgetown", "fr": "Bridgetown", "hu": null, "it": "Bridgetown", "pl": "Bridgetown", "pt": "Bridgetown", "ro": null, "sq": null, "sr": null, "tr": null } } Field details Expand this| Collapse this country_name Object The name of the region’s country in all languages available at Emerging Travel Group. country_code String The region country code in the ISO 3166-1 alpha-2 format. center [Object] Geographical coordinates of the region’s center. longitude Float The region’s center geographical longitude. latitude Float The region’s center geographical latitude. hids Object Array of internal hotel IDs. ℹ️ Field may be missing, null, or [ ] (empty array) if there are no items. hotels Object The list of hotel IDs that are located in the region. iata String Three-letter IATA code. id String The unique region ID. type String The type of the region where the hotel is located. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). name Object The name of the region in all languages available at Emerging Travel Group. To decompress the archive you can use, for example, a Zstandard plugin or 7-zip archive manager with Zstandard. Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Retrieve hotelpage Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/retrieve-hotelpage/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/hp/ https://api.worldota.net/api/b2b/v3/search/hp/ ℹ️ This call is required for the Recommended Flow (Prebook from Hotelpage). Request this call only when the user has chosen the hotel. Don’t request this call for each of the hotels found from the calls made by the SERP mechanism. The call gets the hotel available rates. Show this information to the user when they have chosen the hotel and want to see the rates. ℹ️ The limitations: The recommended rate lifetime is 30 minutes. The actual rate lifetime is longer and depends on different internal factors. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The value of the currency field is always set to USD. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross. hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/hp/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-11-22", "checkout": "2026-11-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hid": 10004834, "currency": "USD", "filter": { "star_rating": [ 4 ], "kind": [ "Hotel" ], "meal_type": [ "all-inclusive", "super-all-inclusive", "soft-all-inclusive", "ultra-all-inclusive" ] } }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/hp/' \ --header 'Content-Type: application/json' \ --data '{ "checkin": "2026-11-22", "checkout": "2026-11-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hid": 10004834, "currency": "USD", "filter": { "star_rating": [], "kind": [], "meal_type": [] } }' Request body Expand this| Collapse this checkin String required The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String required The check-out date. The value must be not later than 30 days from the checkin field value. currency String optional The currency of all rooms’ prices. If passed, the show_amount and show_currency_amount fields will have the currency of this field. ℹ️ The default value is the contract currency for prepaid rates. id String required or optional deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int required or optional The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. match_hash String optional The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. residency String required or optional The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. timeout Float optional The maximum amount of time in seconds within which searching for rates will be executed. ℹ️ The maximum value is 100. guests [Object] optional The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int required The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] optional The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. filter [Object] optional Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion. star_rating [Int] optional The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The list of possible star_rating field values is obtained from the call Retrieve filter values. kind [String] optional The hotel type. ℹ️ The list of possible kind field values is obtained from the call Retrieve filter values. meal_type String optional Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types. ℹ️ The list of possible meal_type field values is obtained from the call Retrieve hotel static data. price_from Int optional Minimum rate price. The value must be an integer greater than 0 and less than the value of price_to. Filtering is applied to rate prices in the search currency (show_amount). price_to Int optional Maximum rate price. The value must be an integer greater than 0 and greater than the value of price_from. Filtering is applied to rate prices in the search currency (show_amount). Response Expand this| Collapse this hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from hotelpage step call. The value lifetime is 24 hours after you have got the available rate. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The currency code in the request body. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. Response example { "data": { "hotels": [ { "id": "conrad_los_angeles", "hid": 10004834, "rates": [ { "book_hash": "h-8e21aecc-7639-53e7-9ae4-5d08c375b847", "match_hash": "m-1c758b49-7e79-5d7e-b39f-cd6999693694", "daily_prices": [ "443.78", "443.78", "443.78" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "1331.34", "show_amount": "1331.34", "currency_code": "USD", "show_currency_code": "USD", "by": null, "is_need_credit_card_data": true, "is_need_cvc": true, "type": "hotel", "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "183.63", "currency_code": "USD" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "135.00", "currency_code": "USD" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": null, "amount_charge": "1331.34", "amount_show": "1331.34" } ], "free_cancellation_before": null } } ] }, "rg_ext": { "class": 3, "quality": 6, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Deluxe Double room (full double bed) (king size bed, handicap accessible)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 3, "amenities_data": [ "non-smoking", "accessible", "king-bed" ], "any_residency": true, "deposit": null, "no_show": { "amount": "1331.00", "currency_code": "USD", "from_time": "12:00:00" }, "room_data_trans": { "main_room_type": "Deluxe Double room", "main_name": "Deluxe Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "king size bed, handicap accessible", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Лос-Анджелес", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "from 9-18 local time" } }, "is_package": false }, { "book_hash": "h-6ac42450-53d0-59a5-9543-a11f40132617", "match_hash": "m-fde98be9-7272-5cf3-9784-d3c8b319c5b9", "daily_prices": [ "4457.01", "5008.18", "4416.31" ], "meal": "breakfast", "meal_data": { "value": "breakfast", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "13881.50", "show_amount": "13881.50", "currency_code": "USD", "show_currency_code": "USD", "by": null, "is_need_credit_card_data": true, "is_need_cvc": true, "type": "hotel", "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "1914.69", "currency_code": "USD" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "135.00", "currency_code": "USD" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-11-21T08:00:00", "amount_charge": "0.00", "amount_show": "0.00" }, { "start_at": "2026-11-21T08:00:00", "end_at": null, "amount_charge": "13881.50", "amount_show": "13881.50" } ], "free_cancellation_before": "2026-11-21T08:00:00" } } ] }, "rg_ext": { "class": 5, "quality": 23, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Conrad Penthouse Double Suite (full double bed)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "non-smoking" ], "any_residency": true, "deposit": null, "no_show": { "amount": "4457.00", "currency_code": "USD", "from_time": "12:00:00" }, "room_data_trans": { "main_room_type": "Conrad Penthouse Double Suite", "main_name": "Conrad Penthouse Double Suite", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": null, "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Лос-Анджелес", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "from 9-18 local time" } }, "is_package": false } ] } ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/hp", "is_active": true, "is_limited": true, "remaining": 8, "requests_number": 10, "reset": "2026-04-16T20:22:00", "seconds_number": 60 }, "request": { "checkin": "2026-11-22", "checkout": "2026-11-25", "residency": "gb", "language": "en", "guests": [ { "adults": 2, "children": [] } ], "hid": 10004834, "currency": "USD", "filter": { "star_rating": [], "kind": [], "meal_type": [] } }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "6e5e3848a3c4ffd3b506d20d40288b2c", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:21:53.213358" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The request body is invalid. core_search_error An internal search error. Has 500 status code. --- # Retrieve hotel reviews’ incremental dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-incremental-hotel-reviews-dump/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/ https://api.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/ The call gets the dump with the hotel reviews of the ETG clients whose reviews have been added from the previous update. ℹ️ The dump: Is incremental. Should be updated every week. The ETG generates each archive for a single language. ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. The ETG can’t share the TripAdvisor reviews via the API. Reviews indexing isn’t allowed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The value of the language field is always set to en. The maximum number of items in the dump is 1000. For all objects containing the currency_code field, its value is always EUR. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/incremental_reviews/dump/' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' Request body Expand this| Collapse this language String required The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "last_update": "2020-07-01T00:38:13Z", "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour }, "debug": null, "error": null, "status": "ok" } Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Prebook rate from hotelpage step Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/prebook-rate-from-hotelpage-step/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/prebook/ https://api.worldota.net/api/b2b/v3/hotel/prebook/ ℹ️ This call is recommended. If method is not used: The risk of receiving a soldout error at the booking stage increases. The order confirmation process will take longer. The call checks if the requested rate is still available before it can be booked and improves the booking success rate: When the original rate is not available, the system searches only for alternative rates of the same room type and board type (e.g., switching between refundable and non-refundable conditions within the price_increase_percent limit). The search does not extend to different room types or board types. If an alternative rate is found, new book_hash and match_hash values are returned. In cases where the same rate cannot be found and a price increase is permitted via the price_increase_percent field. The call will attempt to find the same room and board type at an increased price, but not exceeding the allowed percentage. The value in the payment_options field may change. ℹ️ The limitations: The recommended call timeout is 60 seconds. The minimum call timeout is 30 seconds. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission The following errors are not supported: no_available_rates, unknown, and contract_mismatch. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "h-5e5b5107-7745-5926-8c28-303baddd7327", "price_increase_percent": 20 }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/prebook' \ --header 'Content-Type: application/json' \ --data '{ "hash": "h-6ac42450-53d0-59a5-9543-a11f40132617", "price_increase_percent": 20 }' Request body Expand this| Collapse this hash String required The unique rate ID. Use this value within 24 hours after the Retrieve hotelpage call returns a relevant rate. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. price_increase_percent Int optional The percentage by which the new price can be higher than the original price. For example, if you send price_increase_percent=20 and the starting price is 1,000, the maximum allowed price for this pre-book call is 1,200. If the value isn’t provided, the API will try to rebook with the same price or lower. ℹ️ The minimum value is 0. The maximum value is 100. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. changes Object The rate price change information. price_changed Boolean Whether the rate price is changed or not. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the book_hash field of the Create booking process call. The value lifetime is 6 hours after you have got the rate from the search results. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. Response example { "data": { "hotels": [ { "id": "conrad_los_angeles", "hid": 10004834, "rates": [ { "book_hash": "p-86877a1e-d725-4824-9833-c50a12a48171", "match_hash": "m-fde98be9-7272-5cf3-9784-d3c8b319c5b9", "daily_prices": [ "4457.01", "5008.18", "4416.31" ], "meal": "breakfast", "meal_data": { "value": "breakfast", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "13881.50", "show_amount": "13881.50", "currency_code": "USD", "show_currency_code": "USD", "by": null, "is_need_credit_card_data": true, "is_need_cvc": true, "type": "hotel", "tax_data": { "taxes": [ { "name": "occupancy_tax", "included_by_supplier": true, "amount": "1914.69", "currency_code": "USD" }, { "name": "resort_fee", "included_by_supplier": false, "amount": "135.00", "currency_code": "USD" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-11-21T08:00:00", "amount_charge": "0.00", "amount_show": "0.00" }, { "start_at": "2026-11-21T08:00:00", "end_at": null, "amount_charge": "13881.50", "amount_show": "13881.50" } ], "free_cancellation_before": "2026-11-21T08:00:00" } } ] }, "rg_ext": { "class": 5, "quality": 23, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Conrad Penthouse Double Suite (full double bed)", "room_name_info": null, "serp_filters": [ "has_bathroom" ], "allotment": 1, "amenities_data": [ "non-smoking" ], "any_residency": true, "deposit": null, "no_show": { "amount": "4457.00", "currency_code": "USD", "from_time": "12:00:00" }, "room_data_trans": { "main_room_type": "Conrad Penthouse Double Suite", "main_name": "Conrad Penthouse Double Suite", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": null, "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Conrad Los Angeles", "address": "100 South Grand Avenue, Лос-Анджелес", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "from 9-18 local time" } }, "is_package": false } ] } ], "changes": { "price_changed": false } }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/prebook", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-04-16T20:27:00", "seconds_number": 60 }, "request": { "hash": "h-6ac42450-53d0-59a5-9543-a11f40132617", "price_increase_percent": 20 }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "716ecacd3da15f9fd2604278658c8106", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T20:26:46.835910" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. no_available_rates The rate with the price_increase_percent field value isn’t found. Try to change the value. rate_not_found The rate with the hash field value isn’t found. The hash field value has expired. Send another search request and change the hash field value. invalid_params The hash field is required. The hash field value is incorrect. The price_increase_percent field value is less than 0. unknown The internal ETG services’ timeout. prebook_disabled There is no permission to use this call for this contract. Contact the API support team. contract_mismatch The pre-book contract differs from the rate contract. They should be the same. --- # Retrieve point of interest dump Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-point-of-interest-dump/ https://api.worldota.net/api/b2b/v3/hotel/poi/dump The call returns a dump with a list of hotels by various locations along with nearby points of interest (POI). ⚠️ The dump download link you receive from the API is temporary and will expire 1 hour after being issued. To download the dump, you must call the API method each time to obtain a fresh, valid link. Content indexing isn’t allowed. Request example curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/poi/dump' \ --header 'Content-Type: application/json' \ --data '{ "language": "en" }' Response Expand this| Collapse this language Int required or optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this url String A direct link to download the dump file. last_update DateTime The date and time when this dump was last updated (in UTC, ISO 8601 format). Response example { "data": { "url": "https://.../partner_feed_v3_en.jsonl.zst?..." // link valid for 1 hour "last_update": "2025-09-15T04:47:20Z" }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/poi/dump", "is_active": true, "is_limited": true, "remaining": 98, "requests_number": 100, "reset": "2025-09-17T00:00:00", "seconds_number": 86400 }, "request": { "language": "en" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "3234913e4c9dc04f843410ecd098a596", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-09-16T16:14:50.755175" }, "status": "ok", "error": null } Dump file structure The file available at the url contains the following structure: [ { "id": "string", "hid": 12345, "pois": [ { "poi_name": "string", "poi_name_en": "string", "poi_type": "string", "poi_subtype": "string", "distance": 321 } ] } ] Field details Expand this| Collapse this hotel [Object] Describes a hotel, providing its unique identifiers together with a list of associated points of interest (POI). id [String] The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. pois [Object] The list of nearby points of interest (POI) associated with this hotel. poi_name String The name of the point of interest in the local language. poi_name_en String The name of the point of interest in English. poi_type String The main category or type of the point of interest (e.g., beach, airport, attraction). ℹ️ The possible values: Unspecified, Continent. Country. Multi-Region (within a country). Province (State). Multi-City (Vicinity). City. Airport. Bus Station. Railway Station. Subway (Entrace). Neighborhood. Point of Interest. Multi-Railway Station. Main Railway Station. poi_subtype String A more specific category or subtype of the point of interest. ℹ️ The possible values: unspecified, administrative_center. arenas_and_stadiums. bars_and_restaurants. beach. buddist_temple. business_center. cableway. casino_and_gambling. church. concerts_and_performances. educational_objects. entertainment_and_games. harbor. historical_poi. hospital. library. mosque. museum. park. shopping. ski. theater. viewpoint. water_parks_and_amusement_parks. zoos_and_aquariums. distance Int The distance from the hotel to the point of interest, in meters. Errors The error field has the value specified in the headers below. dump_not_ready The dump is in processing. Try to send the request later. --- # Prebook rate from search step Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/prebook-rate-from-search-step/ This call is available upon request. Please contact our API support team to gain access. Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/serp/prebook/ https://api.worldota.net/api/b2b/v3/serp/prebook/ ℹ️ This call is recommended. If method is not used: The risk of receiving a soldout error at the booking stage increases. The order confirmation process will take longer. Request this call right after the SERP calls withing 38 minutes. The call checks if the requested rate is still available before it can be booked and improves the booking success rate: When the original rate is not available, the system searches only for alternative rates of the same room type and board type (e.g., switching between refundable and non-refundable conditions within the price_increase_percent limit). The search does not extend to different room types or board types. If an alternative rate is found, new book_hash and match_hash values are returned. In cases where the same rate cannot be found and a price increase is permitted via the price_increase_percent field. The call will attempt to find the same room and board type at an increased price, but not exceeding the allowed percentage. The value in the payment_options field may change. ℹ️ The limitations: The recommended call timeout is 60 seconds. The minimum call timeout is 30 seconds. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The maximum number of items in hotels.rates is 5. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission The following errors are not supported: no_available_rates, unknown. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/serp/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "sr-019a3ae6-0160-7945-9f6d-516791a39260", "price_increase_percent": 20 }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/serp/prebook/' \ --header 'Content-Type: application/json' \ --data '{ "hash": "sr-019a3ae6-0160-7945-9f6d-516791a39260", "price_increase_percent": 20 }' Request body Expand this| Collapse this hash String required The unique rate ID. ℹ️ Get this value from the search_hash field of the calls: Search by hotel IDs. Search by geo coordinates. Search by region. Use this value within 6 hours after you have got the rate. The minimum length is 1 character. The maximum length is 256 characters. price_increase_percent Int optional The percentage by which the new price can be higher than the original price. For example, if you send price_increase_percent=20 and the starting price is 1,000, the maximum allowed price for this pre-book call is 1,200. If the value isn’t provided, the API will try to rebook with the same price or lower. ℹ️ The minimum value is 0. The maximum value is 100. Response Expand this| Collapse this total_hotels Int The total number of unique hotels. changes Object The rate price change information. price_changed Boolean Whether the rate price is changed or not. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the book_hash field of the Create booking process call. The value lifetime is 6 hours after you have got the rate from the search results. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. beds Object An array listing the types and quantities of beds available in the room. ℹ️ This field and its nested fields are not available in the Sandbox environment. bed String Type of bed. count String Quantity of this bed type. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. Response example { "data": { "hotels": [ { "id": "dukes_dubai", "hid": 8663536, "rates": [ { "book_hash": "p-ca1f9fef-bcf7-461e-a0d1-00850ffd10bb", "match_hash": "m-d0b85aee-3e6e-556b-a9b6-d98b084764ff", "daily_prices": [ "605.97", "605.97", "605.97" ], "meal": "all-inclusive", "meal_data": { "value": "all-inclusive", "has_breakfast": true, "no_child_meal": false }, "payment_options": { "payment_types": [ { "amount": "163377.76", "show_amount": "1817.90", "currency_code": "EUR", "show_currency_code": "EUR", "by": null, "is_need_credit_card_data": false, "is_need_cvc": false, "type": "deposit", "vat_data": { "included": false, "applied": false, "amount": "0.00", "currency_code": "EUR", "value": "0.00" }, "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "60.00", "currency_code": "AED" }, { "name": "occupancy_tax", "included_by_supplier": true, "amount": "103.44", "currency_code": "EUR" }, { "name": "service_fee", "included_by_supplier": true, "amount": "162.91", "currency_code": "EUR" }, { "name": "vat", "included_by_supplier": true, "amount": "73.88", "currency_code": "EUR" } ] }, "perks": {}, "commission_info": { "show": { "amount_gross": "1855.00", "amount_net": "1817.90", "amount_commission": "37.10" }, "charge": { "amount_gross": "166712.00", "amount_net": "163377.76", "amount_commission": "3334.24" } }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-10-08T22:00:00", "amount_charge": "0.00", "amount_show": "0.00", "commission_info": { "show": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" }, "charge": { "amount_gross": "0.00", "amount_net": "0.00", "amount_commission": "0.00" } } }, { "start_at": "2026-10-08T22:00:00", "end_at": "2026-10-14T22:00:00", "amount_charge": "54393.92", "amount_show": "605.64", "commission_info": { "show": { "amount_gross": "618.00", "amount_net": "605.64", "amount_commission": "12.36" }, "charge": { "amount_gross": "55504.00", "amount_net": "54393.92", "amount_commission": "1110.08" } } }, { "start_at": "2026-10-14T22:00:00", "end_at": null, "amount_charge": "163377.76", "amount_show": "1817.90", "commission_info": { "show": { "amount_gross": "1855.00", "amount_net": "1817.90", "amount_commission": "37.10" }, "charge": { "amount_gross": "166712.00", "amount_net": "163377.76", "amount_commission": "3334.24" } } } ], "free_cancellation_before": "2026-10-08T22:00:00" }, "recommended_price": null } ] }, "bar_rate_price_data": null, "rg_ext": { "class": 3, "quality": 17, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Premium Double room (full double bed) (bed type is subject to availability)", "room_name_info": { "original_rate_name": "Premium Room " }, "serp_filters": [ "has_bathroom" ], "sell_price_limits": null, "allotment": 99, "amenities_data": [ "not-guaranteed", "non-smoking" ], "any_residency": false, "deposit": null, "no_show": null, "room_data_trans": { "main_room_type": "Premium Double room", "main_name": "Premium Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": "bed type is subject to availability", "beds": [ { "bed": "double", "count": 1 } ] }, "legal_info": { "provider": { "name": "", "address": "", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000" }, "hotel": { "name": "Отель Dukes The Palm Dubai", "address": "Palm Jumeirah, Dubai, Дубай", "taxpayer_number": "0000000000", "state_registration_number": "0000000000000", "work_time": "с 9 до 18 по местному времени" } }, "is_package": false } ], "bar_price_data": null } ], "changes": { "price_changed": false } }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/serp/prebook", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-04-16T20:00:00", "seconds_number": 60 }, "request": { "hash": "sr-019d97d3-f8ef-70e7-b3c8-d9886d2164b0", "price_increase_percent": 20 }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "386c74eff7c700ac70c55ab501d97faf", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-16T19:59:32.918838" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. no_available_rates The rate with the price_increase_percent field value isn’t found. Try to change the value. rate_not_found The rate with the hash field value isn’t found. The hash field value has expired. Send another search request and change the hash field value. invalid_params The hash field is required. The hash field value is incorrect. The price_increase_percent field value is less than 0. unknown The internal ETG services’ timeout. prebook_from_serp_disabled There is no permission to use this call for this contract. Contact the API support team. contract_mismatch The pre-book contract differs from the rate contract. They should be the same. --- # Retrieve hotel static data Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-hotel-static-data/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/static/ https://api.worldota.net/api/b2b/v3/hotel/static/ The call gets descriptions and translations for the static parameters of the hotels and rooms. Renew the dump every month. Sandbox limitations No changes. Response Expand this| Collapse this beddings [Object] The list of room beddings. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. meals [Object] The list of the hotel meal types. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. room_amenities [Object] The list of room amenities. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. serp_filters [Object] The list of hotel amenities. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. socket_types [Object] The reference list of all supported socket types. ℹ️ Use this field to map the socket type codes to their human-readable names and translations. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. taxes [Object] The list of rate taxes. locale Object The translation item. ar String The Arabic translation. bg String The Bulgarian translation. cs String The Czech translation. de String The German translation. el String The Greek translation. en String The English translation. es String The Spanish translation. fr String The French translation. he String The Hebrew translation. hu String The Hungarian translation. it String The Italian translation. ja String The Japanese translation. kk String The Kazakh translation. ko String The Korean translation. nl String The Dutch translation. pl String The Polish translation. pt String The Portuguese translation. pt_PT String The Portuguese (Portugal) translation. ro String The Romanian translation. ru String The Russian translation. sq String The Albanian translation. sr String The Serbian translation. th String The Thai translation. tr String The Turkish translation. uk String The Ukrainian translation. vi String The Vietnamese translation. zh_CN String The Simplified Chinese translation. name String The internal item name. amenity_translations [Object] Amenity names translated into different languages for various types of accommodation (e.g., apartments, hotels, etc.). slug String Amenity identifier used as a key for integration. kind String Type of accommodation for which this amenity is relevant (e.g., APARTMENT). name [Object] List of translations of the amenity name in different languages. lang String Language code according to ISO 639-1. value String Translation of the amenity name in the specified language. amenities [Object] A list with detailed translations of descriptive amenity information for various languages. Provides more specific information in addition to amenity_translations. name [Object] List of translations of the amenity name in different languages. lang String Language code according to ISO 639-1. value String Translation of the detailed amenity description in the specified language. Response example { "data": { "beddings": [ { "locale": { "ar": "سريرين مفرّدين", "bg": "2 единични легла", "cs": "2 samostatné postele" }, "name": "twin" }, { "locale": { "ar": "سرير بطابقين", "bg": "Двуетажно легло", "cs": "Patrová postel" }, "name": "sofa-bed" } ], "meals": [ { "locale": { "ar": "العشاء", "bg": "Вечеря", "cs": "Večeře" }, "name": "dinner" }, { "locale": { "ar": "وجبات الإفطار والغداء والعشاء مشمولة", "bg": "С включени закуска, обяд и вечеря", "cs": "Snídaně, oběd a večeře v ceně" }, "name": "breakfast" } ], "room_amenities": [ { "locale": { "ar": "سرير الأطفال مشمول", "bg": "С включено детско легло", "cs": "Dětská postel je zahrnuta v ceně" }, "name": "child-bed" }, { "locale": { "ar": "سرير الأطفال غير مشمول", "bg": "Не е включено детско легло", "cs": "Dětská postel není zahrnuta v ceně" } } ], "taxes": [ { "locale": { "ar": "ضريبة القيمة المضافة", "bg": "ДДС", "cs": "DPH" }, "name": "vat" }, { "locale": { "ar": "رسوم المنتجع", "bg": "Курортна такса", "cs": "Rekreační poplatek" } } ], "serp_filters": [ { "locale": { "ar": "الانتقال بمصعد التزلج", "bg": "Трансфер до ски лифта", "cs": "Transfer k lyžařskému vleku" }, "name": "has_ski_shuttle" }, { "locale": { "ar": "مطبخ", "bg": "Кухня", "cs": "Kuchyň" } } ], "socket_types": [ { "locale": { "ar": "مقبس أمريكي (غير مؤرض)", "bg": "американски контакт (заземен)", "cs": "Americká zásuvka (bez uzemnění)" }, "name": "a" }, { "locale": { "ar": "مقبس أمريكي (مؤرض)", "bg": "американски контакт (заземен)", "cs": "Americká zásuvka (s uzemněním)" } } ], "amenity_translations": [ { "slug": "has_parking", "kind": "APARTMENT", "name": [ { "lang": "tr", "value": "Parking" }, { "lang": "fi", "value": "Parking" }, { "lang": "fr", "value": "Parking" } ] }, { "slug": "has_disabled_support", "kind": "APARTMENT", "name": [ { "lang": "kk", "value": "Инклюзивтілік" }, { "lang": "uk", "value": "Інклюзивність" }, { "lang": "sq", "value": "Inklusivitet" } ] } ], "amenities": [ { "name": [ { "lang": "he", "value": "חניה מחוץ לאתר בחינם" }, { "lang": "hu", "value": "Ingyenes parkolás a helyszínen kívül" }, { "lang": "kk", "value": "Қонақ үйден тыс тегін тұрақ" } ] } ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/static", "is_active": true, "is_limited": true, "remaining": 98, "requests_number": 100, "reset": "2026-03-03T00:00:00", "seconds_number": 86400 }, "request": {}, "method": "GET", "real_ip": "104.30.161.77", "request_id": "e65b239ba9daff01d9b0f37a021a8a66", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-03-02T11:51:20.794630" }, "status": "ok", "error": null } --- # Retrieve rate info Source: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/retrieve-rate-info/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/search/lookuprate/ https://api.worldota.net/api/b2b/v3/search/lookuprate/ The call gets one hotel rate. The response format is as in the Retrieve hotelpage call. ⚠️ To have permission to the call with your API key, contact the API support team. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The input value for the language field is ignored; it is always set to en. The following fields are not supported: hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission For all objects containing the currency_code field, its value is always set to USD. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/search/lookuprate/' \ --header 'Content-Type: application/json' \ --data '{ "book_hash": "h-98278d26-79ce-5896-9597-4af4752a993e", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/search/lookuprate/' \ --header 'Content-Type: application/json' \ --data '{ "book_hash": "h-98278d26-79ce-5896-9597-4af4752a993e", "language": "en" }' Request body Expand this| Collapse this book_hash String required The unique rate ID used to identify the selected rate. ℹ️ Use the value of the book_hash field from one of the calls: Prebook rate from hotelpage step. Prebook rate from search step. language String optional The hotel data language. ℹ️ The default value is the contract language. The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian. pl — Polish. pt — Portuguese. pt_PT — Portuguese (Portugal). ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this original_request_params [Object] Information about the request body from the Retrieve hotelpage call. checkin String The check-in date. The value must be not later than 730 days from the day when the request is made. checkout String The check-out date. The value must be not later than 30 days from the checkin field value. residency String The guests’ citizenship in the ISO 3166-1 alpha-2 format. Use this field if there are doubts regarding the country or the hotel policy towards citizens. ℹ️ The possible values: ad — Andorra. ae — United Arab Emirates. af — Afghanistan. ag — Antigua and Barbuda. ai — Anguilla. al — Albania. am — Armenia. ao — Angola. aq — Antarctica. ar — Argentina. as — American Samoa. at — Austria. au — Australia. aw — Aruba. ax — Åland Islands. az — Azerbaijan. ba — Bosnia and Herzegovina. bb — Barbados. bd — Bangladesh. be — Belgium. bf — Burkina Faso. bg — Bulgaria. bh — Bahrain. bi — Burundi. bj — Benin. bl — Saint Barthélemy. bm — Bermuda. bn — Brunei Darussalam. bo — Bolivia. bq — Bonaire, Sint Eustatius and Saba. br — Brazil. bs — Bahamas. bt — Bhutan. bv — Bouvet Island. bw — Botswana. by — Belarus. bz — Belize. ca — Canada. cc — Cocos (Keeling) Islands. cd — Democratic Republic of the Congo, also known as Congo-Kinshasa. cf — Central African Republic. cg — The Republic of the Congo, also known as Congo-Brazzaville. ch — Switzerland. ci — Côte d’Ivoire. ck — Cook Islands. cl — Chile. cm — Cameroon. cn — China. co — Colombia. cr — Costa Rica. cu — Cuba. cv — Cabo Verde. cw — Curaçao. cx — Christmas Island. cy — Cyprus. cz — Czechia. de — Germany. dj — Djibouti. dk — Denmark. dm — Dominica. do — Dominican Republic. dz — Algeria. ec — Ecuador. ee — Estonia. eg — Egypt. eh — Western Sahara. er — Eritrea. es — Spain. et — Ethiopia. fi — Finland. fj — Fiji. fk — Falkland Islands (Malvinas). fm — Micronesia. fo — Faroe Islands. fr — France. ga — Gabon. gb — United Kingdom of Great Britain and Northern Ireland. gd — Grenada. ge — Georgia. gf — French Guiana. gg — Guernsey. gh — Ghana. gi — Gibraltar. gl — Greenland. gm — Gambia. gn — Guinea. gp — Guadeloupe. gq — Equatorial Guinea. gr — Greece. gs — South Georgia and the South Sandwich Islands. gt — Guatemala. gu — Guam. gw — Guinea-Bissau. gy — Guyana. hk — Hong Kong. hm — Heard Island and McDonald Islands. hn — Honduras. hr — Croatia. ht — Haiti. hu — Hungary. id — Indonesia. ie — Ireland. il — Israel. im — Isle of Man. in — India. io — British Indian Ocean Territory. iq — Iraq. ir — Iran. is — Iceland. it — Italy. je — Bailiwick of Jersey. jm — Jamaica. jo — Jordan. jp — Japan. ke — Kenya. kg — Kyrgyzstan. kh — Cambodia. ki — Kiribati. km — Comoros. kn — Saint Kitts and Nevis. kp — North Korea. kr — South Korea. kw — Kuwait. ky — Cayman Islands. kz — Kazakhstan. la — Laos. lb — Lebanon. lc — Saint Lucia. li — Liechtenstein. lk — Sri Lanka. lr — Liberia. ls — Lesotho. lt — Lithuania. lu — Luxembourg. lv — Latvia. ly — Libya. ma — Morocco. mc — Monaco. md — Moldova. me — Montenegro. mf — Saint Martin. mg — Madagascar. mh — Marshall Islands. mk — North Macedonia. ml — Mali. mm — Myanmar. mn — Mongolia. mo — Macao. mp — Northern Mariana Islands. mq — Martinique. mr — Mauritania. ms — Montserrat. mt — Malta. mu — Mauritius. mv — Maldives. mw — Malawi. mx — Mexico. my — Malaysia. mz — Mozambique. na — Namibia. nc — New Caledonia. ne — Niger. nf — Norfolk Island. ng — Nigeria. ni — Nicaragua. nl — Netherlands. no — Norway. np — Nepal. nr — Nauru. nu — Niue. nz — New Zealand. om — Oman. pa — Panama. pe — Peru. pf — French Polynesia. pg — Papua New Guinea. ph — Philippines. pk — Pakistan. pl — Poland. pm — Saint Pierre and Miquelon. pn — Pitcairn. pr — Puerto Rico. ps — Palestine. pt — Portugal. pw — Palau. py — Paraguay. qa — Qatar. re — Réunion. ro — Romania. rs — Serbia. ru — Russian Federation. rw — Rwanda. sa — Saudi Arabia. sb — Solomon Islands. sc — Seychelles. sd — Sudan. se — Sweden. sg — Singapore. sh — Saint Helena, Ascension and Tristan da Cunha. si — Slovenia. sj — Svalbard and Jan Mayen. sk — Slovakia. sl — Sierra Leone. sm — San Marino. sn — Senegal. so — Somalia. sr — Suriname. ss — South Sudan. st — Sao Tome and Principe. sv — El Salvador. sx — Sint Maarten. sy — Syrian Arab Republic. sz — Eswatini. tc — Turks and Caicos Islands. td — Chad. tf — French Southern Territories. tg — Togo. th — Thailand. tj — Tajikistan. tk — Tokelau. tl — Timor-Leste. tm — Turkmenistan. tn — Tunisia. to — Tonga. tr — Turkey. tt — Trinidad and Tobago. tv — Tuvalu. tw — Taiwan. tz — Tanzania. ua — Ukraine. ug — Uganda. um — United States Minor Outlying Islands. us — United States of America. uy — Uruguay. uz — Uzbekistan. va — Holy See. vc — Saint Vincent and the Grenadines. ve — Venezuela. vg — Virgin Islands (British). vi — Virgin Islands (U.S.). vn — Vietnam. vu — Vanuatu. wf — Wallis and Futuna. ws — Samoa. xk — Kosovo. ye — Yemen. yt — Mayotte. za — South Africa. zm — Zambia. zw — Zimbabwe. guests [Object] The list of guests in the rooms. ℹ️ One list item represents one room. The maximum number of guests per room is 10: Maximum number of adults per room is 6. Maximum number of children per room is 4. The maximum number of rooms per request is 9 (one object corresponds to one room). The multiroom search: Each request should have from 2 to 9 rooms. A request may contain rooms with different number of guests. For multiroom search, we highly recommend using equal pax numbers for each room for best results. If different pax numbers are required per room, it is recommended to make a separate request for each room. Once the request is sent, you can’t: Change the number of guests or rooms. Cancel one of the guests or rooms. The ETG API returns rooms suitable for the maximum number of the requested guests. adults Int The number of adult guests in one room. ℹ️ The minimum value is 1. The maximum value is 6. children [Int] The age list of the children who will stay in the room. ℹ️ The maximum age per child is 17 years. The maximum number of children in the room is 4. hotels [Object] The list of hotels and their rates. id String deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. rates [Object] The list of available hotel rates. allotment Int The number of rooms available for the rate. amenities_data [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. any_residency Boolean Whether the rate is allowed to be booked by the guest with any kind of residency or not. Use it if you don’t collect the guests’ residency. book_hash String The unique rate ID used to identify the selected rate. ℹ️ Use this value in the hash field of the Prebook rate from hotelpage step call. The value lifetime is 24 hours after you have got the available rate. daily_prices [String] The list of daily rate prices breakdown in the request currency. deposit Object The deposit information of the order. Has a value if the rate payment_types.type field has the hotel value. amount String The deposit amount in the currency specified by the currency_code field. currency_code String The deposit amount currency code. Is the same as the charged (hotel) currency code. is_refundable Boolean Whether the deposit is refundable or not. match_hash String The match_hash field of the rate from the call made by the SERP mechanism. Use this field if you are: Showing rates to the users from the call made by the SERP mechanism. Making a booking from these rates. Using this call response as actual data on the rate. Using this call response to actualize the exact rate from the calls made by the SERP mechanism. Usage of this field can help the ETG collect analytics for SERP-HP matching. meal String deprecated ⚠️ Use the meal_data field instead. The meal type. If there is no meal type provided by the rate source, the nomeal value is returned. To get all available meals and their definitions, use the meals field from the Retrieve hotel static data call. meal_data Object The rate meals information. value String The meal type in the rate. To get all available meal types and their definitions, use the meals field from the Retrieve hotel static data call. Has the nomeal value if no meal type is provided. has_breakfast Boolean Whether breakfast is included to the rate or not. no_child_meal Boolean Whether the children meal is absent in the rate or not. no_show Object The no-show penalty information. amount String The no-show penalty amount in the currency specified by the currency_code field. currency_code String The no-show penalty amount currency code. Is the same as the charged (hotel) currency code. from_time String The time in the hotel timezone from which the no-show penalty is charged, in HH:MM:SS format (24-hour). payment_options Object The accepted payment options with the specified amount to be charged. For a booking, this amount in the requested currency should be paid. payment_types String The list with accepted payment options. amount String The amount to be charged for the booking in the contract currency code. by String Whether the booking can be paid by a card or not. ℹ️ The possible values: credit_card null cancellation_penalties String The cancellation rules and commission information. free_cancellation_before String The date and time when the free cancellation policy expires. Has the null value, if there is no free cancellation. The timezone is in UTC±0. policies String The cancellation policies breakdown by periods. amount_charge String The cancellation penalty amount in the contract currency. amount_show String The cancellation penalty amount in the request currency. end_at String The date and time when this cancellation policy expires. Has the null value, if it is in the time from the start_at field value till check-in. If the start_at and end_at fields have the null value, this particular cancellation policy: Has no time restrictions. Is in effect all the time. The timezone is in UTC±0. start_at String The date and time when this cancellation policy takes effect. Has the null value, if it is in effect till the end_at field value. The timezone is in UTC±0. currency_code String The amount currency code. Is the same as the charged (contract) currency code. ℹ️ If the payment_types is hotel, the hotel currency_code will be used here. is_need_credit_card_data Boolean Whether the credit card information is needed or not. is_need_cvc Boolean Whether the CVC is needed or not. type String The payment type. ℹ️ The possible values: now. Use it to allow the user to pay for the booking via the ETG payment system: Request the Create booking process call and get the card details. Request the Create credit card token call with the card details. hotel. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now. deposit. Use it to allow you to charge the user bank card for the booking by yourself: You need to keep your ETG deposit sufficient. To increase funds, contact your account manager. The user makes a booking. You charge the user bank card. The ETG writes funds from your deposit by themselves during the reporting period. show_amount String The rate price in the request currency code of this object show_currency_code field value. Isn’t necessarily the sum in the charged or payment currency code. show_currency_code String The request currency code. Isn’t necessarily in the charged or payment currency code. tax_data Object The tax information. taxes Object The taxes list. amount String The tax amount in the currency specified by the currency_code field. currency_code String The tax amount currency code in the ISO 4217 format. ℹ️ The length is 3 characters. The possible values: AED. AFN. ALL. AMD. ANG. AOA. ARS. AUD. AWG. AZN. BAM. BBD. BDT. BGN. BHD. BIF. BMD. BND. BOB. BOV. BRL. BSD. BTN. BWP. BYR. BYN. BZD. CAD. CDF. CHE. CHF. CHW. CLF. CLP. CNY. COP. COU. CRC. CUC. CUP. CVE. CZK. DJF. DKK. DOP. DZD. EGP. ERN. ETB. EUR. FJD. FKP. GBP. GEL. GHS. GIP. GMD. GNF. GTQ. GYD. HKD. HNL. HRK. HTG. HUF. IDR. ILS. INR. IQD. IRR. ISK. JMD. JOD. JPY. KES. KGS. KHR. KMF. KPW. KRW. KWD. KYD. KZT. LAK. LBP. LKR. LRD. LSL. LTL. LVL. LYD. MAD. MDL. MGA. MKD. MMK. MNT. MOP. MRO. MUR. MVR. MWK. MXN. MXV. MYR. MZN. NAD. NGN. NIO. NOK. NPR. NZD. OMR. PAB. PEN. PGK. PHP. PKR. PLN. PYG. QAR. RON. RSD. RUB. RWF. SAR. SBD. SCR. SDG. SEK. SGD. SHP. SLL. SOS. SRD. SSP. STD. SVC. SYP. SZL. THB. TJS. TMT. TND. TOP. TRY. TTD. TWD. TZS. UAH. UGX. USD. USN. USS. UYI. UYU. UZS. VEF. VND. VUV. WST. XAF. XAG. XAU. XBA. XBB. XBC. XBD. XCD. XDR. XFU. XOF. XPD. XPF. XPT. XSU. XTS. XUA. YER. ZAR. ZMW. ZWL. included_by_supplier Boolean Whether the tax is included by the supplier or not. When it has: The false value, the tax is supposed to be paid at the hotel in this object currency. The true value, the tax is included in the price. name String The ETG tax ID. To get all available tax IDs and their definitions, use the taxes field from the Retrieve hotel static data call. rg_ext Object The hotel room type. Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom. 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuplet. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. room_data_trans Object The room information in the request language. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. main_room_type String The room type. misc_room_type String The room additional information. legal_info Object The hotel and service provider legal information. ℹ️ The information provided depends on the supplier of the specific rate. Has the value different from null for only countries where it is mandatory to have this information. Has the null value for the calls made by the SERP mechanism. hotel Object The hotel legal information. name String The hotel legal name. address String The hotel legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the hotel. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the hotel. ℹ️ The length is 13 characters. work_time String The hotel legal address working hours. provider Object The service provider legal information. name String The service provider legal name. address String The service provider legal address. taxpayer_number String The Taxpayer Personal Identification Number (INN) of the service provider. ℹ️ The length is 10 characters. state_registration_number String The State Registration Number for Companies (OGRN) of the service provider. ℹ️ The length is 13 characters. room_name String The room name in the request language. room_name_info Object The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager. serp_filters [String] deprecated The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another. ℹ️ Supported values: has_airport_transfer. has_parking. air-conditioning. has_internet. has_breakfast. is_package Boolean Rates marked with is_package = true should be sold as a part of package, and the price for the hotel should not be shown separately. Response example { "data": { "hotels": [ { "id": "test_hotel_do_not_book", "hid": 8473727, "rates": [ { "book_hash": "h-98278d26-79ce-5896-9597-4af4752a993e", "match_hash": "m-129c6858-003d-5232-9f1b-5425cfdb490c", "daily_prices": [ "2.00", "2.00" ], "meal": "nomeal", "meal_data": { "value": "nomeal", "has_breakfast": false, "no_child_meal": true }, "payment_options": { "payment_types": [ { "amount": "4.00", "show_amount": "4.00", "currency_code": "GBP", "show_currency_code": "GBP", "by": "credit_card", "is_need_credit_card_data": true, "is_need_cvc": true, "type": "now", "tax_data": { "taxes": [ { "name": "city_tax", "included_by_supplier": false, "amount": "1574.30", "currency_code": "HNL" }, { "name": "electricity_fee", "included_by_supplier": true, "amount": "0.12", "currency_code": "GBP" }, { "name": "service_fee", "included_by_supplier": false, "amount": "27.51", "currency_code": "HNL" }, { "name": "vat", "included_by_supplier": false, "amount": "355.09", "currency_code": "HNL" } ] }, "cancellation_penalties": { "policies": [ { "start_at": null, "end_at": "2026-05-12T00:00:00", "amount_charge": "0.00", "amount_show": "0.00" }, { "start_at": "2026-05-12T00:00:00", "end_at": null, "amount_charge": "4.00", "amount_show": "4.00" } ], "free_cancellation_before": "2026-05-12T00:00:00" } } ] }, "rg_ext": { "class": 3, "quality": 2, "sex": 0, "bathroom": 2, "bedding": 3, "family": 0, "capacity": 2, "club": 0, "bedrooms": 0, "balcony": 0, "view": 0, "floor": 0 }, "room_name": "Standard Double room (full double bed)", "room_name_info": null, "serp_filters": [ "has_bathroom", "has_internet" ], "allotment": 33, "amenities_data": [ "non-smoking" ], "any_residency": true, "deposit": null, "no_show": { "amount": "5.00", "currency_code": "USD", "from_time": "12:00:00" }, "room_data_trans": { "main_room_type": "Standard Double room", "main_name": "Standard Double room", "bathroom": null, "bedding_type": "full double bed", "misc_room_type": null }, "legal_info": null, "is_package": false } ] } ], "original_request_params": { "checkin": "2026-05-17", "checkout": "2026-05-19", "guests": [ { "adults": 2, "children": [] } ], "residency": "us" } }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/search/lookuprate", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2025-11-13T11:06:00", "seconds_number": 60 }, "request": { "book_hash": "h-a2cfc544-718a-59ca-b4e5-7dbd25e1210b", "language": "en" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "f52c910b3d5db4d518cff9f43fd0c656", "key_id": 1234, "api_key_id": 1234, "utcnow": "2025-11-13T11:05:16.674584" }, "status": "ok", "error": null } Errors The error field has the value specified in the headers below. invalid_params The book_hash field is required. contract_mismatch An attempt to make the to check the rate found with the different contract. rate_not_found The rate with the book_hash field value isn’t found. The book_hash field value has expired. Send another search request and change the book_hash field value. core_search_error An internal search error. Has 500 status code. --- # Retrieve hotel content Source: https://docs.emergingtravel.com/docs/affiliate-api/static-content/retrieve-hotel-content/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/ https://api.worldota.net/api/b2b/v3/hotel/info/ The call searches for static hotel data by hotel ID. Use this call in the following cases: An available hotel isn’t included in the hotel data dump. This can happen with new hotels in the ETG inventory. You want to check the hotel content for potential updates before making a booking. ℹ️ Limitations: The maximum number of requests is 30 per 60 seconds. ⚠️ Any internal content such as photos, descriptions, and others can’t be indexed; this isn’t allowed. Any public content such as name, address, amenities, and policies can be indexed. If you try to download all images from CDN without a corresponding search request by the user, your IP address will be blocked. To avoid being blocked, send the custom User-Agent header with the following information: Required: PartnerName; ClientVersion. Optional: ClientTechnicalDetails. Example: RatehawkPartner/1.0 (python-requests/2.18.4). Please use a single channel for downloading (limit requests to 30 per 60 seconds). Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. The hid field is not supported yet. The value of the language field is always set to en. Request example Sandbox Production curl --user ':' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/info/' \ --header 'Content-Type: application/json' \ --data '{ "hid": "10004834", "language": "en" }' curl --user ':' 'https://api.worldota.net/api/b2b/v3/hotel/info/' \ --header 'Content-Type: application/json' \ --data '{ "hid": "10004834", "language": "en" }' Request body Expand this| Collapse this id String required or optional deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid Int required or optional The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. language Int required or optional The language. ℹ️ The possible values: ar — Arabic. bg — Bulgarian. cs — Czech. da — Danish. de — German. el — Greek. en — English. es — Spanish. fi — Finnish. fr — French. he — Hebrew. hu — Hungarian. it — Italian. ja — Japanese. kk — Kazakh. ko — Korean. nl — Dutch. no — Norwegian Bokmål. pl — Polish. pt — Portuguese. pt_PT — European Portuguese. ro — Romanian. ru — Russian. sq — Albanian. sr — Serbian. sv — Swedish. th — Thai. tr — Turkish. uk — Ukrainian. vi — Vietnamese. zh_CN — Simplified Chinese. zh_TW — Traditional Chinese. Response Expand this| Collapse this address String The hotel physical address. amenity_groups [Object] The hotel amenities list divided in groups. For example, Health and Safety Measures, Beauty and wellness. ℹ️ The full list of supported group values is available in the amenity_translations directory. amenities [String] The list of amenities inside the group. group_name String The amenity group name. non_free_amenities [String] The list of additional non-free services. check_in_time String The check-in time. Local time in HH:MM:SS format (24-hour). check_in_time_end String The latest allowed check-in time in 24-hour format, or empty if unspecified. check_out_time String The check-out time. The local time in the HH:MM:SS format (24-hour). description_struct Object The list of hotel descriptions divided into paragraphs. ℹ️ Store and display it in the UI, but do not index it or use it for internal search queries or SEO. paragraphs [String] The description itself. title String The description title. email String The hotel email address. hotel_chain String The hotel chain name. id [String] deprecated The unique hotel ID in the legacy string format. ℹ️ Either this field or the hid field is required. hid [String] The unique hotel ID in the new numeric format. ℹ️ Each ID is an integer no longer than 10 digits. We are gradually migrating all clients to use this format. images [String] deprecated The list of the URLs for the hotel images. ⚠️ Please use the images_ext field instead of this one. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. images_ext [Object] Information about the hotel images divided into categories. category_slug String The hotel image category. ℹ️ The possible values: unspecified — unspecified. balcony — balconies. bathroom — bathrooms. beach — beaches. business — business zone. entertainment — entertainment zones. exterior — hotel exterior. guest_rooms — guest rooms. hotel_front — hotel front. hotel_rooms — hotel rooms. lobby — lobby. meal — meals. outside — hotel outside view. pool — pools. spa — SPA zones. sports — sport zones. children — children zones. miscellaneous — other. url String The URL for the hotel image. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. kind String The hotel type. ℹ️ The possible values: Unspecified, Resort. Sanatorium. Guesthouse. Mini-hotel. Castle. Hotel. Boutique_and_Design. Apartment. Cottages_and_Houses. Farm. Villas_and_Bungalows. Camping. Hostel. BNB. Glamping. Apart-hotel. latitude Float The hotel geographical latitude. longitude Float The hotel geographical longitude. name String The hotel name. metapolicy_struct Object The additional accommodation conditions. Is the same as the section “Hotel policies” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from this param must be shown. ℹ️ For step-by-step instructions and code examples on processing this field, see Metapolicy_struct. add_fee [Object] required The additional services, fees, and taxes information. currency String required The additional services, fees, and taxes price currency. Is the same as the hotel currency. fee_type String required The additional service type. ℹ️ The possible values: unspecified. television. towels. conditioning. housekeeping. heating. refrigerator. utility. safe. microwave. luggage_storage. tour_guide. bicycle_rental. baby_highchair. bed_linen. towels_only. luggage_storage_apartment. luggage_storage_office. price String required The additional services, fees, and taxes price in the hotel currency. price_unit String required The additional service price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. check_in_check_out [Object] required The check-in and check-out policies’ information. check_in_check_out_type String required The check-in or check-out type. ℹ️ The possible values: unspecified. early_checkin. late_checkout. holiday_checkin. holiday_checkout. currency String required The check-in and check-out price currency. Is the same as the hotel currency. inclusion String required The check-in and check-out inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The check-in or check-out price in the hotel currency. children [Object] required The children extra beds’ policy information. age_start Int required The minimum child age for the children extra bed policy being applied. age_end Int required The maximum child age for the children extra bed policy being applied. currency String required The child extra bed price currency. Is the same as the hotel currency. extra_bed String required The extra bed for a child availability. ℹ️ The possible values: unspecified. available. unavailable. price String required The child extra bed price in the hotel currency. children_meal [Object] required The children meals’ policy information. age_start Int required The minimum child age for the children meal policy being applied. age_end Int required The maximum child age for the children meal policy being applied. currency String required The children meal price currency. Is the same as the hotel currency. inclusion String required The children meal inclusion. ℹ️ The possible values: unspecified. included. not_included. meal_type String required The children meal type. ℹ️ The possible values: unspecified. all-inclusive. breakfast. breakfast-buffet. continental-breakfast. dinner. full-board. half-board. lunch. nomeal. some-meal. english-breakfast. american-breakfast. asian-breakfast. chinese-breakfast. israeli-breakfast. japanese-breakfast. scandinavian-breakfast. scottish-breakfast. breakfast-for-1. breakfast-for-2. super-all-inclusive. soft-all-inclusive. ultra-all-inclusive. half-board-lunch. half-board-dinner. price String required The children meal price in the hotel currency. cot [Object] required The cots’ policy information. amount Int required The available cot number. currency String required The cot price currency. Is the same as the hotel currency. inclusion String required The cot inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The cot price in the hotel currency. price_unit String required The cot price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. deposit [Object] required The deposit information. availability String required The deposit availability. ℹ️ The possible values: unspecified. available. unavailable. currency String required The deposit amount currency. Is the same as the hotel currency. deposit_type String required The deposit type. ℹ️ The possible values: unspecified. pet. breakage. keys. payment_type String required The deposit payment type. ℹ️ The possible values: unspecified. cash. card. price String required The deposit amount in the hotel currency. price_unit String required The deposit amount unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. pricing_method String required The deposit pricing method. ℹ️ The possible values: unspecified. percent. fixed. extra_bed [Object] required The adult extra beds’ policy information. amount Int required The available extra bed number. currency String required The extra bed price currency. Is the same as the hotel currency. inclusion String required The extra bed inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The extra bed price in the hotel currency. price_unit String required The extra bed price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. internet [Object] required The internet policy information. currency String required The internet price currency. Is the same as the hotel currency. inclusion String required The internet inclusion. ℹ️ The possible values: unspecified. included. not_included. internet_type String required The internet type. ℹ️ The possible values: unspecified. wireless. wired. price String required The internet price in the hotel currency. price_unit String required The internet price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. work_area String required The internet coverage area. ℹ️ The possible values: unspecified. hotel. room. meal [Object] required The adult meals’ policy information. currency String required The meal price currency. Is the same as the hotel currency. inclusion String required The meal inclusion. ℹ️ The possible values: unspecified. included. not_included. meal_type String required The meal type. ℹ️ The possible values: unspecified. all-inclusive. breakfast. breakfast-buffet. continental-breakfast. dinner. full-board. half-board. lunch. nomeal. some-meal. english-breakfast. american-breakfast. asian-breakfast. chinese-breakfast. israeli-breakfast. japanese-breakfast. scandinavian-breakfast. scottish-breakfast. breakfast-for-1. breakfast-for-2. super-all-inclusive. soft-all-inclusive. ultra-all-inclusive. half-board-lunch. half-board-dinner. price String required The meal price in the hotel currency. no_show [Object] required The no-show policy information. availability String required The no-show availability. ℹ️ The possible values: unspecified. available. unavailable. day_period String required The time period related to the time value, used for fields with a 12-hour format. ℹ️ The possible values: unspecified — period is not specified; use with caution. before_midday — AM (before 12:00 noon). after_midday — PM (after 12:00 noon). time String required The applicable time for no-show. The local time in the HH:MM:SS format (24-hour). parking Object required The parking policy information. currency String required The parking price currency. Is the same as the hotel currency. inclusion String required The parking inclusion. ℹ️ The possible values: unspecified. included. not_included. price String required The parking price in the hotel currency. price_unit String required The parking price unit. ℹ️ The possible values: unspecified. per_car_per_night. per_car_per_stay. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. territory_type String required The parking territory type. ℹ️ The possible values: unspecified. on_side. off_side. pets [Object] required The pets’ accommodation policy information. currency String required The pet accommodation price currency. Is the same as the hotel currency. inclusion String required The pet accommodation inclusion. ℹ️ The possible values: unspecified. included. not_included. pets_type String required The pet weight type. ℹ️ The possible values: unspecified — no information on the pet weight. lt_5kg — the pet weight is less than 5 kg. gt_5kg — the pet weight is greater than 5 kg. price String required The pet accommodation price in the hotel currency. price_unit String required The pet accommodation price unit. ℹ️ The possible values: unspecified. per_guest_per_night. per_guest_per_stay. per_room_per_night. per_room_per_stay. per_hour. per_week. shuttle [Object] required The shuttles’ policy information. currency String required The shuttle price currency. Is the same as the hotel currency. destination_type String required The shuttle destination type. ℹ️ The possible values: unspecified. airport. train. ship. airport_train. inclusion String required The shuttle inclusion. ℹ️ The possible values: unspecified. included. not_included. shuttle_type String required The shuttle type. ℹ️ The possible values: unspecified. one_way. two_ways. price String required The shuttle price in the hotel currency. visa [Object] required The visa support policy information. visa_support String required The visa support for the embassy of the hotel country. ℹ️ The possible values: unspecified — no information on the visa support. support_enable — the visa supported is available. metapolicy_extra_info String The additional hotel information. Is the same as the section “Extra info” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from the field must be shown to the end user. phone String The hotel phone number. policy_struct [Object] deprecated The additional accommodation conditions. Is the same as the section “Important - Please Note” from hotel pages on the core website. In the field, you can find taxes and fees not included in the booking price. The data from the field is obligatory for showing to the end user. paragraphs [String] The policy itself. title String The policy title. postal_code String The hotel postal code. region Object The region where the hotel is located. country_code String Hotel’s country code (capital Latin letters, according to ISO 3166-1 alpha-2 standard). iata String The region airport IATA code. id String deprecated The unique ID of the region where the hotel is located. name String The name of the region where the hotel is located. type String The type of the region where the hotel is located. ℹ️ The possible values: Airport. Bus Station. City. Continent. Country. Multi-City (Vicinity). Multi-Railway Station. Multi-Region (within a country). Neighborhood. Point of Interest. Province (State). Railway Station. Street. Subway (Entrace). room_groups Object The list of the hotel room groups. images [String] deprecated The list of the URLs for the room images. ⚠️ Please use the images_ext field instead of this one. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. images_ext [Object] Information about the room images divided into categories. category_slug String The room image category. ℹ️ The possible values: unspecified — unspecified. balcony — balconies. bathroom — bathrooms. beach — beaches. business — business zone. entertainment — entertainment zones. exterior — hotel exterior. guest_rooms — guest rooms. hotel_front — hotel front. hotel_rooms — hotel rooms. lobby — lobby. meal — meals. outside — hotel outside view. pool — pools. spa — SPA zones. sports — sport zones. children — children zones. miscellaneous — other. url String The URL for the room image. ℹ️ The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs). We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks. Each URL has the {size} placeholder. Meaning, the size of the image you can get. The possible size meanings: crop — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height. fit-h — the image is fit into the rectangle by the height. fit-w — the image is scaled so that its width fits the given value, and the height is adjusted proportionally. fit-w-min — the image is scaled so that its width is at least the specified value (if it’s smaller, it is enlarged; if it’s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs. fit — the image is fit into the rectangle by the size in question. The possible values: 1024x768 — fit. x220 — fit-h. x500 — fit-h. x768 — fit-h. 40x40 — crop. 80x80 — crop. 100x100 — crop. 120x120 — crop. 241x241 — crop. 240x240 — crop. 154x105 — crop. 170x154 — crop. 640x350 — crop. 320x175 — crop. 200x200 — crop. 1080x522 — crop. 750x400 — crop. 640x400 — crop. 120x90 — crop. 90x75 — crop. x300 — fit-h. x600 — fit-h. 100x130 — crop. x296 — fit-h. 100x50 — crop. x100 — fit-h. 100x — fit-w. 640x230 — crop. 370x — fit-w. 645x255 — crop. 450x161 — crop. x102 — fit-h. 225x60 — fit. 828x560 — fit. 640x640 — crop. 196x196 — crop. 1298x — fit-w. 295x220 — crop. 2048x2048 — crop. 304x — fit-w. 304x140 — crop. x700 — fit-h. 112x112 — crop. 695x — fit-w-min. 1300x620 — fit-w. 2600x1240 — fit-w. 600x313 — fit-w. 1200x616 — fit-w. 326x220 — fit-w. 768x1024 — fit-h. 900x900 — crop. 1920x1080 — fit. 1080x1920 — fit-h. x1080 — fit-h. x1920 — fit-h. 1920x — fit-w. 1080x — fit-w. name String The full room name. room_amenities [String] The room amenity list. To get all available room amenities and their definitions, use the room_amenities field from the Retrieve hotel static data call. room_group_id Int deprecated The room ID. rg_ext Object The room ID. class Int The room class information. ℹ️ The possible values: 0 — run of house. 1 — dorm. 2 — capsule. 3 — room. 4 — junior suite. 5 — suite. 6 — apartment. 7 — studio. 8 — villa. 9 — cottage. 17 — bungalow. 18 — chalet. 19 — camping. 20 — tent. quality Int The room quality information. ℹ️ The possible values: 0 — undefined. 1 — economy. 2 — standard. 3 — comfort. 4 — business. 5 — superior. 6 — deluxe. 7 — premier. 8 — executive. 9 — presidential. 17 — premium. 18 — classic. 19 — ambassador. 20 — grand. 21 — luxury. 22 — platinum. 23 — prestige. 24 — privilege. 25 — royal. sex Int The room gender restrictions. ℹ️ The possible values: 0 — undefined. 1 — male. 2 — female. 3 — mixed. bathroom Int The room bathroom information. ℹ️ The possible values: 0 — undefined. 1 — a shared bathroom. 2 — a private bathroom 3 — an external private bathroom. bedding Int The room bedding information. ℹ️ The possible values: 0 — undefined. 1 — a bunk bed. 2 — a single bed. 3 — a double bed. 4 — a twin bed. 7 — multiple beds. 8 — chair-bed. 9 — sofa. family Int Whether it is a family room or not. ℹ️ The possible values: 0 — not a family room. 1 — a family room. capacity Int The maximum number of main bed places without additional charges and excluding extra beds, cots, etc. ℹ️ The possible values: 0 — undefined. 1 — single. 2 — double. 3 — triple. 4 — quadruple. 5 — quintuple. 6 — sextuple. club Int Whether it is a club room or not. ℹ️ The possible values: 0 — not a club room. 1 — a club room. bedrooms Int The bedroom number. ℹ️ The possible values: 0 — undefined. 1 — 1 bedroom. 2 — 2 bedrooms. 3 — 3 bedrooms. 4 — 4 bedrooms. 5 — 5 bedrooms. 6 — 6 bedrooms. balcony Int Whether there is a balcony or not. ℹ️ The possible values: 0 — no balcony. 1 — a balcony. view Int The room view information. ℹ️ The possible values: 0 — undefined. 1 — bay view. 2 — bosphorus view. 3 — burj-khalifa view. 4 — canal view. 5 — city view. 6 — courtyard view. 7 — dubai-marina view. 8 — garden view. 9 — golf view. 17 — harbour view. 18 — inland view. 19 — kremlin view. 20 — lake view. 21 — land view. 22 — mountain view. 23 — ocean view. 24 — panoramic view. 25 — park view. 26 — partial-ocean view. 27 — partial-sea view. 28 — partial view. 29 — pool view. 30 — river view. 31 — sea view. 32 — sheikh-zayed view. 33 — street view. 34 — sunrise view. 35 — sunset view. 36 — water view. 37 — with view. 38 — beachfront. 39 — ocean front. 40 — sea front. floor Int The room floor Information. ℹ️ The possible values: 0 — undefined. 1 — a penthouse floor. 2 — a duplex floor. 3 — a basement floor. 4 — an attic floor. size Number Room area in square meters. ℹ️ This parameter is available only via the Content API for partners with the relevant feature enabled. To activate it, please contact your account manager and ensure a supplementary agreement is signed. Not available in data dumps. name_struct Object The structured room name. bathroom String The room bathroom information. Has the null value, if it is a private bathroom. bedding_type String The room bedding information. main_name String The room name. star_rating Int The hotel rating on a scale from 1 to 5. Has the 0 value for no available rating. ℹ️ The minimum value is 0. The maximum value is 5. serp_filters [String] The list of amenities for the hotel selection based on a cumulative set of features from: All the hotels’ rates. And common hotels’ features. To get all available room amenities and their definitions, use the serp_filters field from the Retrieve hotel static data call. star_certificate Object Information about the hotel star certificate. Applicable only for hotels in some specific countries. Has the null value if there is no information about the star certificate. valid_to String The valid true date. certificate_id String The certificate ID. Has the null value if there is no information about the certificate ID. is_closed Boolean Whether the hotel property is closed or not. keys_pickup Object Information about how to pick up the hotel room keys. type String The picking-up type. ℹ️ The possible values: unspecified — no instructions. phone — get the keys with a call. To get the instructions, call the phone number in the phone field of this object. address — get the keys on the address specified in the apartment_office_address field of this object. smartlock — get the keys in a smart lock. Can be opened with an app or code. keypad — get the keys in a lock with a keypad. lockbox — get the keys in a lock box. reception — get the keys at the 24-hour reception. phone String The phone number for contacting purposes. The phone number must be valid. ℹ️ The minimum length is 5 characters. The maximum length is 35 characters. is_contactless Boolean Whether the hotel room keys’ pick-up is contactless or not. email String The email address for contacting purposes. The email address must be valid. apartment_office_address String The actual pick-up reception address. apartment_extra_information String The additional pick-up information. distance_center Number Distance from the property to the city center, in meters. ℹ️ This parameter is available only via the Content API for partners with the relevant feature enabled. To activate it, please contact your account manager and ensure a supplementary agreement is signed. Not available in data dumps. facts Object The hotel information. floors_number Int The floors number. register Object Information about the hotel registration in the FSA register. Applicable only for hotels in some specific countries. Has the null value if there is no information about the registration. record String Registration number in the FSA register. link String Link to the FSA register. email String The hotel email address in the FSA register. phone String The hotel phone number in the FSA register. status String Status of the object in the FSA register. Determines whether the object can be displayed and sold. Possible values: Active — the object can be both displayed and sold. Suspended — the object can be displayed, but selling is not available. Terminated — the object cannot be displayed or sold. Unspecified — status is unknown, used for unexpected values from an external source. kind String The hotel type in the FSA register. ℹ️ The possible values: unspecified — hotel type is not specified. hotel — classic hotel. camping — camping, accommodation in nature (tents, cabins, etc.). resort — resort hotel, often with leisure or recreational facilities. sanatorium — sanatorium, health and wellness facility. guesthouse — guesthouse, small private accommodation. name String Name of the hotel in the FSA register. address String The hotel address in the FSA register. status_end_date String Expiry date of the object in the FSA register. rooms Object Information about hotel rooms from the FSA register. rooms_count Int Number of rooms by category. category_type String Name of room categories. fsa_kind String cancelled The hotel type in the FSA register. ℹ️ The possible values: unspecified — hotel type is not specified. hotel — classic hotel. camping — camping, accommodation in nature (tents, cabins, etc.). resort — resort hotel, often with leisure or recreational facilities. sanatorium — sanatorium, health and wellness facility. guesthouse — guesthouse, small private accommodation. fsa_name String cancelled Name of the hotel in the FSA register. rooms_number Int The rooms number. year_built Int The construction year. year_renovated Int The renovation year. electricity Object The socket type. frequency [Int] The sockets’ frequency. voltage [Int] The sockets’ voltage. sockets [String] The socket types. To get all available socket types and their definitions, use the socket_types field from the Retrieve hotel static data call. payment_methods [String] The card types accepted at the hotel when pay there. ℹ️ The possible values: unspecified — unspecified. american_express — American Express. cash — cash. china_unionpay — China UnionPay. diners_club — Diners Club International. euro_mastercard — Euro/Mastercard. jcb — JCB. maestro — Maestro. master_card — Mastercard. switch_maestro — Switch (Maestro). visa — Visa. visa_debit — Visa Debit. vise_delta — Visa Delta. visa_electron — Visa Electron. pro100 — Pro100. front_desk_time_start String The reception opening time. The local time in the HH:MM:SS format. front_desk_time_end String The reception closing time. The local time in the HH:MM:SS format. is_gender_specification_required Boolean Whether the guests’ gender is required by the hotel or not. Response example { "data": { "address": "100 South Grand Avenue, Los Angeles", "amenity_groups": [ { "amenities": [ "Air conditioning", "24-hour reception" ], "non_free_amenities": null, "group_name": "General" }, { "amenities": [ "Room service" ], "non_free_amenities": null, "group_name": "Rooms" }, { "amenities": [ "Ironing", "Laundry" ], "non_free_amenities": [ "Ironing" ], "group_name": "Services and amenities" } ], "check_in_time": "15:00:00", "check_in_time_end": "15:00:00", "check_out_time": "12:00:00", "description_struct": [ { "paragraphs": [ "Hotel «Conrad Los Angeles» is located in Los Angeles, near the city center." ], "title": "Location" }, { "paragraphs": [ "Free Wi-Fi is available. There is a parking zone." ], "title": "At the hotel" } ], "email": "", "hotel_chain": "Hilton Hotels & Resorts", "hid": 10004834, "id": "conrad_los_angeles", "images_ext": [ { "url": "https://cdn.worldota.net/t/{size}/content/df/1a/df1aeffad82e3fa22007e2008389d20d9374202b.jpeg", "category_slug": "exterior" }, { "url": "https://cdn.worldota.net/t/{size}/content/76/03/760379401030405fd3775a18b6edb0cf1f8971f5.jpeg", "category_slug": "lobby" } ], "kind": "Hotel", "latitude": 34.055176, "longitude": -118.24855, "name": "Conrad Los Angeles", "metapolicy_struct": { "add_fee": [], "check_in_check_out": [], "children": [], "children_meal": [], "cot": [], "deposit": [ { "availability": "available", "currency": "USD", "deposit_type": "unspecified", "payment_type": "unspecified", "price": "300", "price_unit": "per_room_per_night", "pricing_method": "fixed" } ], "extra_bed": [], "internet": [], "meal": [], "no_show": { "availability": "unspecified", "day_period": "unspecified", "time": "" }, "parking": [], "pets": [ { "currency": "USD", "inclusion": "not_included", "pets_type": "unspecified", "price": "100", "price_unit": "per_room_per_stay" } ], "shuttle": [], "visa": { "visa_support": "unspecified" } }, "metapolicy_extra_info": "Front desk is open 24/7.\nGuests are required to show a photo identification and credit card upon check-in.", "phone": "+12133498585", "policy_struct": [ { "paragraphs": [ "Meals included are indicated in the rate details." ], "title": "Meals" } ], "postal_code": "90012", "region": { "country_code": "US", "iata": "LAX", "id": 2011, "name": "Los Angeles", "type": "City" }, "room_groups": [ { "name": "Deluxe room", "images": [ "https://cdn.worldota.net/t/{size}/content/c0/de/c0dea9e5760f33c2b101ed14577e168b3f36c74f.jpeg" ], "images_ext": [ { "url": "https://cdn.worldota.net/t/{size}/content/c0/de/c0dea9e5760f33c2b101ed14577e168b3f36c74f.jpeg", "category_slug": "unspecified" } ], "name_struct": { "bathroom": "", "bedding_type": "", "main_name": "Deluxe room" }, "room_amenities": [ "air-conditioning", "private-bathroom" ], "room_group_id": 28, "rg_ext": { "balcony": 0, "bathroom": 2, "bedding": 0, "bedrooms": 0, "capacity": 0, "club": 0, "family": 0, "floor": 0, "quality": 6, "class": 3, "sex": 0, "view": 0 }, "size": 32.3 } ], "star_rating": 5, "serp_filters": [ "has_internet", "has_parking" ], "star_certificate": { "valid_to": "", "certificate_id": "" }, "is_closed": false, "facts": { "electricity": { "frequency": [ 60 ], "voltage": [ 120 ], "sockets": [ "a", "b" ] }, "type": "", "floors_number": 25, "rooms_number": 305, "year_built": 2022, "year_renovated": 0, "register": { "record": "", "link": "", "email": "", "phone": "", "status": "", "kind": "unspecified", "name": "", "address": "", "status_end_date": "", "rooms": [] } }, "payment_methods": [ "visa", "master_card" ], "front_desk_time_start": "00:00:00", "front_desk_time_end": "00:00:00", "is_gender_specification_required": false, "deleted": false, "keys_pickup": { "type": "unspecified", "phone": "", "is_contactless": false, "email": "", "apartment_office_address": "", "apartment_extra_information": "" }, "distance_center": 531.1, "giata_code": "1315907", "images": [ "https://cdn.worldota.net/t/{size}/content/df/1a/df1aeffad82e3fa22007e2008389d20d9374202b.jpeg", "https://cdn.worldota.net/t/{size}/content/76/03/760379401030405fd3775a18b6edb0cf1f8971f5.jpeg" ] }, "debug": { "api_endpoint": { "endpoint": "api/b2b/v3/hotel/info", "is_active": true, "is_limited": true, "remaining": 29, "requests_number": 30, "reset": "2026-04-13T16:19:00", "seconds_number": 60 }, "request": { "hid": "10004834", "language": "en", "check_in_time_end": "23:59:00" }, "method": "POST", "real_ip": "104.30.161.77", "request_id": "8c89381358e20e2f7ae04b74a340b7e8", "key_id": 1234, "api_key_id": 1234, "utcnow": "2026-04-13T16:18:00.929864" }, "status": "ok", "error": null } Errors hotel_not_found The hotel isn’t found. unknown The error occurs if something else has gone wrong. --- # Retrieve endpoints Source: https://docs.emergingtravel.com/docs/affiliate-api/endpoints/retrieve-endpoints/ Sandbox Production https://api-sandbox.worldota.net/api/b2b/v3/overview/ https://api.worldota.net/api/b2b/v3/overview/ The call gets the list of the ETG API endpoints to which your API key has permission. ℹ️ Increasing limits is possible for a live key after separate approval, depending on the expected sales volume. Please contact our API support team for this. Limits are increased only after certification is completed. Sandbox limitations ⚠️ Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments. Not every call is supported. The available call list depends on a sandbox API key. Request example The examples below call the production host. For the sandbox, swap the host for api-sandbox.worldota.net (see the URLs above). Authentication is HTTP Basic with your :. cURL Python JavaScript curl --user ':' 'https://api.worldota.net/api/b2b/v3/overview/' import requests response = requests.get( "https://api.worldota.net/api/b2b/v3/overview/", auth=("", ""), ) response.raise_for_status() endpoints = response.json()["data"] const credentials = btoa(":"); const response = await fetch("https://api.worldota.net/api/b2b/v3/overview/", { headers: { Authorization: `Basic ${credentials}` }, }); const { data: endpoints } = await response.json(); Response Expand this| Collapse this endpoint String The endpoint URI. is_active Boolean Whether the endpoint is active or not. is_debug_mode Boolean Whether the debug mode is available or not. is_limited Boolean Whether the endpoint has a limit for the request in seconds or not. requests_number Int The maximum number of requests that can be executed within seconds specified in the seconds_number field. seconds_number Int The number of seconds within the request can be executed. Shouldn’t exceed the value of the requests_number field. Response example { "data": [ { "endpoint": "api/b2b/v3/hotel/incremental_reviews/dump/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 100, "seconds_number": 86400 }, { "endpoint": "api/b2b/v3/general/contract/data/info/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/create/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/order/add/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/order/remove/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/disband/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 }, { "endpoint": "api/b2b/v3/ordergroup/info/", "is_active": true, "is_debug_mode": false, "is_limited": true, "requests_number": 30, "seconds_number": 60 } ], "debug": null, "error": null, "status": "ok" } --- # Receive booking changes’ webhook Source: https://docs.emergingtravel.com/docs/midoffice-api/webhooks/receive-booking-changes-webhook/ POST ℹ️ Use this call if you: Work as a Midoffice with an Agency or TMC. Want to receive webhooks on bookings as the Midoffice. The call retrieves a webhook for the order statuses: Creation. Updating. Cancellation. Getting webhook scenario Provide the callback URL to the API support team. The API support team sets up the callback URL. Once the callback URL is set and the order operation is finished, the ETG API sends the webhook. Check if the webhook is received on your side and send the appropriate response. Your server responses The ETG listens to the following codes from your server and reacts accordingly: Code 200 — the webhook is received successfully and doesn’t need a retry. Code 500 — the ETG needs to retry sending for 7.5 minutes with the intervals: 30 seconds. 60 seconds. 90 seconds. 120 seconds. 150 seconds. 300 seconds. One hour. Every 12 hours for 7 days. In total, 14 attempts. Payload Expand this| Collapse this agreement_number String optional The Midoffice agreement number. partner_order_id String required The unique partner booking ID. ℹ️ The minimum length is 1 character. The maximum length is 256 characters. type String required The event type that caused the callback. ℹ️ The possible values: updated. cancelled. created. The payload example: { "type": "updated", "agreement_number": "B2B-12345/1", "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" } Secure data Expand this| Collapse this signature String required The hexadecimal digits generated by the HMAC algorithm. timestamp Int required The date and time of creating a webhook token in the Unix Timestamp format. ℹ️ The minimum date is January 1, 1970. You can find it in the token signature when decoding. token String required The randomly generated string with the length of 50 characters. The secure data example: { "signature": { "signature": "7865d225dbee1b54909er153d193e0b57b707ebe81ff5b2e1b71ebaf749bec23", "timestamp": 1574146939, "token": "d3395025-1ee7-49a2-bd86-e4bd6b9908b2" } } Whole fields example { "data": { "type": "updated", "agreement_number": "B2B-12345/1", "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6" }, "signature": { "signature": "7865d225dbee1b54909er153d193e0b57b707ebe81ff5b2e1b71ebaf749bec23", "timestamp": 1574146939, "token": "d3395025-1ee7-49a2-bd86-e4bd6b9908b2" } } Signature verification To verify the webhook issued by the ETG: Concatenate the timestamp and token values. The “token” means the one sent by the ETG in the webhook data. Encode the resulting string with the HMAC algorithm: Use your API Key token as a key. Use the SHA256 digest mode. Use the hexdigest() method to make a resulting string. Compare the resulting string to the signature. Optional. Cache the token locally and don’t honor any subsequent request with the same token. This will prevent replay attacks. Optional. Check that the timestamp is within the token lifetime. Examples Python import hashlib, hmac def verify(api_key, token, timestamp, signature): hmac_digest = hmac.new(key=api_key, msg='{}{}'.format(timestamp, token), digestmod=hashlib.sha256).hexdigest() return hmac.compare_digest(unicode(signature), unicode(hmac_digest)) Ruby require 'openssl' def verify(api_key, token, timestamp, signature) digest = OpenSSL::Digest::SHA256.new data = [timestamp, token].join signature == OpenSSL::HMAC.hexdigest(digest, api_key, data) end PHP function verify($apiKey, $token, $timestamp, $signature) { // check if the timestamp is fresh if (abs(time() - $timestamp) > 15) { return false; } // returns true if signature is valid return hash_hmac('sha256', $timestamp . $token, $apiKey) === $signature; } Node.js const crypto = require('crypto') const verify = ({ apiKey, timestamp, token, signature }) => { const encodedToken = crypto .createHmac('sha256', apiKey) .update(timestamp.toString().concat(token)) .digest('hex') return (encodedToken === signature) }