MakeMyTrip Hotels & Reviews Scraper avatar

MakeMyTrip Hotels & Reviews Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
MakeMyTrip Hotels & Reviews Scraper

MakeMyTrip Hotels & Reviews Scraper

Scrape MakeMyTrip hotel listings and reviews by search URL, hotel-details URL, bare hotelId, or a dataset from a prior run. Mobile API extraction with PWA fallback. Prices, ratings, amenities, images, traveller reviews with AI image tags. JSON/CSV.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Turn MakeMyTrip into structured hotel and review data you can actually use. Scrape hotel listings and traveller reviews by search URL, hotel-details URL, bare hotel ID, or a dataset from a prior run. Every review is tagged with its hotelId — the gap that made competitor users file bugs. Prices, ratings, amenities, geo coordinates, images, and full review text. JSON or CSV out, no browser, no CAPTCHA solver.

MakeMyTrip Hotels & Reviews Scraper

How it works

How MakeMyTrip Hotels & Reviews Scraper works

Why use this scraper?

Trying to build India hotel-price benchmarks? Collecting review sentiment for hospitality research? Need a clean dataset of MakeMyTrip listings instead of copy-pasting from the site?

  • Four starting points. Paste a hotel-listing search URL, a hotel-details URL, a bare numeric hotelId, or a dataset ID from a prior hotels run — all classified automatically.
  • Listings + reviews in one actor. Run mode: both to pull hotels from a search URL and reviews for specific hotels in the same run. No second actor, no manual handoff.
  • Every review tagged with hotelId. The single most-requested feature on the competing reviews actor (their open issue is literally "reviews not tagged with hotelId"). Solved here from day one.
  • Full search results, no browser. MakeMyTrip sits behind Akamai. The actor opens the listing page with a Chrome TLS fingerprint on a residential proxy, then pages the same search API the website calls as you scroll, 30 hotels at a time, up to hotelsLimit. Reviews come from the hotel page's server-rendered window.__INITIAL_STATE__. No headless browser, no third-party CAPTCHA service.
  • Rich per-hotel fields. Discounted and original price, price with tax, tax breakdown, cumulative rating, rating text, total rating/review counts, star rating, property type, geo coordinates, hero image, total image count, SEO URL, deep link, and persuasion tags.
  • Clean exports. Dataset rows are stable JSON; CSV export is generated automatically at the end of every run.

Use cases

TeamWhat they build
Hospitality analystsIndia hotel-price benchmarks by city, star rating, and date range
Market researchersCompetitive intelligence on MakeMyTrip's pricing and discounting patterns
Review-sentiment researchersTraveller review corpora tagged by hotel, rating, and traveller type (FAMILY, COUPLE, SOLO, BUSINESS)
Travel aggregatorsSource-of-truth feed of MakeMyTrip hotel metadata and ratings into their own platform
Data journalistsDatasets on regional hotel pricing, rating distributions, and review trends
Revenue managersTrack competitor pricing and review sentiment across properties

Supported inputs

You can pass four kinds of input. Each is classified automatically.

InputBehaviour
searchUrls — https://www.makemytrip.com/hotels/hotel-listing/?...Search — pages through the search results, with the URL's dates, guests, filters, sort, and any area or landmark you picked, up to hotelsLimit
hotelUrls — https://www.makemytrip.com/hotels/hotel-details?hotelId=...Detail — extracts reviews (and the single hotel row if mode includes hotels)
hotelIds — bare numeric IDs like 201805091048109914Treated like a hotel-details URL without needing the full link
datasetId — from a prior hotels runReads every hotel in it and collects reviews for each — useful for city-wide review collection

Easiest workflow: apply your filters on makemytrip.com in the browser, copy the URL out of the address bar, paste into searchUrls.

