# Tiket Hotels Search Scraper (`stealth_mode/tiket-hotels-search-scraper`) Actor

Scrape hotel search results from Tiket.com including names, star ratings, reviews, room rates, amenities, and 20+ fields per listing. Perfect for travel analysts, OTA developers, and hospitality researchers needing structured accommodation data.

- **URL**: https://apify.com/stealth\_mode/tiket-hotels-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Tiket.com Hotel Search Scraper: Extract Hotel Listings & Rates

---

### What Is Tiket.com?

Tiket.com is one of Southeast Asia's leading online travel agencies (OTAs), headquartered in Indonesia. Its hotel search platform aggregates thousands of properties across Indonesia and the broader Asia-Pacific region, covering everything from budget guesthouses to five-star resorts. Extracting data manually from paginated search results is impractical at scale — the **Tiket.com Hotel Search Scraper** automates this, turning search result pages into clean, structured datasets.

---

### Overview

The **Tiket.com Hotel Search Scraper** collects hotel listing data directly from Tiket.com search result URLs. It is suited for:

- **Travel researchers** analyzing accommodation supply and pricing by region
- **OTA developers** building price comparison or aggregator tools
- **Revenue managers** monitoring competitor rates and availability
- **Data analysts** studying hospitality trends across Indonesian and Southeast Asian markets

The scraper supports configurable result limits per URL and continues gracefully through failed pages without interrupting the entire run.

---

### Input Format

The scraper accepts a JSON configuration object with three parameters:

```json
{
  "ignore_url_failures": true,
  "max_items_per_url": 200,
  "urls": [
    "https://www.tiket.com/en-us/hotel/search?room=1&adult=1&id=bali-108001534490276212&type=REGION&q=Bali&checkin=2026-05-27&checkout=2026-05-28&currency=USD&searchSessionId=7A3BD058-737B-45E5-8569-A106875D0D15"
  ]
}
````

| Field | Type | Default | Description |
|---|---|---|---|
| `urls` | `array` | *(see below)* | One or more Tiket.com hotel search result URLs to scrape. Each URL should be a fully formed search page including destination, dates, room count, and currency parameters. |
| `max_items_per_url` | `integer` | `20` | Maximum number of hotel listings to collect per URL. Increase up to `200` for large destination searches. |
| `ignore_url_failures` | `boolean` | `true` | When `true`, the scraper skips failed URLs and continues processing the rest rather than halting the entire run. |

**How to build a valid URL:**

1. Go to [tiket.com](https://www.tiket.com) and perform a hotel search (destination, dates, guests).
2. Copy the full URL from your browser's address bar — it will contain parameters like `q=`, `checkin=`, `checkout=`, `currency=`, etc.
3. Paste into the `urls` array.

> **Tip:** The `searchSessionId` parameter in the URL is session-specific but typically still works when copied. If results seem incomplete, re-generate the URL from a fresh search.

***

### Output Format

**Sample output**

```json
{
  "public_id": "the-kemilau-ubud-711001730759445633",
  "hotel_name": "The Kemilau Ubud",
  "description": "<b>The Kemilau Ubud Location</b><br />With a stay at The Kemilau Ubud in Ubud (Pengosekan), you'll be within a 5-minute drive of Ubud Monkey Forest and Ubud Traditional Art Market.  This hotel is 12.2 mi (19.6 km) from Sanur Beach and 1.5 mi (2.4 km) from Ubud Palace.<br /><br /><b>The Kemilau Ubud Facility and Service</b><br />Take advantage of recreation opportunities such as an outdoor pool or take in the view from a rooftop terrace and a garden. Additional features at this hotel include complimentary wireless internet access, tour/ticket assistance, and a banquet hall.<br /><br /><b>The Kemilau Ubud Rooms</b><br />Make yourself at home in one of the 32 air-conditioned rooms featuring Smart televisions. Your pillowtop bed comes with premium bedding. Rooms have private balconies. Complimentary wireless internet access keeps you connected, and digital programming is available for your entertainment. Private bathrooms with bathtubs or showers feature complimentary toiletries and hair dryers.<br /><br /><b>Restaurant and Cafe</b><br />Grab a bite to eat at one of the hotel's many dining establishments, which include 2 restaurants and a coffee shop/cafe. Buffet breakfasts are available daily from 7:00 AM to 10:00 AM for a fee.<br /><br /><b>Important Information</b><br />In accordance with local regulations, all visitors must remain within the property during Seclusion Day (Nyepi)/Hindu New Year for a 24-hour period (starting at 6 AM). Seclusion Day typically falls in March or April (dates subject to change each year). Check-in and check-out will not be possible on that date. Ngurah Rai Airport (Bali International Airport) is also closed on Seclusion Day.<br /><br />",
  "star_rating": 4,
  "location": {
    "coordinates": {
      "longitude": 115.263266257915,
      "latitude": -8.52314239478459
    },
    "country": {
      "id": "indonesia",
      "name": "Indonesia"
    },
    "region": {
      "id": "bali-108001534490276212",
      "name": "Bali"
    },
    "city": {
      "id": "gianyar-108001534490276264",
      "name": "Gianyar"
    },
    "area": {
      "id": "ubud-108001534490276354",
      "name": "Ubud"
    }
  },
  "reviews": {
    "score": 4.917,
    "count": 75,
    "label": ""
  },
  "accommodation_type": "Hotel",
  "property_type": {
    "id": "RESORT",
    "name": "Resort"
  },
  "labels": {
    "non_pricing_nudge": {
      "text": "Newly built",
      "text_color": "TextAnalytics"
    },
    "pricing_nudge": {
      "text": "3 rooms left",
      "text_color": "TextPrice"
    }
  },
  "benefits": [
    {
      "text": "Free 5 - 10 Minutes Head Massage (1 Per Stay), Once per stay",
      "text_color": "TextPositive"
    },
    {
      "text": "20% Food Only Discount, Every night",
      "text_color": "TextPositive"
    },
    {
      "text": "Swimming Pool",
      "text_color": "TextPositive"
    },
    {
      "text": "Free Parking",
      "text_color": "TextPositive"
    },
    {
      "text": "Free Wifi",
      "text_color": "TextPositive"
    }
  ],
  "image_gallery": [
    {
      "alternative_text": "Exterior & Views",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/rsfit000q100/hotel-extranet/2025/06/18/2d5cf2a5-7247-4887-ae3f-6ec8169bfdb5-1750237569138-1c5298ecd91fde4fcdc2b99f12a5d796.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2025/06/18/da699139-a1ca-4106-996a-f611f1fec680-1750242301937-83d2d96f767acbcb945228564dce2697.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2025/06/18/da699139-a1ca-4106-996a-f611f1fec680-1750242301937-83d2d96f767acbcb945228564dce2697.jpg",
      "order_number": 0
    },
    {
      "alternative_text": "Sport & Beauty",
      "origin_url": "https://i.travelapi.com/lodging/111000000/110300000/110291700/110291604/627e6882_w.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/05/7bb9c5dd-5a92-4135-9520-a2fc53d8943a-1730762808897-d27aae772bb6ca976879a1734bfb6012.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/05/7bb9c5dd-5a92-4135-9520-a2fc53d8943a-1730762808897-d27aae772bb6ca976879a1734bfb6012.jpg",
      "order_number": 1
    },
    {
      "alternative_text": "Others",
      "origin_url": "https://i.travelapi.com/lodging/111000000/110300000/110291700/110291604/f7c7825d_w.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2025/07/29/619f79d7-f397-4e58-8cf4-dd07c5606f6b-1753752083371-2ce9a4a53e692f67492cf96c3cd3e372.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2025/07/29/619f79d7-f397-4e58-8cf4-dd07c5606f6b-1753752083371-2ce9a4a53e692f67492cf96c3cd3e372.jpg",
      "order_number": 2
    },
    {
      "alternative_text": "Bedroom",
      "origin_url": "https://i.travelapi.com/lodging/111000000/110300000/110291700/110291604/5d08e3d0_w.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/05/142989ca-dc35-46f7-a169-0725a1a4d1e3-1730761436169-24aa108ed38201f12a3c63c4ee069fc3.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/05/142989ca-dc35-46f7-a169-0725a1a4d1e3-1730761436169-24aa108ed38201f12a3c63c4ee069fc3.jpg",
      "order_number": 3
    },
    {
      "alternative_text": "Bedroom",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/original/hotel-extranet/2024/11/06/816cfcdd-0d52-4ff6-a163-2ca15204a6f0-1730857421246-1532244c3b45274649f884c64628b8be.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/06/c46e4928-e855-4305-8372-cb48a601c332-1730858104854-cd7a5cc60370b6bd31ab7db15f3bb92b.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/06/c46e4928-e855-4305-8372-cb48a601c332-1730858104854-cd7a5cc60370b6bd31ab7db15f3bb92b.jpg",
      "order_number": 4
    },
    {
      "alternative_text": "Food & Drinks",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/original/hotel-extranet/2025/03/11/69606fe2-2c45-4dfb-bd2a-bc98e415ff1d-1741656481583-82c2e6e34c28b1fe981e083e2c477dff.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2025/03/11/361c6c2e-33b0-4972-bcf4-eceacfe2b091-1741656853519-9440a0c5164b1d2d6ebd8080948cee88.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2025/03/11/361c6c2e-33b0-4972-bcf4-eceacfe2b091-1741656853519-9440a0c5164b1d2d6ebd8080948cee88.jpg",
      "order_number": 5
    },
    {
      "alternative_text": "Others",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/original/hotel-extranet/2024/11/06/e4a93213-38db-4764-ab6b-d85df85d54fd-1730857452206-62c242bd1811701b9c95e9b813d1fc5a.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/06/f88691fa-c267-44a1-9ce3-0ad79f9a0dcb-1730858103925-d8c31779169bee3561d0120fac11fa5a.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/06/f88691fa-c267-44a1-9ce3-0ad79f9a0dcb-1730858103925-d8c31779169bee3561d0120fac11fa5a.jpg",
      "order_number": 6
    },
    {
      "alternative_text": "Others",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/original/hotel-extranet/2024/11/06/45d0d3a1-4fcd-4ca8-b675-4fc31f0479a1-1730857420900-9234d7b3f91afc5e3f8d6be69a6678be.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/06/01ca5dd3-779a-4a2f-9dad-23ea24e70acf-1730858103923-fb7fc55fc196c7dcb7216b2116641893.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/06/01ca5dd3-779a-4a2f-9dad-23ea24e70acf-1730858103923-fb7fc55fc196c7dcb7216b2116641893.jpg",
      "order_number": 7
    },
    {
      "alternative_text": "Others",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/original/hotel-extranet/2024/11/06/08460d3f-5620-4ec9-9642-e100c66213f9-1730857452054-605e7581d66e12a4d1b32788bdead351.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/06/7437b522-bb0f-429c-a7ed-b4c348b17d1f-1730858103938-58180c2eb8816643c4a3e5f6764811cf.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/06/7437b522-bb0f-429c-a7ed-b4c348b17d1f-1730858103938-58180c2eb8816643c4a3e5f6764811cf.jpg",
      "order_number": 8
    },
    {
      "alternative_text": "Others",
      "origin_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/original/hotel-extranet/2024/11/06/7b497c14-779c-4dff-9db7-e2c18ebf009b-1730857452054-6646aeed357c0f70bb37db60ef39fe71.jpg",
      "url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-dskt/tix-hotel/images-web/2024/11/06/dbb80735-51cc-468d-80dc-8f5d67f2af62-1730858105245-b0aecc6a9355429fcab8da90301b684e.jpg",
      "mobile_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/t_htl-mble/tix-hotel/images-web/2024/11/06/dbb80735-51cc-468d-80dc-8f5d67f2af62-1730858105245-b0aecc6a9355429fcab8da90301b684e.jpg",
      "order_number": 9
    }
  ],
  "preferred_partner": {
    "tier": "TIER_1",
    "icon_url": "https://s-light.tiket.photos/t/01E25EBZS3W0FY9GTG6C42E1SE/rsfit500500gsm/hotel/2023/06/22/1edbacf7-84d8-4974-8e8e-f29c934911a7-1687421467078-ab73af4b1daa5f71cbcce235eb7f0121.png",
    "title": "Preferred Partner",
    "subtitle": "tiket.com selected and trusted accommodations with good reviews."
  },
  "rate_info": {
    "is_sold_out": false,
    "price": {
      "base_rate_with_tax": 11974,
      "rate_with_tax": 10203,
      "total_base_rate_with_tax": 11974,
      "total_rate_with_tax": 10203,
      "rate_without_tax": 8432,
      "base_rate_without_tax": 9895,
      "total_rate_without_tax": 8432,
      "total_base_rate_without_tax": 9895,
      "infinity_rate_to_calculate": 10203
    },
    "price_summary": {
      "total_without_tax": 0,
      "tax_and_other_fee": 0,
      "total": 0,
      "compulsory": [],
      "price_per_night": [
        {
          "staying_date": "2026-05-27",
          "rate": 8432,
          "discounts": null
        }
      ],
      "total_object": {
        "label": "",
        "value": 0
      }
    },
    "is_price_after_cashback": false
  },
  "tix_points_v2": {
    "base_total": 0,
    "base_per_room_per_night": 0,
    "cashback_total": 0,
    "cashback_per_room_per_night": 0
  },
  "product_id": "26393760-1b74-4da1-abf4-dc7f1394abba",
  "hotel_chain": {
    "id": "independent-108001534479551638",
    "name": "Independent",
    "subtitle": ""
  },
  "forward_meta_search": true,
  "payment_option": "pay_now",
  "tracker": {
    "cheapest": "true"
  },
  "encrypted_filter": "H4sIAAAAAAAA/6pWSsvMKUktKlayqq7VUSooykxOVbKqVirJL0nMCUosSQ3PLMnILy0JSaxQsrIwMTaq1VFKSk0JqSxILVayilZyyS9NyklViq0FBAAA///3A1NqSQAAAA==",
  "from_url": "https://www.tiket.com/en-us/hotel/search?room=1&adult=1&id=bali-108001534490276212&type=REGION&q=Bali&checkin=2026-05-27&checkout=2026-05-28&currency=USD&searchSessionId=46E23440-3A14-4BC6-BBBA-E1AFE059D2A5"
}
```

Each scraped hotel returns a record with up to 20 fields:

#### Identity & Basic Info

| Field | Meaning |
|---|---|
| `Public ID` | Tiket.com's unique public identifier for the property |
| `Product ID` | Internal product/listing ID used by the platform |
| `Hotel Name` | Display name of the property |
| `Description` | Short marketing description of the hotel |
| `Accommodation Type` | Broad category (e.g., Hotel, Villa, Resort) |
| `Property Type` | More specific property classification (e.g., Boutique Hotel, Hostel) |
| `Hotel Chain` | Chain brand affiliation, if applicable (e.g., Marriott, Accor) |

#### Location & Classification

| Field | Meaning |
|---|---|
| `Location` | Geographic details including area, city, and coordinates |
| `Star Rating` | Official star classification (1–5) |
| `Labels` | Tags applied to the listing (e.g., "Popular", "New", "Sustainable") |

#### Reviews & Social Proof

| Field | Meaning |
|---|---|
| `Reviews` | Aggregate review data including score, count, and category breakdown |

#### Pricing & Availability

| Field | Meaning |
|---|---|
| `Rate Info` | Room rate details for the searched dates, including base price, discount, and currency |
| `Payment Option` | Accepted payment methods or payment timing (e.g., pay now, pay at hotel) |
| `Tix Points V2` | Loyalty points earned or applicable for the booking |
| `Preferred Partner` | Indicates whether the property has a preferred/sponsored partner status |

#### Amenities & Media

| Field | Meaning |
|---|---|
| `Benefits` | List of included amenities or perks (e.g., free breakfast, free cancellation, pool) |
| `Image Gallery` | Array of property image URLs |

#### Technical & Tracking

| Field | Meaning |
|---|---|
| `Forward Meta Search` | Metadata used for meta-search engine forwarding |
| `Tracker` | Analytics and tracking identifiers attached to the listing |
| `Encrypted Filter` | Encoded filter state associated with the search context |

***

### How to Use

1. **Run a search on Tiket.com** — Select your destination, check-in/check-out dates, number of rooms and guests, and preferred currency.
2. **Copy the search URL** — The full URL in your browser contains all necessary parameters.
3. **Paste into `urls`** — Add one or multiple search URLs to the array for batch collection.
4. **Set `max_items_per_url`** — Default is `20`; set up to `200` for comprehensive destination coverage.
5. **Run the scraper** — Monitor progress in the run log.
6. **Export** — Download results as JSON, CSV, or Excel.

**Best practices:**

- Use `currency=USD` (or your preferred currency) in the URL to ensure consistent rate formatting across runs.
- For multi-destination research, add one search URL per destination to the `urls` array.
- Set `ignore_url_failures: true` for bulk runs to avoid interruptions from occasional timeouts.

**Common issues:**

- If no results are returned, verify the URL contains valid future `checkin` and `checkout` dates.
- Expired `searchSessionId` values are usually harmless — the scraper will still attempt the request.

***

### Use Cases & Business Value

- **Price monitoring:** Track nightly rates for a destination across multiple scrape runs over time
- **Inventory analysis:** Understand accommodation supply (types, stars, chains) in a target region
- **Competitive intelligence:** Compare your property's positioning against similar listings
- **Travel app development:** Feed structured hotel data into booking aggregators or trip planners
- **Academic research:** Study tourism infrastructure across Southeast Asian markets

***

### Conclusion

The **Tiket.com Hotel Search Scraper** delivers structured, field-rich hotel data from one of Southeast Asia's most prominent OTAs. With straightforward URL-based input and 20+ output fields covering pricing, ratings, amenities, and media, it provides immediate value for travel tech developers, analysts, and hospitality professionals.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the hotels list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://www.tiket.com/en-us/hotel/search?room=1&adult=1&id=bali-108001534490276212&type=REGION&q=Bali&checkin=2026-05-27&checkout=2026-05-28&currency=USD&searchSessionId=7A3BD058-737B-45E5-8569-A106875D0D15"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SG"
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.tiket.com/en-us/hotel/search?room=1&adult=1&id=bali-108001534490276212&type=REGION&q=Bali&checkin=2026-05-27&checkout=2026-05-28&currency=USD&searchSessionId=7A3BD058-737B-45E5-8569-A106875D0D15"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "SG"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/tiket-hotels-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.tiket.com/en-us/hotel/search?room=1&adult=1&id=bali-108001534490276212&type=REGION&q=Bali&checkin=2026-05-27&checkout=2026-05-28&currency=USD&searchSessionId=7A3BD058-737B-45E5-8569-A106875D0D15"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "SG",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/tiket-hotels-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.tiket.com/en-us/hotel/search?room=1&adult=1&id=bali-108001534490276212&type=REGION&q=Bali&checkin=2026-05-27&checkout=2026-05-28&currency=USD&searchSessionId=7A3BD058-737B-45E5-8569-A106875D0D15"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SG"
  }
}' |
apify call stealth_mode/tiket-hotels-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/tiket-hotels-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiket Hotels Search Scraper",
        "description": "Scrape hotel search results from Tiket.com including names, star ratings, reviews, room rates, amenities, and 20+ fields per listing. Perfect for travel analysts, OTA developers, and hospitality researchers needing structured accommodation data.",
        "version": "0.0",
        "x-build-id": "WgVQ3w4Q7YqXyHZls"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~tiket-hotels-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-tiket-hotels-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~tiket-hotels-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-tiket-hotels-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~tiket-hotels-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-tiket-hotels-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the hotels list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the hotels list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to be used by your scraper."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
