mmt.packages.details
Get one holiday package from package search, with its details for the departure date.
At a glance
- Endpoint ID
mmt.packages.details- Price
- 1 credit per call; failed calls are free
- Runs for up to
- 30 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "mmt.packages.details", "input": { "destination": "Japan", "listing_class_id": "4299", "origin": "New Delhi", "package_id": "63727", "start_date": "2027-03-15", "variant_id": "FLIGHT_2FEBDDA7" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "mmt.packages.details", "input": { "destination": "Japan", "listing_class_id": "4299", "origin": "New Delhi", "package_id": "63727", "start_date": "2027-03-15", "variant_id": "FLIGHT_2FEBDDA7" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "mmt.packages.details", "input": { "destination": "Japan", "listing_class_id": "4299", "origin": "New Delhi", "package_id": "63727", "start_date": "2027-03-15", "variant_id": "FLIGHT_2FEBDDA7" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
Input
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
destination |
string | yes | Destination city or country name from the search | Japan |
listing_class_id |
string | yes | Listing class identifier returned with the discovered package card | 4299 |
origin |
string | yes | Origin city name from the discovered package card | New Delhi |
package_id |
string | yes | Numeric package identifier from a source-backed search card | 63727 |
start_date |
string | yes | Package departure date in YYYY-MM-DD from the discovered card; may differ from the search date anchor | 2027-03-15 |
adults |
integer | no | Only the source default of two adults is supported At least 1. | |
children |
integer | no | Only zero children is supported At least 0. | |
currency |
string | no | Only source INR is supported | |
end_date |
string | no | Unsupported; supplied values are rejected | |
type |
string | no | Unsupported; supplied values are rejected | |
variant_id |
string | no | Variant identifier from the discovered card, when present | FLIGHT_2FEBDDA7 |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "package": { "name": "Cherry Blossom - Indian Group Tour", "price": 279361, "currency": "INR", "departure_date": "2027-03-15", "destination": "Japan", "duration_days": 8, "end_date": "", "highlights": null, "listing_class_id": "4299", "origin": "New Delhi", "package_id": "63727", "price_basis": "listed_per_person", "start_date": "2027-03-15", "total_price": 558722, "total_price_basis": "calculated_party_total", "type": "FIT", "variant_id": "FLIGHT_2FEBDDA7", "exclusions": [ "Anything not mentioned in the inclusions" ], "inclusions": [ "Flights", "Hotels" ], "itinerary": [ "Day 1 New Delhi: Arrival in Tokyo - Narita Apt by Malaysia Airlines Flight MH-191, MH-70; Airport to hotel in Tokyo; Check in to Mercure To…", "Day 2 Tokyo: Breakfast : Included in Tokyo; Tokyo Skytree; TeamLab Planets; Dinner : Included in Tokyo" ] }, "exclusions": [ "Anything not mentioned in the inclusions" ], "inclusions": [ "Flights", "Hotels" ], "itinerary": [ "Day 1 New Delhi: Arrival in Tokyo - Narita Apt by Malaysia Airlines Flight MH-191, MH-70; Airport to hotel in Tokyo; Check in to Mercure To…", "Day 2 Tokyo: Breakfast : Included in Tokyo; Tokyo Skytree; TeamLab Planets; Dinner : Included in Tokyo" ]}
Fields
| Field | Type | Example |
|---|---|---|
exclusions |
array | Anything not mentioned in the inclusions |
inclusions |
array | Flights, Hotels, Meals |
itinerary |
array | Day 1 New Delhi: Arrival in Tokyo - Narita Apt by Malaysia Airl… |
package |
object | 20 fields |
package.currency |
string | INR |
package.departure_date |
string | 2027-03-15 |
package.destination |
string | Japan |
package.duration_days |
integer | 8 |
package.end_date |
string | |
package.exclusions |
array | Anything not mentioned in the inclusions |
package.highlights |
null | null |
package.inclusions |
array | Flights, Hotels, Meals |
package.itinerary |
array | Day 1 New Delhi: Arrival in Tokyo - Narita Apt by Malaysia Airl… |
package.listing_class_id |
string | 4299 |
package.name |
string | Cherry Blossom - Indian Group Tour |
package.origin |
string | New Delhi |
package.package_id |
string | 63727 |
package.price |
integer | 279,361 |
package.price_basis |
string | listed_per_person |
package.start_date |
string | 2027-03-15 |
package.total_price |
integer | 558,722 |
package.total_price_basis |
string | calculated_party_total |
package.type |
string | FIT |
package.variant_id |
string | FLIGHT_2FEBDDA7 |
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other MakeMyTrip endpoints
Something missing or unclear? Ask the team that builds the MakeMyTrip endpoints.