How it works

  1. Classify each input as a search URL, a hotel-details URL, a bare hotel ID, or a dataset reference.
  2. For search URLs — open the listing page through a residential proxy (IN exit) with a Chrome TLS fingerprint so Akamai sets its cookies, then page the website's own search API (search-hotels) on that session, 30 hotels per call, until hotelsLimit or the end of the results. A refused session is replaced with a fresh one, up to 6 times. If the API never answers, the actor keeps the hotels the listing page rendered itself.
  3. For hotel targets — fetch the hotel page once on a fresh session and read the hotel row (cheapest room rate for the stay, rating, address, images) from the server-rendered state, then page the site's own review list (ugc-reviews) on the same session, 30 reviews per call, in reviewSort order, until reviewsPerHotel or the hotel's last written review. If the review list refuses the session, the ~20 reviews the page rendered are kept. A bare hotel ID works without a city. Hotels read from a prior dataset get reviews only, since their hotel rows are already in that dataset.
  4. Deduplicate hotels by id, map to flat rows, push to the dataset, and export JSON + CSV.

Input parameters

ParameterTypeRequiredDefaultDescription
searchUrlsarrayone of the four—MakeMyTrip hotel-listing URLs. Any filters applied on the site (dates, guests, price, star rating, property type, amenities, sort, area or landmark) are reflected in the results.
hotelUrlsarrayone of the four—MakeMyTrip hotel-details URLs. Used to scrape a single hotel and/or its reviews.
hotelIdsarrayone of the four—Bare MakeMyTrip hotel IDs (numeric). Used to scrape specific hotels without a full URL.
datasetIdstringone of the four—Dataset ID from a prior hotels run. The actor reads every hotel in it and collects reviews for each.
modestringNobothhotels, reviews, or both.
hotelsLimitintegerNo50Max hotel listings to extract per search URL (1–200).
reviewsPerHotelintegerNo30Max reviews to collect per hotel (1–5000). The actor stops earlier when the hotel has no more written reviews.
reviewSortstringNoMost relevantMost relevant, Latest first, Helpful first, Positive first, Negative first. The same orders as the site's review list.
includeDetailsbooleanNofalseAlso open each search result's hotel page for its description, check-in/out times, amenities, house rules and full photo gallery. One extra page per hotel. Hotel URLs and IDs always include these.
removeDuplicatesbooleanNotrueDeduplicate hotels by id across all search URLs.
maxConcurrencyintegerNo8Max concurrent requests when fetching reviews for multiple hotels.
proxyobjectNoApify RESIDENTIAL, INProxy configuration. MakeMyTrip sits behind Akamai — residential proxies with an India exit are required.

Example input

{
"searchUrls": [
{ "url": "https://www.makemytrip.com/hotels/hotel-listing/?checkin=06092026&city=CTKUU&checkout=06102026&roomStayQualifier=1e0e1e0e1e0e1e0e&locusId=CTKUU&country=IN&locusType=city&searchText=Manali" }
],
"hotelUrls": [
{ "url": "https://www.makemytrip.com/hotels/hotel-details?hotelId=201805091048109914&checkin=06092026&checkout=06102026&country=IN&city=CTKUU&locusId=CTKUU&locusType=city&roomStayQualifier=1e0e1e0e1e0e1e0e" }
],
"mode": "both",
"hotelsLimit": 50,
"reviewsPerHotel": 30,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "IN"
}
}

Output overview

Each run produces two row types in the same dataset:

  • Hotel rows — one per hotel, from search URLs (and from hotel-details URLs when mode includes hotels).
  • Review rows — one per review, from hotel-details URLs / hotel IDs / a prior dataset, always tagged with hotelId.

Output samples

Hotel row (trimmed to the most useful fields):

{
"name": "Himalayan Riverside Resort - Manali",
"starRating": 3,
"propertyType": "Hotel",
"cumulativeRating": 3.7,
"ratingText": "Very Good",
"totalReviewCount": 25,
"totalRatingCount": 55,
"discountedPriceWithTax": 2755,
"discountedPrice": 2463,
"originalPrice": 4320,
"priceWithTax": 4612,
"totalTax": 292,
"currency": "INR",
"availability": "Available",
"soldOut": false,
"isFreeCancellation": false,
"isCoupleFriendly": true,
"primaryPersuasionText": "River views, serene and relaxing atmosphere, spacious and stylishly designed rooms",
"city": "Manali",
"country": "India",
"countryCode": "IN",
"latitude": 32.20978,
"longitude": 77.18896,
"locationId": "CTKUU",
"displayImage": "https://r1imghtlak.mmtcdn.com/a5842422-2fde-4da6-8138-1180a1...",
"seoUrl": "https://www.makemytrip.com/hotels/himalayan_riverside_resort_manali-details-manali.html",
"detailDeeplinkUrl": "https://www.makemytrip.com/hotels/hotel-details?hotelId=201805091048109914&...",
"id": "201805091048109914",
"source": "pwa",
"scrapedAt": "2026-10-21T12:55:35.761Z"
}

