# Traveloka Hotels Search Scraper (`stealth_mode/traveloka-hotels-search-scraper`) Actor

Scrape Traveloka hotel search results with ease. Extract names, ratings, pricing, locations, facilities, reviews, and 50+ fields per property — perfect for travel analysts, OTA developers, and hospitality researchers.

- **URL**: https://apify.com/stealth\_mode/traveloka-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 $2.00 / 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

```markdown
## Traveloka Hotels Search Scraper: Extract Hotel Listings at Scale
---

### What Is Traveloka?

Traveloka is one of Southeast Asia's largest online travel platforms, offering hotel bookings across thousands of properties in Thailand, Indonesia, Vietnam, and beyond. Its search results pages aggregate rich property data — pricing, ratings, facilities, room types, promotions — that is invaluable for competitive analysis, market research, and travel product development. The **Traveloka Hotels Search Scraper** automates extraction of this data at scale, eliminating manual browsing entirely.

---

### Overview

This scraper targets Traveloka hotel search result pages and returns structured records for each property listed. It is suited for:

- **Travel analysts** benchmarking hotel pricing across destinations
- **OTA developers** feeding property data into aggregator platforms
- **Hospitality researchers** studying market supply and demand
- **Revenue managers** monitoring competitor rates and availability

---

### Input Format

```json
{
  "ignore_url_failures": true,
  "max_items_per_url": 200,
  "urls": [
    "https://www.traveloka.com/hotel/search?spec=25-05-2026.26-05-2026.1.1.HOTEL_GEO.10000061.Pattaya.2"
  ]
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | `array` | Search result page URLs from Traveloka. Supports multiple URLs. Each URL should be a hotel search results page (e.g., filtered by destination, dates, guest count). |
| `max_items_per_url` | `integer` | Maximum number of hotel records to collect per URL. Default: `20`. Set higher (e.g., `200`) for full destination coverage. |
| `ignore_url_failures` | `boolean` | If `true`, the scraper skips failed URLs and continues instead of stopping the run. Recommended for bulk jobs. Default: `true`. |

Adjust dates, guest counts, and destination directly in the URL before pasting into `urls`.

> **Note:** `sort_by` and `page` are informational parameters visible in the browser but are handled internally by the scraper.

***

### Output Format

**Sample output**

```json
{
  "id": "3000010038573",
  "name": "Zand Morada Pattaya Hotel",
  "display_name": "Zand Morada Pattaya Hotel",
  "address": null,
  "region": "Jomtien Beach, Pattaya",
  "star_rating": "4.0",
  "user_rating": null,
  "num_reviews": null,
  "user_rating_info": null,
  "latitude": "12.866324",
  "longitude": "100.89271800000006",
  "low_rate": "851055",
  "high_rate": null,
  "showed_facility_types": [
    "WIFI_PUBLIC_AREA",
    "CARPARK",
    "BAR"
  ],
  "hotel_features": [
    {
      "text": " Great value in its class",
      "background_color": "#D1F0FF",
      "text_color": "#024590",
      "icon": "https://ik.imagekit.io/tvlk/image/imageResource/2023/01/31/1675149380526-c5ce5a1fdc8b320423082c060a52e0b9.png?tr=q-75",
      "type": "PREFERRED_PLUS"
    },
    {
      "text": "Recreation room",
      "background_color": "#F0F1F2",
      "text_color": "#4F5254",
      "icon": null,
      "type": "FEATURES"
    },
    {
      "text": "Terrace on rooftop",
      "background_color": "#F0F1F2",
      "text_color": "#4F5254",
      "icon": null,
      "type": "FEATURES"
    },
    {
      "text": "Business facilities",
      "background_color": "#F0F1F2",
      "text_color": "#4F5254",
      "icon": null,
      "type": "FEATURES"
    },
    {
      "text": "Wheelchair accessible",
      "background_color": "#F0F1F2",
      "text_color": "#4F5254",
      "icon": null,
      "type": "FEATURES"
    },
    {
      "text": "Bar",
      "background_color": "#F0F1F2",
      "text_color": "#4F5254",
      "icon": null,
      "type": "FEATURES"
    }
  ],
  "hotel_flexibility_features": [],
  "property_listing": null,
  "inventory_unit_display": null,
  "showcased_room_display": null,
  "review_summary": {
    "traveloka_review_summary": null,
    "provider_review_summary": null,
    "show_provider_review": false,
    "ugc_review_summary": {
      "user_rating": "8.6",
      "max_user_rating": "10.0",
      "num_reviews": "426",
      "user_rating_info": "Very Good",
      "icon_url": null,
      "review_provider": "TRAVELOKA"
    }
  },
  "hotel_video_asset": null,
  "image_url": "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-9906541e2b1cc7e9759a0da9309bfa0e.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
  "image_urls": [
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-9906541e2b1cc7e9759a0da9309bfa0e.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-4b354623e4a27aed28df409096a84063.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-ad54d597884e0251328b76a49d9eaea9.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-29f986b07c2648aa3398ff6677e41f79.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-6152683d61b992e74079a2e3034d82e0.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-3328169c73fa55f15cb28345d68a9fc8.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-183a2281b9d2d7fccd361d10c68bd376.jpeg?tr=q-80,w-300,h-300&_src=imagekit",
    "https://ik.imagekit.io/tvlk/apr-asset/Ixf4aptF5N2Qdfmh4fGGYhTN274kJXuNMkUAzpL5HuD9jzSxIGG5kZNhhHY-p7nw/hotel/asset/10038573-5550690dfb9e3f532c80a3589824a56c.jpeg?tr=q-80,w-300,h-300&_src=imagekit"
  ],
  "hotel_seo_url": "hotel/thailand/zand-morada-pattaya-hotel-3000010038573",
  "extra_infos": [],
  "hotel_inventory_summary": {
    "cheapest_rate_display": {
      "base_fare": {
        "currency": "VND",
        "amount": "723072",
        "null_or_empty": false
      },
      "fees": {
        "currency": "VND",
        "amount": "0",
        "null_or_empty": false
      },
      "taxes": {
        "currency": "VND",
        "amount": "127983",
        "null_or_empty": false
      },
      "total_fare": {
        "currency": "VND",
        "amount": "851055",
        "null_or_empty": false
      },
      "num_of_decimal_point": "0"
    },
    "original_rate_display": {
      "base_fare": {
        "currency": "VND",
        "amount": "723072",
        "null_or_empty": false
      },
      "fees": {
        "currency": "VND",
        "amount": "0",
        "null_or_empty": false
      },
      "taxes": {
        "currency": "VND",
        "amount": "127983",
        "null_or_empty": false
      },
      "total_fare": {
        "currency": "VND",
        "amount": "851055",
        "null_or_empty": false
      },
      "num_of_decimal_point": "0"
    },
    "strikethrough_rate_display": {
      "base_fare": {
        "currency": "VND",
        "amount": "723072",
        "null_or_empty": false
      },
      "fees": {
        "currency": "VND",
        "amount": "0",
        "null_or_empty": false
      },
      "taxes": {
        "currency": "VND",
        "amount": "127983",
        "null_or_empty": false
      },
      "total_fare": {
        "currency": "VND",
        "amount": "851055",
        "null_or_empty": false
      },
      "num_of_decimal_point": "0"
    },
    "property_currency_rate_display": {
      "base_fare": {
        "currency": "THB",
        "amount": "89108",
        "null_or_empty": false
      },
      "fees": {
        "currency": "THB",
        "amount": "0",
        "null_or_empty": false
      },
      "taxes": {
        "currency": "THB",
        "amount": "15772",
        "null_or_empty": false
      },
      "total_fare": {
        "currency": "THB",
        "amount": "104880",
        "null_or_empty": false
      },
      "num_of_decimal_point": "2"
    },
    "property_currency_original_rate_display": {
      "base_fare": {
        "currency": "THB",
        "amount": "89108",
        "null_or_empty": false
      },
      "fees": {
        "currency": "THB",
        "amount": "0",
        "null_or_empty": false
      },
      "taxes": {
        "currency": "THB",
        "amount": "15772",
        "null_or_empty": false
      },
      "total_fare": {
        "currency": "THB",
        "amount": "104880",
        "null_or_empty": false
      },
      "num_of_decimal_point": "2"
    },
    "reschedule_rate_display": null,
    "final_strikethrough_price": {
      "total_price_rate_display": {
        "base_fare": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        },
        "fees": {
          "currency": "VND",
          "amount": "0",
          "null_or_empty": false
        },
        "taxes": {
          "currency": "VND",
          "amount": "127983",
          "null_or_empty": false
        },
        "total_fare": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "num_of_decimal_point": "0",
        "inclusive_final_price": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "exclusive_final_price": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        }
      },
      "per_room_per_night_display": {
        "base_fare": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        },
        "fees": {
          "currency": "VND",
          "amount": "0",
          "null_or_empty": false
        },
        "taxes": {
          "currency": "VND",
          "amount": "127983",
          "null_or_empty": false
        },
        "total_fare": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "num_of_decimal_point": "0",
        "inclusive_final_price": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "exclusive_final_price": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        }
      }
    },
    "final_price": {
      "total_price_rate_display": {
        "base_fare": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        },
        "fees": {
          "currency": "VND",
          "amount": "0",
          "null_or_empty": false
        },
        "taxes": {
          "currency": "VND",
          "amount": "127983",
          "null_or_empty": false
        },
        "total_fare": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "num_of_decimal_point": "0",
        "inclusive_final_price": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "exclusive_final_price": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        }
      },
      "per_room_per_night_display": {
        "base_fare": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        },
        "fees": {
          "currency": "VND",
          "amount": "0",
          "null_or_empty": false
        },
        "taxes": {
          "currency": "VND",
          "amount": "127983",
          "null_or_empty": false
        },
        "total_fare": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "num_of_decimal_point": "0",
        "inclusive_final_price": {
          "currency": "VND",
          "amount": "851055",
          "null_or_empty": false
        },
        "exclusive_final_price": {
          "currency": "VND",
          "amount": "723072",
          "null_or_empty": false
        }
      }
    },
    "bundled_rate_display": null,
    "provider_id": "IG3Ms1Z77osP4dgMqxoyO4MsyRGhHjDOwaCMBeuTFJk=",
    "hotel_promo_type": null,
    "label_display_data": {
      "icon_id": "0",
      "short_description": "Affordable luxury",
      "long_description": "Affordable luxury",
      "override_provider_label": false,
      "icon_url": "https://ik.imagekit.io/tvlk/image/imageResource/2025/09/04/1756959010710-89d95216d1ef2f478c1f1402538c4e4c.png?tr=q-75",
      "short_formatted_description": "Affordable luxury",
      "long_formatted_description": "Affordable luxury",
      "background_color": "#0095FF",
      "action": null,
      "font_color": "#ffffff"
    },
    "available_rate_types": [
      "PAY_NOW"
    ],
    "hotel_ribbon_display": {
      "url": null,
      "label": null
    },
    "strikethrough_display_flag": false,
    "strikethrough_display_color": "HygieneColor",
    "is_cashback": null,
    "hotel_room_c_c_guarantee_requirement_display": null,
    "extra_bed_search_summary": null,
    "inventory_label_display": null,
    "accom_preference_display": null,
    "hotel_preferred_partner_display": {
      "name": "<font color=\"#F0F1F2\">Preferred Partner </font><font color=\"#F4C525\"><b>Plus</b> </font>",
      "icon_url": "https://ik.imagekit.io/tvlk/image/imageResource/2025/04/02/1743579919823-e9c1731dc7bff7ea2d35c8ae29228088.png?tr=q-75",
      "background_color": "",
      "background_image": "https://ik.imagekit.io/tvlk/image/imageResource/2026/05/11/1778486262442-000f2407a6c0bae2f81a17f810869d6f.png?tr=q-75",
      "text_color": "",
      "preferred_partner_point_label_text": null,
      "preferred_partner_point_label_background_color": null,
      "preferred_partner_point_label_text_color": null,
      "accom_membership_type": "PREFERRED_PLUS"
    },
    "hotel_special_placement_display": null,
    "discount_rate_summary_display": {
      "text": null,
      "inclusive_price_text": null,
      "exclusive_price_text": null,
      "text_color": null,
      "bg_color": null,
      "left_icon": null,
      "right_icon": null,
      "discount_rate_summary_is_use_animation": null,
      "variant": "control"
    },
    "discount_label_display_data": {
      "icon_url": null,
      "background_color": null,
      "text_color": null,
      "label": null
    },
    "accom_inventory_card_display": null,
    "has_free_cancellation_rooms": false,
    "has_refund_guarantee": false,
    "has_extra_benefit": false,
    "inventory_feature_display": null,
    "match_search_occupancy": true,
    "num_charged_rooms": "1"
  },
  "third_party_hotel_rating_info_map": {},
  "loyalty_amount": "0",
  "hotel_loyalty_display": {
    "display": "<font color=\"#687176\">0 Points</font>",
    "amount": "0",
    "cashback_tray_info": null,
    "cashback_amount": "0",
    "cashback_term_and_condition_page_link": null
  },
  "reward_display": {
    "text": null,
    "font_color": null,
    "background_color": null,
    "icon": null,
    "variant": "noGuideline"
  },
  "accom_loyalty_eligibility_status": "HOTEL_NOT_ELIGIBLE",
  "coupon_display": {
    "coupon_list": [],
    "coupon_summary": null
  },
  "accom_property_type": "Hotels",
  "accom_property_type_display": {
    "icon_url": "https://ik.imagekit.io/tvlk/image/imageResource/2023/03/28/1679986877455-c9fba4a49268f20248a89a0b68c86973.png?tr=q-75",
    "background_color": "#ECF8FF",
    "text_color": "#0264C8"
  },
  "insider_display": {
    "text": null,
    "background_color": null,
    "background_image": null,
    "font_color": null,
    "icon": null,
    "type": null,
    "capsule_value": null,
    "capsule_background_color": null,
    "capsule_font_color": null,
    "sense_urgency_progress_text": null,
    "sense_urgency_progress_text_color": null,
    "sense_urgency_progress_background_color": null,
    "sense_urgency_progress_bar_color": null,
    "sense_urgency_progress_bar_icon": null,
    "sense_urgency_progress_bar_percentage": null,
    "interface_price_comparison_percentage_text": null,
    "interface_price_comparison_action_text": null,
    "interface_price_comparison_action_font_color": null,
    "interface_price_comparison_cheapest_rate_display": null
  },
  "web_to_app_display": null,
  "hotel_card_header_display": {
    "icon": null,
    "animation_url": null,
    "background_image_url": null,
    "content": null,
    "additional_text": null,
    "background_color": null,
    "font_color": null,
    "type": null,
    "mini_container_content_icon": null,
    "mini_container_content_bg_color": null,
    "mini_container_content_font_color": null,
    "mini_container_content_countdown": null,
    "mini_container_label_font_color": null,
    "mini_container_label": null
  },
  "price_change_icon_display": {
    "icon_url": null,
    "tooltip": null
  },
  "accom_card_highlight_display": {
    "icon": null,
    "text": null,
    "background_color": null,
    "font_color": null
  },
  "hotel_preferred_partner_display": {
    "name": "<font color=\"#F0F1F2\">Preferred Partner </font><font color=\"#F4C525\"><b>Plus</b> </font>",
    "icon_url": "https://ik.imagekit.io/tvlk/image/imageResource/2025/04/02/1743579919823-e9c1731dc7bff7ea2d35c8ae29228088.png?tr=q-75",
    "background_color": "",
    "background_image": "https://ik.imagekit.io/tvlk/image/imageResource/2026/05/11/1778486262442-000f2407a6c0bae2f81a17f810869d6f.png?tr=q-75",
    "text_color": "",
    "preferred_partner_point_label_text": null,
    "preferred_partner_point_label_background_color": null,
    "preferred_partner_point_label_text_color": null,
    "accom_membership_type": "PREFERRED_PLUS"
  },
  "add_ons": [],
  "index_position": "0",
  "ads": null,
  "contexts": {
    "search_id": "1866179735674975449",
    "prc_obj": "3000010038573.18",
    "accom_room_state": "REFERENCE",
    "inventory_rate_key": "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"
  },
  "sense_urgency_message": "Only 2 room(s) left at this price!",
  "sold_out_room_info": null,
  "hotel_curation_tag_display_list": [
    {
      "curation_geo_id": "10000056",
      "curation_tag": "content_worthy_stat",
      "rank": "2"
    },
    {
      "curation_geo_id": "10000056",
      "curation_tag": "beach_hotel_stat",
      "rank": "4"
    }
  ],
  "hotel_curation_best_tag_display": {
    "text": "No. 2 in Content-worthy Hotel",
    "font_color": "#0071CE",
    "background_color_start": "#BAF076",
    "background_color_end": "#F7FCDE",
    "icon_url": ""
  },
  "global_language": {
    "display_name": "Zand Morada Pattaya Hotel"
  },
  "bookmark_data": {
    "bookmark_id": null,
    "is_bookmarked": false
  },
  "upsell_tag_display": {
    "text": null,
    "text_color": null,
    "icon": null,
    "background_image": null
  },
  "deals_summary": null,
  "overlay_header_display": {
    "text": null
  },
  "price_cut_display": {
    "pill_display": {
      "icon_url": null,
      "message": null,
      "alternative_message": null,
      "background_color": null,
      "font_color": null
    },
    "tray_display": {
      "background_image_url": null,
      "icon_url": null,
      "title": null,
      "description": null,
      "tnc_description": null
    }
  },
  "from_url": "https://www.traveloka.com/hotel/search?spec=25-05-2026.26-05-2026.1.1.HOTEL_GEO.10000061.Pattaya.2"
}
```

Each hotel returns a record with 50+ fields, grouped below by category:

#### Identity & Location

| Field | Meaning |
|---|---|
| `ID` | Unique Traveloka property identifier |
| `Name` | Internal property name |
| `Display Name` | Name shown to users on the platform |
| `Address` | Full property address string |
| `Region` | Geographic region or district |
| `Latitude` / `Longitude` | GPS coordinates for mapping |
| `Hotel SEO URL` | Canonical URL for the property's detail page |
| `Accom Property Type` | Raw property type code (hotel, villa, apartment, etc.) |
| `Accom Property Type Display` | Human-readable property type label |

#### Ratings & Reviews

| Field | Meaning |
|---|---|
| `Star Rating` | Official star classification (1–5) |
| `User Rating` | Aggregate guest score |
| `Number Of Reviews` | Total review count |
| `User Rating Info` | Breakdown object (cleanliness, location, service, etc.) |
| `Review Summary` | Highlighted review snippet shown on card |
| `Third Party Hotel Rating Info Map` | Ratings from external platforms (e.g., Google, TripAdvisor) |

#### Pricing & Deals

| Field | Meaning |
|---|---|
| `Low Rate` | Lowest available nightly rate for the search period |
| `High Rate` | Highest available nightly rate |
| `Price Change Icon Display` | Indicator of price movement (rising/falling) |
| `Price Cut Display` | Discount badge details (original vs. current price) |
| `Deals Summary` | Active deals or promotions summary |
| `Coupon Display` | Coupon or promo code availability |
| `Loyalty Amount` | Points or loyalty currency value |
| `Hotel Loyalty Display` | Loyalty program presentation data |
| `Reward Display` | Reward/cashback display details |
| `Accom Loyalty Eligibility Status` | Whether loyalty earning applies to this property |

#### Facilities & Features

| Field | Meaning |
|---|---|
| `Showed Facility Types` | Key amenities shown on the card (pool, WiFi, parking, etc.) |
| `Hotel Features` | Full feature list for the property |
| `Hotel Flexibility Features` | Cancellation policy and flexibility flags |
| `Add Ons` | Available add-on services (breakfast, airport transfer, etc.) |

#### Room & Inventory Data

| Field | Meaning |
|---|---|
| `Property Listing` | Summary of available room types |
| `Inventory Unit Display` | Room inventory display object |
| `Showcased Room Display` | Featured room type shown on the card |
| `Hotel Inventory Summary` | Availability summary across room types |
| `Sold Out Room Info` | Data on sold-out room categories |

#### Media

| Field | Meaning |
|---|---|
| `Image URL` | Primary property image |
| `Image URLs` | Full array of property photo URLs |
| `Hotel Video Asset` | Promotional video asset if available |

#### Marketing & Display Flags

| Field | Meaning |
|---|---|
| `Hotel Card Header Display` | Header badge or label on the search card |
| `Accom Card Highlight Display` | Highlighted selling point on the card |
| `Hotel Preferred Partner Display` | Whether the property is a preferred/sponsored partner |
| `Insider Display` | Traveloka Insider program indicator |
| `Upsell Tag Display` | Upsell tag or badge data |
| `Overlay Header Display` | Overlay badge (e.g., "Limited rooms left") |
| `Sense Urgency Message` | Urgency messaging (e.g., "Only 2 rooms left!") |
| `Hotel Curation Tag Display List` | All curation/editorial tags assigned |
| `Hotel Curation Best Tag Display` | Top-ranked curation tag for the property |
| `Ads` | Whether the listing is a paid advertisement |
| `Index Position` | Position in the search result list |

#### Miscellaneous

| Field | Meaning |
|---|---|
| `Extra Infos` | Additional metadata not covered by standard fields |
| `Contexts` | Search context data attached to the result |
| `Global Language` | Language setting of the response |
| `Bookmark Data` | Wishlist/saved state data |
| `Web To App Display` | Deep link data for app redirect |

***

### How to Use

1. **Build your search URL** — Search for hotels on Traveloka with your desired destination, dates, and guests. Copy the URL from the browser.
2. **Configure input** — Paste the URL into `urls`. Set `max_items_per_url` based on how many results you need.
3. **Run the scraper** — Start the actor and monitor progress in the run log.
4. **Export** — Download results as JSON, CSV, or Excel.

**Best practices:**

- Use separate URLs per destination for cleaner datasets.
- For full market coverage, set `max_items_per_url` to `200` or higher.
- Always include fresh check-in/check-out dates in the URL to get current pricing.

***

### Use Cases

- **Rate intelligence:** Track low and high rates across competing properties in a destination
- **Inventory monitoring:** Identify sold-out patterns by area or property type
- **Content aggregation:** Build hotel listing databases with photos, addresses, and ratings
- **Marketing analysis:** Study how promotions, loyalty badges, and urgency cues are distributed

***

### Conclusion

The **Traveloka Hotels Search Scraper** turns complex search result pages into structured, analysis-ready datasets. With 50+ fields covering pricing, ratings, availability, media, and promotions, it provides everything needed to understand hotel inventory across Southeast Asia's busiest OTA platform.

# 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.traveloka.com/hotel/search?spec=25-05-2026.26-05-2026.1.1.HOTEL_GEO.10000061.Pattaya.2"
  ],
  "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.traveloka.com/hotel/search?spec=25-05-2026.26-05-2026.1.1.HOTEL_GEO.10000061.Pattaya.2"
    ],
    "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/traveloka-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.traveloka.com/hotel/search?spec=25-05-2026.26-05-2026.1.1.HOTEL_GEO.10000061.Pattaya.2"],
    "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/traveloka-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.traveloka.com/hotel/search?spec=25-05-2026.26-05-2026.1.1.HOTEL_GEO.10000061.Pattaya.2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SG"
  }
}' |
apify call stealth_mode/traveloka-hotels-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Traveloka Hotels Search Scraper",
        "description": "Scrape Traveloka hotel search results with ease. Extract names, ratings, pricing, locations, facilities, reviews, and 50+ fields per property — perfect for travel analysts, OTA developers, and hospitality researchers.",
        "version": "0.0",
        "x-build-id": "fcPuhpg9uf44RD1Xr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~traveloka-hotels-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-traveloka-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~traveloka-hotels-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-traveloka-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~traveloka-hotels-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-traveloka-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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
