Wire it up. See the schema.
- 50 free requests
- Every endpoint included
- No credit card required
- Same schema as paid
A quick demo might save your team weeks of engineering work.
Resources
Free Tools
Marriott Bonvoy API
Pull Marriott.com hotel search results, room types, rate plans, price calendars, and Bonvoy member pricing as clean JSON.
curl "https://api.stayapi.com/v1/marriott/bonvoy/search" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "latitude=13.7563" \ -d "longitude=100.5018" \ -d "check_in=2026-11-10" \ -d "check_out=2026-11-13" \ -d "adults=2" \ -d "currency=USD"
curl "https://api.stayapi.com/v1/marriott/bonvoy/rooms" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "property_id=BKKDT" \ -d "check_in=2026-11-10" \ -d "check_out=2026-11-13" \ -d "adults=2" \ -d "currency=USD"
curl "https://api.stayapi.com/v1/marriott/bonvoy/price-calendar" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "property_id=LAXJW" \ -d "date_from=2026-11-01" \ -d "date_to=2026-11-05" \ -d "nights=1" \ -d "corporate_code=MMP"
{
"success": true,
"hotels": [
{
"property_id": "BKKDT",
"name": "JW Marriott Hotel Bangkok",
"brand": {
"id": "JW",
"name": "JW Marriott"
},
"location": {
"latitude": 13.744,
"longitude": 100.5494
},
"rating": 4.5,
"review_count": 2847,
"bookable": true,
"price": {
"per_night": 185.0,
"total": 555.0,
"taxes": 55.5,
"fees": 0,
"currency": "USD",
"points_per_night": 35000
},
"distance_meters": 1250.5
}
],
"total": 42,
"page_info": {
"has_next_page": true,
"has_previous_page": false,
"next_offset": 20,
"current_offset": 0
}
}
{
"success": true,
"property_id": "BKKDT",
"room_types": [
{
"name": "Deluxe Room",
"bed_type": "1 King",
"view": "City View",
"category": "STANDARD",
"available_rooms": 5,
"rates": [
{
"name": "Best Available Rate",
"rate_plan_code": "BAR",
"per_night": 185.0,
"total": 555.0,
"fees": 0,
"currency": "USD",
"members_only": false,
"free_cancellation_until": "2026-11-08T18:00:00",
"points": null,
"points_total": null,
"points_saved": null,
"free_nights": null,
"nightly_rates": [
{
"date": "2026-11-10",
"cash": 185.0,
"points": null,
"free_night": false
},
{
"date": "2026-11-11",
"cash": 185.0,
"points": null,
"free_night": false
},
{
"date": "2026-11-12",
"cash": 185.0,
"points": null,
"free_night": false
}
]
},
{
"name": "Member Rate",
"rate_plan_code": "MBR",
"per_night": 166.5,
"total": 499.5,
"fees": 0,
"currency": "USD",
"members_only": true,
"free_cancellation_until": "2026-11-08T18:00:00",
"points": null,
"points_total": null,
"points_saved": null,
"free_nights": null,
"nightly_rates": [
{
"date": "2026-11-10",
"cash": 166.5,
"points": null,
"free_night": false
},
{
"date": "2026-11-11",
"cash": 166.5,
"points": null,
"free_night": false
},
{
"date": "2026-11-12",
"cash": 166.5,
"points": null,
"free_night": false
}
]
}
]
}
],
"total": 2
}
{
"success": true,
"property_id": "LAXJW",
"date_from": "2026-11-01",
"date_to": "2026-11-05",
"nights": 1,
"corporate_code": "MMP",
"use_points": false,
"currency": "USD",
"available_count": 4,
"dates": [
{
"date": "2026-11-01",
"check_out": "2026-11-02",
"available": true,
"per_night": 129.0,
"stay_total": 129.0,
"currency": "USD",
"points_total": null
},
{
"date": "2026-11-02",
"check_out": "2026-11-03",
"available": true,
"per_night": 471.0,
"stay_total": 471.0,
"currency": "USD",
"points_total": null
},
{
"date": "2026-11-03",
"check_out": "2026-11-04",
"available": true,
"per_night": 535.0,
"stay_total": 535.0,
"currency": "USD",
"points_total": null
},
{
"date": "2026-11-04",
"check_out": "2026-11-05",
"available": false,
"per_night": null,
"stay_total": null,
"currency": null,
"points_total": null
},
{
"date": "2026-11-05",
"check_out": "2026-11-06",
"available": true,
"per_night": 129.0,
"stay_total": 129.0,
"currency": "USD",
"points_total": null
}
]
}
Trusted by hospitality teams at
Marriott has no public data API for the brand.com rates and availability that revenue and rate-shopping teams actually need. To compare what Marriott.com shows against the OTAs, the usual answer is a scraping stack: headless browsers, rotating proxies, and a parser that breaks every time the booking flow changes.
StayAPI is that layer, run for you. Search Marriott properties near a coordinate, scan a property_id across up to 36 check-in dates with the price calendar, then pull room types and rate plans for the dates you pick. You get structured JSON back with per-night and total prices, member-only rates, cancellation deadlines, and Bonvoy points. The same shape on every call.
X-API-Key in, JSON out. Search Marriott hotels by coordinates, find the cheapest dates for a property_id, then fetch rooms and rates. No SDK to install.
Fetching the Marriott.com booking flow, parsing rate plans, and keeping up with site changes are ours. You consume normalized JSON and never touch a headless browser.
Every call hits Marriott live, so rates, member pricing, and room availability are current to the request, not a stale nightly snapshot.
Each returns normalized JSON in the same shape. Click any endpoint for parameters, an example response, and a live playground.
The same endpoints, pointed at different jobs. These are the ones we see most.
Pull the Marriott.com rate per room type and date, then compare it against Booking.com or Expedia for the same property to catch parity gaps.
Watch room types and available_rooms for a Marriott property over time to track how inventory and rate plans move toward the stay date.
Read the members_only flag and Bonvoy points fields to compare member-only direct rates against the public best available rate and the OTAs.
Search by coordinate across a market and benchmark Marriott hotels on price, rating, brand, and distance using the same fields for every property.
Search with corporate_only to keep hotels that honor your corporate code, then pull each one's price calendar with the same code to find the cheapest check-in dates.
The same endpoints are exposed as MCP tools. Connect Claude, Cursor, or Claude Code, ask in plain English, and the agent calls the tool and answers from live Marriott Bonvoy data.
Flat monthly plans, every endpoint included on every plan. 1 request = 1 credit. No per-endpoint multipliers, no surprise overages.
Wire it up. See the schema.
Kick the tires in production.
Small prod workloads and growing apps.
Daily pulls in production.
Above 100k / month, annual terms, white-glove onboarding.
Every plan ships every endpoint. Same uptime, same schema, same response time.
Don't see your question? Email us at info@stayapi.com.
Marriott runs developer programs for connectivity and channel partners, but they are gated, contract-bound, and not built for pulling brand.com search results or competitor rates. StayAPI gives you Marriott.com search and room rates over plain REST with a key you get in 30 seconds.
Yes. Call /v1/marriott/bonvoy/rooms with a property_id and your dates to get room types and rate plans as JSON: per-night and total price, the members_only flag, cancellation deadlines, and Bonvoy points. See the rooms endpoint docs.
Call /v1/marriott/bonvoy/search with a latitude, longitude, and check-in / check-out dates. You get Marriott properties near that point with live pricing, brand, rating, and distance, each with a property_id you pass to the rooms endpoint. See the search endpoint docs.
Yes. Call /v1/marriott/bonvoy/price-calendar with a property_id and a window of up to 36 check-in dates to get the lowest rate for each date. Add a corporate_code to price only rates under that code, or use_points=true for a Bonvoy points calendar. See the price calendar docs.
You get 50 free requests on signup, every endpoint included, no credit card. After that it is flat monthly plans starting at $49. One request equals one credit, with no per-endpoint multipliers.
Both end with live Marriott Bonvoy data in your stack. The fast path is on the left.
50 free requests after sign up. Fastest way to see if the schema fits.
Start free15 minutes. Volume + endpoint mix. Walk out with a quote.
Book a demo