Review row (every review carries its hotelId):

{
"source": "pwa",
"hotelId": "201805091048109914",
"id": "01M4ZG1VE3D2BJD9RYJDX5ZHKF",
"title": "Excellent property.",
"reviewText": "Excellent property with mesmerising view and cooperative staff. The property was well-maintained. The food was tasty.",
"rating": 5,
"travellerName": "Divyansh Chandel",
"travellerType": "FAMILY",
"publishDate": "2026-10-18 21:57:17",
"upvoted": false,
"scrapedAt": "2026-10-21T12:56:59.596Z"
}

Key output fields

GroupFields
Hotel — identifiersid, source, hotelType, propertyType, stayType, scrapedAt
Hotel — locationcity, country, countryCode, locationId, latitude, longitude, address, locality
Hotel — pricingoriginalPrice, discountedPrice, priceWithTax, discountedPriceWithTax, discountedPriceWithTaxAndFees, totalTax, totalAdditionalFees, currency
Hotel — ratingscumulativeRating, totalRatingCount, totalReviewCount, ratingText, reviewSummary (with hotelRatingSummary[] for Location, Cleanliness, Food, Hospitality, Value For Money)
Hotel — attributesstarRating, availability, soldOut, totalRoomCount, isCoupleFriendly, isFreeCancellation, primaryPersuasionText, secondaryPersuasionTexts
Hotel — media + linksdisplayImage, images[], totalImageCount, seoUrl, detailDeeplinkUrl, appDeeplink, sharingUrl
Hotel — details (hotel URLs and IDs, or includeDetails)description, checkinTime, checkoutTime, highlightedAmenities[], amenities[], houseRules[]; images[] becomes the full gallery
ReviewhotelId, id, title, reviewText, rating, travellerName, travellerType, badgeUrl, publishDate, roomType, stayDetails, cohortDetails, upvote, upvoted, crawledData, checkInDate, checkOutDate, images[], responseToReview[], scrapedAt

What makes this richer than the competition

CapabilityCompetitor actorsThis actor
Reviews tagged with hotelIdMissing (their open issue)Every review carries hotelId
Hotel-details URL supportBuggy (valid URLs skipped)Accepted and parsed
Bare hotelId inputNot supportedSupported
Combined hotels + reviews runTwo separate actorsOne actor, mode: both
Pricing fieldsBase price onlyOriginal, discounted, with-tax, tax breakdown
Rating breakdownAggregate onlyPer-dimension (Location, Cleanliness, Food, Hospitality, Value)

Notes & limitations

  • Up to 200 hotels per search URL. hotelsLimit caps each URL at 200. Use several search URLs with different filters or areas to go wider.
  • Written reviews only. After a hotel's last written review, MakeMyTrip lists star-only ratings with no title or text. The actor stops there, so a hotel with 820 written reviews and 511 star-only ratings gives 820 review rows.
  • Akamai flakiness. Akamai sometimes answers with a 6-byte 200-OK placeholder instead of a page. The actor treats that as a block and retries on a fresh proxy session.
  • Public data only. No logged-in content, no booking flows, no user accounts.
  • India-primary. An India residential proxy exit is the default. Other exits get blocked more often.

FAQ

Which MakeMyTrip URLs are supported? Hotel-listing URLs (/hotels/hotel-listing/?...), hotel-details URLs (/hotels/hotel-details?hotelId=...), bare numeric hotel IDs, and dataset IDs from a prior hotels run.

