Use this tool to compare what the API says vs what your calendar shows. This will help identify the exact problem.
⚠️ IMPORTANT: After running the test below, manually check your calendar/booking system for these dates and compare the results.
| Check-in | 2026-04-29 |
|---|---|
| Nights | 3 |
| Check-out | 2026-05-01 |
| Dates Being Checked | 2026-04-29, 2026-04-30, 2026-05-01 |
| Room Preference | None (all rooms) |
| Occupants | 2 |
💡 Calendar Data Source: The tool compares against operations_calendar.json which shows actual bookings from your system.
✅ Calendar data loaded
| Date | Room | Status | Guest | Booking ID |
|---|---|---|---|---|
| No bookings found in calendar for these dates | ||||
✅ API Response Received
Response size: 4425 bytes
[
{
"name": "Bohemia Experience",
"rates_including_fees": false,
"room_types": [
{
"id": 560731,
"name": "Standard Rate",
"room_type_dates": [
{
"date": "2026-04-29",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 224
},
{
"date": "2026-04-30",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 224
},
{
"date": "2026-05-01",
"available": 0,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 224
}
],
"included_occupancy": 1,
"max_occupancy": 3,
"max_child_occupancy": 0,
"max_infant_occupancy": 0,
"max_adult_occupancy": 3,
"adult_required": true,
"extra_adult_rate": 70,
"extra_child_rate": 40,
"extra_infant_rate": 0,
"package_rate_enabled": false
},
{
"id": 560732,
"name": "Standard Rate",
"room_type_dates": [
{
"date": "2026-04-29",
"available": 0,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 2,
"max_stay": 21,
"stop_sell": false,
"rate": 186
},
{
"date": "2026-04-30",
"available": 0,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 2,
"max_stay": 21,
"stop_sell": false,
"rate": 186
},
{
"date": "2026-05-01",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 2,
"max_stay": 21,
"stop_sell": false,
"rate": 186
}
],
"included_occupancy": 1,
"max_occupancy": 2,
"max_child_occupancy": 0,
"max_infant_occupancy": 0,
"max_adult_occupancy": 2,
"adult_required": true,
"extra_adult_rate": 70,
"extra_child_rate": 40,
"extra_infant_rate": 0,
"package_rate_enabled": false
},
{
"id": 560733,
"name": "Standard Rate",
"room_type_dates": [
{
"date": "2026-04-29",
"available": 0,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 263
},
{
"date": "2026-04-30",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 263
},
{
"date": "2026-05-01",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 263
}
],
"included_occupancy": 1,
"max_occupancy": 4,
"max_child_occupancy": 0,
"max_infant_occupancy": 0,
"max_adult_occupancy": 4,
"adult_required": true,
"extra_adult_rate": 70,
"extra_child_rate": 40,
"extra_infant_rate": 0,
"package_rate_enabled": false
},
{
"id": 560734,
"name": "Standard Rate",
"room_type_dates": [
{
"date": "2026-04-29",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 224
},
{
"date": "2026-04-30",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 224
},
{
"date": "2026-05-01",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 224
}
],
"included_occupancy": 1,
"max_occupancy": 3,
"max_child_occupancy": 0,
"max_infant_occupancy": 0,
"max_adult_occupancy": 3,
"adult_required": true,
"extra_adult_rate": 70,
"extra_child_rate": 40,
"extra_infant_rate": 0,
"package_rate_enabled": false
},
{
"id": 560735,
"name": "Standard Rate",
"room_type_dates": [
{
"date": "2026-04-29",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 154
},
{
"date": "2026-04-30",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 154
},
{
"date": "2026-05-01",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 154
}
],
"included_occupancy": 1,
"max_occupancy": 2,
"max_child_occupancy": 0,
"max_infant_occupancy": 0,
"max_adult_occupancy": 2,
"adult_required": true,
"extra_adult_rate": 70,
"extra_child_rate": 40,
"extra_infant_rate": 0,
"package_rate_enabled": false
},
{
"id": 560736,
"name": "Standard Rate",
"room_type_dates": [
{
"date": "2026-04-29",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 154
},
{
"date": "2026-04-30",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 154
},
{
"date": "2026-05-01",
"available": 1,
"close_to_arrival": false,
"close_to_departure": false,
"min_stay": 1,
"max_stay": null,
"stop_sell": false,
"rate": 154
}
],
"included_occupancy": 1,
"max_occupancy": 2,
"max_child_occupancy": 0,
"max_infant_occupancy": 0,
"max_adult_occupancy": 2,
"adult_required": true,
"extra_adult_rate": 70,
"extra_child_rate": 40,
"extra_infant_rate": 0,
"package_rate_enabled": false
}
]
}
]✅ Found 6 room type(s)
| Room Type ID | Display Name | Internal Key | Total Units |
|---|---|---|---|
| 560731 | Maya | Standard Rate #560731 | 1 |
| 560732 | Fazia | Standard Rate #560732 | 1 |
| 560733 | Luna | Standard Rate #560733 | 1 |
| 560734 | Bahia | Standard Rate #560734 | 1 |
| 560735 | Noor A | Standard Rate #560735 | 1 |
| 560736 | Sofia | Standard Rate #560736 | 1 |
| Night | Date | Available | Rate | Stop Sell | Close Arrival | Close Departure | Min Stay | Status |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-29 | 1 | $224.00 | NO | NO | NO | 1 | ✅ VALID |
| 2 | 2026-04-30 | 1 | $224.00 | NO | NO | NO | 1 | ✅ VALID |
| 3 | 2026-05-01 | 0 | $224.00 | NO | NO | NO | 1 | ❌ FAILED: available = 0 (< 1) |
❌ FINAL RESULT: NOT AVAILABLE
Reason: Night 3 (2026-05-01): available = 0 (< 1)
| Night | Date | Available | Rate | Stop Sell | Close Arrival | Close Departure | Min Stay | Status |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-29 | 0 | $186.00 | NO | NO | NO | 2 | ❌ FAILED: available = 0 (< 1) |
| 2 | 2026-04-30 | 0 | $186.00 | NO | NO | NO | 2 | ❌ FAILED: available = 0 (< 1) |
| 3 | 2026-05-01 | 1 | $186.00 | NO | NO | NO | 2 | ✅ VALID |
❌ FINAL RESULT: NOT AVAILABLE
Reason: Night 1 (2026-04-29): available = 0 (< 1)
| Night | Date | Available | Rate | Stop Sell | Close Arrival | Close Departure | Min Stay | Status |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-29 | 0 | $263.00 | NO | NO | NO | 1 | ❌ FAILED: available = 0 (< 1) |
| 2 | 2026-04-30 | 1 | $263.00 | NO | NO | NO | 1 | ✅ VALID |
| 3 | 2026-05-01 | 1 | $263.00 | NO | NO | NO | 1 | ✅ VALID |
❌ FINAL RESULT: NOT AVAILABLE
Reason: Night 1 (2026-04-29): available = 0 (< 1)
| Night | Date | Available | Rate | Stop Sell | Close Arrival | Close Departure | Min Stay | Status |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-29 | 1 | $224.00 | NO | NO | NO | 1 | ✅ VALID |
| 2 | 2026-04-30 | 1 | $224.00 | NO | NO | NO | 1 | ✅ VALID |
| 3 | 2026-05-01 | 1 | $224.00 | NO | NO | NO | 1 | ✅ VALID |
✅ FINAL RESULT: AVAILABLE
Min Availability: 1
Total Rate: $672.00
| Night | Date | Available | Rate | Stop Sell | Close Arrival | Close Departure | Min Stay | Status |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-29 | 1 | $154.00 | NO | NO | NO | 1 | ✅ VALID |
| 2 | 2026-04-30 | 1 | $154.00 | NO | NO | NO | 1 | ✅ VALID |
| 3 | 2026-05-01 | 1 | $154.00 | NO | NO | NO | 1 | ✅ VALID |
✅ FINAL RESULT: AVAILABLE
Min Availability: 1
Total Rate: $462.00
| Night | Date | Available | Rate | Stop Sell | Close Arrival | Close Departure | Min Stay | Status |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-29 | 1 | $154.00 | NO | NO | NO | 1 | ✅ VALID |
| 2 | 2026-04-30 | 1 | $154.00 | NO | NO | NO | 1 | ✅ VALID |
| 3 | 2026-05-01 | 1 | $154.00 | NO | NO | NO | 1 | ✅ VALID |
✅ FINAL RESULT: AVAILABLE
Min Availability: 1
Total Rate: $462.00
| Property | Value |
|---|---|
| OK | ✅ YES |
| Available | ✅ YES |
| Room Name | Standard Rate #560734 |
| Room Display Name | Bahia |
| Room Type ID | 560734 |
| Total | $978.00 |
| Discounted | $880.20 |
| Promo Code | BH-LM2 |
| Room | API Says | Calendar Data Says | Match? | Problem | Details |
|---|---|---|---|---|---|
| Bahia | ✅ Available Bahia | ✅ Available Checking dates: 2026-04-29, 2026-04-30, 2026-05-01 | ✅ MATCH | Price: $978.00 | Source: operations_calendar | |
| Luna | ✅ Available Luna | ✅ Available Checking dates: 2026-04-29, 2026-04-30, 2026-05-01 | ✅ MATCH | Price: $1,110.00 | Source: operations_calendar | |
| Maya | ✅ Available Maya | ✅ Available Checking dates: 2026-04-29, 2026-04-30, 2026-05-01 | ✅ MATCH | Price: $978.00 | Source: operations_calendar | |
| Fazia | ✅ Available Fazia | ✅ Available Checking dates: 2026-04-29, 2026-04-30, 2026-05-01 | ✅ MATCH | Price: $846.00 | Source: operations_calendar | |
| Noor | ✅ Available Noor A | ✅ Available Checking dates: 2026-04-29, 2026-04-30, 2026-05-01 | ✅ MATCH | Price: $738.00 | Source: operations_calendar | |
| Sofia | ✅ Available Sofia | ✅ Available Checking dates: 2026-04-29, 2026-04-30, 2026-05-01 | ✅ MATCH | Price: $738.00 | Source: operations_calendar |
✅ All rooms match between API and calendar data!
💡 Example: If API says 'Bahia: ❌ Not Available' but your calendar shows Bahia IS available, then look at section 3 to see which night is failing (maybe night 2 has stop_sell=true when it shouldn't).
Matches base: NO
Matches internal: NO
Matches room ID: NO
RESULT: SKIPPED (name doesn't match)
ROOM MATCHING CHECK:
Requested: 'Sofia'
Base name: 'Standard Rate'
Display name: 'Sofia'
Internal key: 'Standard Rate #560736'
Room type ID: 560736
Matches display: YES
Matches base: NO
Matches internal: NO
Matches room ID: YES
✅ ACCEPTED: Name and room_type_id both match (ID: 560736)
RESULT: INCLUDED (matches requested room)
2026-04-22 02:39:56 | PARSE REQUEST
Start date: 2026-04-29
Nights: 3
Dates array: 2026-04-29, 2026-04-30, 2026-05-01
Room preference: none
================================================================================
2026-04-22 02:39:56 | AVAILABILITY CHECK
Dates: 2026-04-29, 2026-04-30, 2026-05-01
Nights: 3
Total room_types in parsed response: 1
=== Evaluating Rate Plan: Sofia (ID: 560736) ===
Internal key: Standard Rate #560736
Total units: 1
Night 0 (2026-04-29): OK - available=1, stop_sell=false, rate=154
Rate fields: rate=154, amount=N/A, price=N/A, total=N/A
Night 1 (2026-04-30): OK - available=1, stop_sell=false, rate=154
Rate fields: rate=154, amount=N/A, price=N/A, total=N/A
Night 2 (2026-05-01): OK - available=1, stop_sell=false, rate=154
Rate fields: rate=154, amount=N/A, price=N/A, total=N/A
✅ RESULT: VALID - Total: 462, Min Availability: 1
Room Type ID: 560736
=== SUMMARY ===
Total rate plans evaluated: 1
Rate plans that passed validation: 1
Available rate plans:
1. Sofia (ID: 560736) - Min avail: 1, Total: 462
⚠️ PRICE CHECK: Website shows $1,110.00 for 3 nights, but API returned 462
If prices don't match, the API may be returning a different rate plan than the website uses.
================================================================================
================================================================================
2026-04-22 02:39:56 | AVAILABILITY CHECK
Dates: 2026-04-29, 2026-04-30, 2026-05-01
Nights: 3
Total room_types in parsed response: 1
=== Evaluating Rate Plan: Sofia (ID: 560736) ===
Internal key: Standard Rate #560736
Total units: 1
Night 0 (2026-04-29): OK - available=1, stop_sell=false, rate=154
Rate fields: rate=154, amount=N/A, price=N/A, total=N/A
Night 1 (2026-04-30): OK - available=1, stop_sell=false, rate=154
Rate fields: rate=154, amount=N/A, price=N/A, total=N/A
Night 2 (2026-05-01): OK - available=1, stop_sell=false, rate=154
Rate fields: rate=154, amount=N/A, price=N/A, total=N/A
✅ RESULT: VALID - Total: 462, Min Availability: 1
Room Type ID: 560736
=== SUMMARY ===
Total rate plans evaluated: 1
Rate plans that passed validation: 1
Available rate plans:
1. Sofia (ID: 560736) - Min avail: 1, Total: 462
⚠️ PRICE CHECK: Website shows $1,110.00 for 3 nights, but API returned 462
If prices don't match, the API may be returning a different rate plan than the website uses.
================================================================================
ROOM SELECTION FILTERING:
Requested room: 'Sofia'
Expected room_type_id: 560736
Available rooms to filter: 1
✅ ACCEPTED: 'Sofia' (ID: 560736) - name and ID match
Matching rooms found: 1
Non-matching rooms: 0
✅ SELECTED: Sofia (ID: 560736)
Min availability: 1
API total price (will be replaced): 462
Requested: 'Sofia'
Room ID validation: ✅ (expected: 560736, got: 560736)