# MakeMyTrip Hotels Scraper (`axlymxp/makemytrip-hotels-scraper`) Actor

Scrape MakeMyTrip hotels in any city worldwide: nightly prices and taxes for your dates, star and guest ratings, location and coordinates, amenities, room types with rate plans and cancellation rules, and guest reviews. USD, INR, EUR and more. No proxy needed. Pay only for results.

- **URL**: https://apify.com/axlymxp/makemytrip-hotels-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Travel, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## MakeMyTrip Hotels Scraper

Get **MakeMyTrip hotel prices, ratings and availability for any city and dates** as clean JSON, CSV or Excel.
Type a city ("Goa", "Dubai", "Paris") or an area ("Dubai Marina"), pick your dates and guests, and get one row
per hotel with the nightly price, taxes, star and guest ratings, location and coordinates. Switch on full details,
room-by-room rates with cancellation rules, and the latest guest reviews when you need them.

Works for India and international destinations, in USD, INR, EUR, GBP, AED and other currencies. No proxy,
no login, no browser.

### Who it's for

- **Hotels and revenue managers**: track competitor rates on MakeMyTrip for your city and dates.
- **Travel agencies and OTAs**: build price comparisons and destination catalogues.
- **Analysts and researchers**: study pricing, ratings and supply across Indian and global cities.
- **Data and AI teams**: feed hotel content and reviews into search, RAG or sentiment models.

### What you get

| Field | Description |
| --- | --- |
| `hotel_id`, `name`, `property_type` | MakeMyTrip hotel ID, name, type (Hotel, Resort, Apartment…) |
| `star_rating`, `rating`, `rating_text` | Official stars, guest rating (out of 5) and its label |
| `review_count`, `rating_count`, `rating_breakdown` | Number of reviews and ratings; sub-ratings (location, cleanliness, value…) |
| `currency`, `price_per_night`, `price_per_night_with_tax`, `taxes_and_fees` | Nightly price for your dates and guests, with and without taxes |
| `original_price_per_night`, `price_basis` | Price before discount; MakeMyTrip's price label (e.g. "Per Night") |
| `coupon_code`, `coupon_description` | Offer MakeMyTrip pre-applied to the price (only when there is one) |
| `sold_out` | Sold out for your dates |
| `latitude`, `longitude`, `location`, `city`, `country` | Coordinates and the location line shown on MakeMyTrip |
| `image_url`, `photo_count`, `categories` | Main photo, number of photos, MakeMyTrip tags |
| `url` | MakeMyTrip page for the same hotel, dates and guests |
| `check_in`, `check_out`, `nights`, `adults`, `rooms_requested`, `search_location`, `scraped_at` | Your search parameters and when the row was collected |

**With "Include full hotel details":** `address`, `postal_code`, `area`, `check_in_time`, `check_out_time`,
`amenities`, `highlighted_amenities`, `description`, `house_rules`, `photos` (up to 30).

**With "Include room types and rates":** `rooms[]` (name, size, view, beds, max guests and `rate_plans[]` with
price, taxes and total per night, cancellation policy, free-cancellation flag, inclusions such as breakfast),
plus `cheapest_room` and `cheapest_rate_plan`.

**With "Reviews per hotel" > 0:** `reviews[]` with source (MakeMyTrip or Expedia), rating, title, text, publish
date, stay details, travel type, room type and review photos.

### Input

| Parameter | Description |
| --- | --- |
| `locations` | Cities or areas, one per line, in any country (e.g. `Goa`, `Dubai Marina`, `Paris`) |
| `hotels` | Optional: MakeMyTrip hotel IDs or hotel page URLs (returned with details and the cheapest room) |
| `checkIn` | Check-in date (YYYY-MM-DD). Empty = 14 days from today |
| `nights`, `adults`, `rooms`, `childrenAges` | Stay and guests; prices depend on them |
| `currency` | Currency for all prices |
| `maxItems` | Max hotels per location |
| `includeDetails`, `includeRooms` | Add full hotel details / room-level rates |
| `maxReviewsPerHotel` | Latest reviews per hotel (0 = none) |

#### Example input

```json
{
    "locations": ["Goa", "Dubai Marina"],
    "checkIn": "2026-12-20",
    "nights": 2,
    "adults": 2,
    "currency": "INR",
    "maxItems": 100,
    "includeDetails": true,
    "includeRooms": true,
    "maxReviewsPerHotel": 5
}
```

#### Example output (shortened)