Why are reviews always tagged with hotelId here but not on the competitor? The competing reviews actor emits reviews without a hotelId link — their users filed an issue about it. This actor passes the hotelId into every review row at extraction time, so you can always join reviews back to hotels.

Can I scrape the full review list for a hotel? Yes. Set reviewsPerHotel up to 5000 and the actor pages the site's review list, 30 per call, until it has that many or reaches the hotel's last written review. A hotel with 820 written reviews takes about 30 seconds.

How do I collect reviews for many hotels at once? Run mode: hotels first with your search URLs, then run mode: reviews passing the datasetId from that run. The actor reads every hotel ID from it and fetches reviews for each.

Can I scrape private pages, booking flows, or user accounts? No. The actor accesses only publicly available listing and detail pages.

Support

Additional services

  • Custom output shape, additional fields, or one-off datasets: muhamed.didovic@gmail.com
  • Need this scraper customised, or want a similar scraper for another travel site? Drop an email.
  • For API access (no Apify fee, just a usage fee for the API): muhamed.didovic@gmail.com

Explore more scrapers

If this MakeMyTrip scraper was useful, see other scrapers and actors at memo23's Apify profile — covering travel, real estate, job boards, social media, and more.


For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/makemytrip-hotels-reviews-scraper).

Purpose: Scrapes MakeMyTrip hotel listings and traveller reviews from search URLs, hotel-details URLs, bare hotel IDs, or a prior-run dataset into flat rows — hotels and reviews, every review tagged with hotelId.

Minimal input:

{
"searchUrls": [
{ "url": "https://www.makemytrip.com/hotels/hotel-listing/?checkin=06092026&city=CTKUU&checkout=06102026&roomStayQualifier=1e0e1e0e1e0e1e0e&locusId=CTKUU&country=IN&locusType=city&searchText=Manali" }
],
"mode": "hotels",
"hotelsLimit": 25,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IN" }
}

Reviews for specific hotels: pass hotelUrls or hotelIds with mode: "reviews". City-wide reviews: run mode: "hotels" first, then mode: "reviews" with the first run's datasetId.

Output: two row types in one dataset — hotel rows (id, name, starRating, city, country, latitude, longitude, originalPrice, discountedPrice, priceWithTax, discountedPriceWithTax, totalTax, currency, cumulativeRating, totalRatingCount, totalReviewCount, ratingText, reviewSummary, isCoupleFriendly, isFreeCancellation, primaryPersuasionText, displayImage, seoUrl, detailDeeplinkUrl, scrapedAt) and review rows (hotelId, id, title, reviewText, rating, travellerName, travellerType, publishDate, images[], scrapedAt).

Behaviors an agent should know:

  • mode: both pulls hotels from searchUrls and reviews from hotelUrls/hotelIds in one run.
  • Every review row carries hotelId — joinable to hotel rows without extra work.
  • Search URLs page through the results up to hotelsLimit (max 200); hotel targets return up to reviewsPerHotel written reviews (max 5000) in reviewSort order.
  • Residential proxy with an India exit is required (Akamai). The default proxy config is already set.
  • Billing: priced per result. See the Pricing tab on the actor page for current rates.
  • Public data only: no logged-in content, booking flows, or user accounts.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by MakeMyTrip (MMT Limited) or any of its operators, subsidiaries, or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available hotel-listing and hotel-detail pages — no authenticated endpoints, booking flows, user accounts, or content behind the makemytrip.com login wall. Users are responsible for ensuring their use complies with makemytrip.com's Terms of Service, applicable data-protection law, and any contractual obligations of their own organisation.


SEO Keywords

makemytrip scraper, scrape makemytrip, makemytrip api, makemytrip hotels scraper, makemytrip reviews scraper, makemytrip hotel listings, india hotels scraper, makemytrip hotel data, makemytrip hotel prices, makemytrip hotel ratings, makemytrip traveller reviews, hotel review scraper india, makemytrip dataset, apify makemytrip, makemytrip json export, makemytrip csv export, hotel price benchmark india, hospitality data scraper, travel scraper india, hotel sentiment analysis, makemytrip hotel id, manali hotels scraper, india travel data api