MakeMyTrip Bus Details API
Get one bus trip from bus search: every boarding and drop point with its address and time, fares, seats left, amenities and cancellation terms.
- 1 credit per call
- Failed calls are free
- Updated
- mmt.buses.details
{ "origin": "Delhi", "trip": { "price": 1799, "arrival": "2026-11-16T14:55:00+05:30", "boarding": "ISBT Kashmiri Gate - Boarding Zone", "currency": "INR", "departure": "2026-11-16T10:15:00+05:30", "duration": "4h40m0s", "operator": "E Bus India", "price_max": 3099, "review_score": 5, "seats_left": 42, "trip_id": "39_MMTCC1199_MMTCC3641_16-11-2026_1000011957980069321", "vehicle_type": "VE A/C Seater / Sleeper (2+1)", "amenities": [ "Water Bottle", "Blankets" ], "boarding_points": [ { "name": "ISBT Kashmiri Gate - Boarding Zone", "address": "Ground Floor, Arrival Block, Platform No. 57,58 Inside ISBT Bus Stand (Delhi)", "id": "25400929", "time": "2026-11-16T10:15:00+05:30" }, { "name": "EBus India Office Opp Anand Vihar ISBT", "address": "Ebus India office shop no 11 opp ISBT anand vihar metro pillar no 216 near Indian oil petrol pump", "id": "28218980", "time": "2026-11-16T10:50:00+05:30" } ], "drop_points": [ { "name": "Kuberpur Agra By Pass Road on Highway Rehan Kalan toll Plaza", "address": "Kuberpur Agra By Pass Road on Highway Rehan Kalan toll Plaza", "id": "21691779", "time": "2026-11-16T14:55:00+05:30" } ] }, "cancellation_terms": [ "* The penalty is calculated based on total seat worth 3099", "* Penalty is calculated basis the bus service scheduled start time at: 16-11-2026 10:15 (subject to change)." ]}
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| date | string | yes | The same travel date, YYYY-MM-DD. | 2026-11-16 |
| destination | string | yes | The same city you searched to. | Agra |
| source | string | yes | The same city you searched from. | Delhi |
| trip_id | string | yes | The trip_id from bus search, for the same route and date. | 39_MMTCC1199_MMTCC3641_16-11-2026_1000011957980… |
| mode | string | no | Leave out, or send bus. | bus |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| trip.boarding_points[].name | string | The boarding point's name. | ISBT Kashmiri Gate - Boarding Zone |
| trip.boarding_points[].address | string | The boarding point's address. | Ground Floor, Arrival Block, Platform No. 57,58 Inside ISBT Bus… |
| trip.boarding_points[].id | string | MakeMyTrip's ID for the boarding point. | 25400929 |
| trip.boarding_points[].time | string | When the bus is at this boarding point, local time. | 2026-11-16T10:15:00+05:30 |
| trip | object | The bus trip. | 15 fields |
| trip.operator | string | The bus company. | E Bus India |
| trip.vehicle_type | string | The bus type and seating. | VE A/C Seater / Sleeper (2+1) |
| trip.departure | string | Departure time, local. | 2026-11-16T10:15:00+05:30 |
| trip.arrival | string | Arrival time, local. | 2026-11-16T14:55:00+05:30 |
| trip.duration | string | Journey time. | 4h40m0s |
| trip.price | integer | The lowest fare, in the currency shown. | 1799 |
| trip.price_max | integer | The highest fare, in the currency shown. | 3099 |
| trip.seats_left | integer | Seats still available. | 42 |
| trip.review_score | integer | Travellers' rating of the operator. | 5 |
| trip.boarding | string | The main boarding point. | ISBT Kashmiri Gate - Boarding Zone |
| trip.amenities | array | What the bus offers, such as charging points. | Water Bottle, Blankets, Charging Point |
| trip.boarding_points | array | Where you can board. | 4 records |
| trip.currency | string | The currency of the fares. | INR |
| trip.drop_points | array | Where you can get off. | 1 records |
| trip.drop_points[].address | string | The drop point's address. | Kuberpur Agra By Pass Road on Highway Rehan Kalan toll Plaza |
| trip.drop_points[].id | string | MakeMyTrip's ID for the drop point. | 21691779 |
| trip.drop_points[].name | string | The drop point's name. | Kuberpur Agra By Pass Road on Highway Rehan Kalan toll Plaza |
| trip.drop_points[].time | string | When the bus reaches this drop point, local time. | 2026-11-16T14:55:00+05:30 |
| trip.trip_id | string | MakeMyTrip's ID for the trip; pass it to the bus details endpoint. | 39_MMTCC1199_MMTCC3641_16-11-2026_1000011957980069321 |
| cancellation_terms | array | The cancellation rules and charges. | * The penalty is calculated based on total seat worth 3099, * P… |
| origin | string | The city searched from. | Delhi |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
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.buses.details", "input": { "date": "2026-11-16", "destination": "Agra", "mode": "bus", "source": "Delhi", "trip_id": "39_MMTCC1199_MMTCC3641_16-11-2026_1000011957980069321" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "mmt.buses.details", "input": { "date": "2026-11-16", "destination": "Agra", "mode": "bus", "source": "Delhi", "trip_id": "39_MMTCC1199_MMTCC3641_16-11-2026_1000011957980069321" }}''')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.buses.details", "input": { "date": "2026-11-16", "destination": "Agra", "mode": "bus", "source": "Delhi", "trip_id": "39_MMTCC1199_MMTCC3641_16-11-2026_1000011957980069321" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
Using Upscrape, open the Delhi to Agra bus trip on 16 November 2026 from MakeMyTrip bus search and list its boarding points with times, the fare range and seats left.
More from the MakeMyTrip API
MakeMyTrip Bus Details API FAQ
The short answers. The docs have the long ones.
How much does the MakeMyTrip Bus Details API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send trip_id, source, destination and date. The input fields below list every option with its type and limits.
Do I need a MakeMyTrip login?
No. It reads public MakeMyTrip data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds mmt.buses.details, checks its price and runs it with the same credits as the REST API.
Your first MakeMyTrip call is free.
Up to 100 free credits to start, no card needed.