Apify Toolkits

What the buyer sees, and which field produced it

Captured from the Booking Android app on 2026-10-23, driven in an instrumented emulator with the traffic recorded alongside, so each number on screen is joined to the response it came from rather than matched by eye.

Describes build 1.0.173 of rl1987/booking-api-scraper, deployed 2026-10-29. The column set last changed 2026-10-29. Earlier builds can return a different one.

Captured from the Booking Android app on 2026-10-23, driven in an instrumented emulator with the traffic recorded alongside, so each number on screen is joined to the response it came from rather than matched by eye.

Property: BRYQS Hotel KL Sentral (hotel_id 1380580) · Stay: 2026-10-23 to 2026-10-24, 1 room, 1 adult · Currency: MYR

One property on one night is one observation. These pairings show which field this screen read, and that is enough to settle which column to compare against - it is not a claim that every property behaves identically. Where a column is known to differ by path, its own page says so.

The capture was anonymous and read-only throughout: no account, no sign-in, no booking. The in-app currency picker sits behind the account wall, so the currency above is the one the app chose, not one we selected - it served the property’s currency from a European exit IP rather than the exit’s.

Price Summary sheet - where the buyer’s total comes from

Endpoint: mobile.roomList -> [0].block[0].product_price_breakdown

Price Summary sheet - where the buyer’s total comes from

#On screenColumnResponse field
1“MYR 167 x 1 night”priceBeforeDiscount / price.before_discountproduct_price_breakdown.strikethrough_amount.amount_rounded = MYR 167 (167.0108)
2“- MYR 16”the discount, as Booking states itproduct_price_breakdown.items[3].item_amount = MYR 16 (15.7058), name 'Bonus savings'
3“MYR 151”price.total AND price.total_with_charges - identical hereproduct_price_breakdown.gross_amount = MYR 151 (151.305), taxes already inside it
4“Additional charges may apply”price.extra_charges - prose, no figureproduct_price_breakdown.charges_details.translated_copy (amount.value 0.0, mode 'incalculable')

Columns above are documented in Accommodations , Watched rates .

Room list - one card is one block, which is one row in products[]

Endpoint: mobile.roomList -> [0].block[0]

Room list - one card is one block, which is one row in products[]

#On screenColumnResponse field
1“Family Room”roomName (roomtype_id 13 -> roomTypeCode FAMILY)block[0].room_name
2“2 king beds”rooms[].beds[] - bed typeId 3, EXTRA_LARGE_DOUBLE_BEDroom_list[0].children_and_beds_text / block_text
3“Non-refundable”cancellationTypeblock[0].paymentterms.cancellation.info.refundable = 0
4“Pay the property before arrival”prepaymentPolicy / paymentTypesblock[0].paymentterms.prepayment.type = full_prepayment
5“No credit card needed”paymentTerms.noCardNeededblock[0].no_cc_object present
6“MYR 151”price.total - the same figure the sheet totalsblock[0].product_price_breakdown.gross_amount

Columns above are documented in Accommodations , Watched rates , integer ID reference .

Booking Conditions - the payment and cancellation prose

Endpoint: mobile.roomList -> [0].block[0].paymentterms

Booking Conditions - the payment and cancellation prose

#On screenColumnResponse field
1“You’ll be charged a prepayment of the total price at any time.”prepaymentPolicy = full_prepayment, and why dueDate is null herepaymentterms.prepayment.description - 'at any time', so Booking states no deadline
2“Note that if canceled, modified, or in case of no-show,”cancellationType = NON_REFUNDABLEpaymentterms.cancellation.info.refundable = 0

Columns above are documented in Watched rates .

Property page header

Endpoint: mobile.hotelPage + GraphQL PropertyPageReviewsQuery

Property page header

#On screenColumnResponse field
1“3.0 out of 5 stars”starRatinghotelPage[0].accuratePropertyClass = 3
2“Review score of 7.1 out of 10”reviewScoreproperty.reviewScore = 7.1
3“22, Jalan Tun Sambanthan 3, Brickfields,”address + district + city + countryCodehotelPage[0].address + .district + .city + .zip + .country_trans
4“This is a Preferred Plus property”isPreferredPlushotelPage[0].is_preferred_plus = 1

Columns above are documented in Accommodations , Reviews & scores .

Search results card - Compose collapses the whole card into one label

Endpoint: mobile.saba (appsearch) -> ...property

Search results card - Compose collapses the whole card into one label

#On screenColumnResponse field
1“BRYQS Hotel KL Sentral.”one card = one property row: name, starRating, reviewScore, reviewsCount, price, priceBeforeDiscountproperty.name / .propertyClass / .reviewScore / .reviewCount / .priceBreakdown.grossPrice / .strikethroughPrice

Columns above are documented in Accommodations , Reviews & scores .