```json
{
    "hotel_id": "202410211734063978",
    "name": "Ginger Goa, Candolim",
    "property_type": "Hotel",
    "star_rating": 4,
    "rating": 4.2,
    "rating_text": "Very Good",
    "review_count": 2027,
    "rating_count": 4130,
    "rating_breakdown": {"Location": 4.4, "Cleanliness": 4.4, "Value For Money": 4.3},
    "currency": "USD",
    "price_per_night": 61.0,
    "price_per_night_with_tax": 64.0,
    "taxes_and_fees": 3.0,
    "original_price_per_night": 74.0,
    "sold_out": false,
    "latitude": 15.52459,
    "longitude": 73.76756,
    "location": "Candolim, 8 minutes walk to Candolim Beach",
    "city": "Goa",
    "country": "India",
    "address": "195/23-A/B, Candolim Main Road, Near Lawande Super Market, Anna Waddo, Candolim",
    "postal_code": "403516",
    "check_in_time": "2 PM",
    "check_out_time": "12 PM",
    "highlighted_amenities": ["Gym", "Indoor Games", "Restaurant", "Room Service", "Bar", "Lounge", "Yoga"],
    "check_in": "2026-11-06",
    "check_out": "2026-11-07",
    "url": "https://www.makemytrip.global/hotels/hotel-details/?hotelId=202410211734063978&checkin=11062026&checkout=11072026&roomStayQualifier=2e0e&city=CTGOI&country=IN",
    "scraped_at": "2026-10-23T03:50:13Z"
}
```

### Scheduling and integrations

Run it on a schedule (for example daily for the next 30 check-in dates) to build a rate history, and connect the
dataset to Google Sheets, Make, Zapier, n8n, webhooks or the Apify API. Every row carries `check_in` and
`scraped_at`, so runs can be stacked into one table.

### Use with AI assistants

The actor works with the Apify MCP server, so Claude, ChatGPT and other assistants can call it ("get 4-star hotels
in Goa under ₹6,000 for 20 December") and read the dataset.

### FAQ

**Which hotels are returned?** The hotels MakeMyTrip lists as bookable for your dates and guests, in MakeMyTrip's
own ranking. Sold-out and unavailable properties are not part of the listing.

**How many hotels can I get per city?** MakeMyTrip ranks a few hundred hotels per search. For large cities, add
their areas or neighbourhoods as extra locations (e.g. "Dubai", "Dubai Marina", "Deira", "Downtown Dubai"); rows are
de-duplicated across locations.

**Are prices per night?** Yes. All prices are per night for the requested guests and rooms, in the chosen currency,
as shown to a logged-out MakeMyTrip user.

**Does it need a proxy or an account?** No.

**Is the data fresh?** Every run reads live prices and availability at run time.

**Is it legal?** The actor collects publicly visible hotel information. You are responsible for how you use it,
including reviews, which may contain personal opinions.

# Actor input Schema

## `locations` (type: `array`):

City or area names as you would type them on MakeMyTrip, in any country, e.g. "Goa", "Dubai", "Dubai Marina", "Paris", "Petaling Jaya". Each one is searched separately and returns up to 'Max hotels per location'. Tip: big cities rank a few hundred hotels per search; add their areas as extra entries to go deeper.

## `hotels` (type: `array`):

Optional. MakeMyTrip hotel IDs (e.g. 4190725563805334) or MakeMyTrip hotel page URLs. Each hotel is returned with full details and the cheapest room price for your dates.

## `checkIn` (type: `string`):

YYYY-MM-DD. Leave empty for 14 days from today.

## `nights` (type: `integer`):

Length of stay. Prices are per night.

## `adults` (type: `integer`):

Adults (total, across all rooms).

## `rooms` (type: `integer`):

Number of rooms to book.

## `childrenAges` (type: `array`):

One age (0-17) per child, e.g. \[5, 9].

## `currency` (type: `string`):

Currency for all prices.

## `maxItems` (type: `integer`):

Maximum hotels returned for each city or area. You are charged per hotel.

## `includeDetails` (type: `boolean`):

Address, postal code, check-in/check-out times, full amenity list, description, house rules and up to 30 photos.

## `includeRooms` (type: `boolean`):

Every room type with its rate plans: price, taxes, total, cancellation policy, meal/inclusions.

## `maxReviewsPerHotel` (type: `integer`):

Latest guest reviews to attach to each hotel (MakeMyTrip, then Expedia-syndicated). 0 = no reviews. Reviews are charged separately per review.

## Actor input object example

```json
{
  "locations": [
    "Goa"
  ],
  "nights": 1,
  "adults": 2,
  "rooms": 1,
  "currency": "USD",
  "maxItems": 50,
  "includeDetails": false,
  "includeRooms": false,
  "maxReviewsPerHotel": 0
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "locations": [
        "Goa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/makemytrip-hotels-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 = { "locations": ["Goa"] }

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

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

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

```

## CLI example

```bash
echo '{
  "locations": [
    "Goa"
  ]
}' |
apify call axlymxp/makemytrip-hotels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/makemytrip-hotels-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/V4100r0USI6gwHEUe/builds/chRyd10yDstAwiwB5/openapi.json
