Harthliving OTA · bản chữ cho AI · dựng từ vault (nguồn sửa lần cuối 29/09/2026 09:28) · mục lục: https://harthliving-ota.pages.dev/ai/index.txt URL (HTML): https://harthliving-ota.pages.dev/library/reports/2026-09-15-price-parity-airbnb-vs-booking/ [Tổng quan](https://harthliving-ota.pages.dev/) › [Dữ liệu & báo cáo](https://harthliving-ota.pages.dev/library/) › [Báo cáo & audit](https://harthliving-ota.pages.dev/library/reports/) # 2026-09-15-price-parity-airbnb-vs-booking ## Cùng căn, cùng đêm — khách trả bao nhiêu trên Airbnb và trên Booking (15/09/2026) Nguồn: `audits/2026-09-15-price-parity-airbnb-vs-booking.md` · Đọc ngày: **15/09/2026** ### Cùng căn, cùng đêm — khách trả bao nhiêu trên Airbnb và trên Booking Câu hỏi: *đặt cùng một phòng, cùng ngày, khách trả trên Airbnb và trên Booking có lệch không, và cơ chế trừ phí / phí dọn của từng kênh vận hành thế nào?* Trả lời ngắn: **có, lệch rõ, và lệch không theo thiết kế nào.** Trên hầu hết đêm, **khách đặt qua Booking trả ít hơn Airbnb 2–17 % (trung vị theo căn)**, riêng 41 LHC có đêm lệch tới 35 %. Ngược lại, 15 MN là căn duy nhất Airbnb rẻ hơn — nhưng căn này đang đóng gần trọn 3 tháng ở cả hai kênh. #### 0. Ba câu chốt 1. **Cơ chế phí hai kênh bây giờ gần như giống nhau, nên giá lệch là do MÌNH đặt, không phải do nền tảng.** Từ 14/09 (host-only fee) Airbnb không thu gì thêm của khách; Booking cũng không. Khách trả đúng **giá đêm PriceLabs đẩy + phí dọn khai trên kênh đó**. Đã đối chiếu **9/9 trang công khai khớp đến từng đồng** với giá PriceLabs (5 Airbnb, 4 Booking + 1 Booking đọc qua kết quả tìm kiếm). 2. **Lệch đến từ ba tầng, tầng nào cũng do mình cầm:** (a) `Base`/`Min` hai dòng PriceLabs khác nhau và không nối cha–con (`L-23`); (b) phí dọn khai lệch — Airbnb 230.000–690.000 ₫, Booking 0–300.000 ₫ (`L-25` · `L-95`); (c) thuật toán chạy riêng từng dòng, dòng Booking của ba villa khai sai `BR = 1` nên bị kẹp sàn (`L-18` · `L-39`). 3. **Tiền mình nhận về gần bằng nhau ở hai kênh** — Airbnb giữ 15,5 %, Booking giữ **15,00 %** (đọc 15/15 đơn có tiền của 305 + 41 LHC, kể cả trên phí dọn). Nên **không có lý do cấu trúc nào để một kênh đắt hơn kênh kia**; muốn khách trả bằng nhau thì đặt **cùng Base, cùng Min, cùng phí dọn** cho hai dòng. #### 1. Cơ chế từng kênh — đã kiểm bằng số thật hôm nay ##### 1a. Airbnb (từ 14/09/2026 19:05, `Single fee (CURRENT SETTING)`) `Khách trả = Σ giá đêm (PriceLabs đẩy) + cleaning fee (khai trên Airbnb) ← không phí dịch vụ, không thuế Host nhận = Khách trả × (1 − 15,5 %) ← phí tính trên cả cleaning Ở 7+ đêm : giá đêm × 0,95 (weekly) · 28+ đêm × 0,90 (monthly); cleaning giữ nguyên ` - Trang công khai 305, 24–27/10: **₫5.817.923** = 1.891.784 + 1.816.951 + 1.706.688 (đúng ba giá ngày của PriceLabs) + 402.500 dọn. Airbnb hiển thị dạng "3 nights × ₫1.939.308" — tức **chia đều cả phí dọn vào giá đêm khi hiện cho khách**, không tách dòng riêng. - Kiểm thêm 502 (20–23/10 = 3.566.445) · 41 LHC (15.904.373) · 25 AT 11 (10.925.000) · 181 THT (02–05/11 = 10.816.360): **5/5 khớp đến từng đồng**. Không có dòng thuế, không có phí khách. - Cleaning fee hiện tại (đã nâng ×1,15 ngày 14/09): 305 · 404 **402.500** · 502 **230.000** · 181 THT · 25 AT 11 · 15 MN **575.000** · 41 LHC **690.000**. ##### 1b. Booking.com `Khách trả = Σ Standard Rate (PriceLabs đẩy, ĐÃ GỒM VAT 8 % bên trong con số) + cleaning fee "not included in the price" → hiện thành dòng "+VND X taxes and fees" Host nhận = Khách trả × (1 − 15,00 %) ← hoa hồng tính trên TOÀN BỘ số khách trả, gồm cả cleaning fee và phần VAT Ở 7+ đêm : rate plan Weekly −5 % · Monthly −10 % (cùng mức với Airbnb) Thanh toán : "pay at the property", cash → không có phí thanh toán (hasPaymentCharge = 0) ` - Trang công khai 305, 24–27/10: **VND 4.966.298** = 1.721.629 + 1.675.514 + 1.569.155 (đúng ba giá ngày dòng `bcom`) **+ VND 300.000 taxes and fees** (= cleaning fee). Tổng **5.266.298**. - Kiểm thêm 502 (20–23/10 = 2.847.807 + 150.000) · 41 LHC (12.374.877, "Includes taxes and fees", không phí dọn) · 25 AT 11 (10.350.000 + 300.000) · 181 THT (02–05/11 = 9.036.537, không phí dọn): **5/5 khớp**. Tài khoản đang xem là Genius Level 1 mà giá vẫn bằng đúng giá đẩy ⇒ **không căn nào đang chạy Genius / mobile rate / country rate**. - **Hoa hồng = 15,00 % đúng tới đồng, trên tổng khách trả.** Đơn 19–22/09 của 305: khách trả 4.800.000 (= 3 × 1.500.000 + 300.000 dọn) → commission **720.000** = 15 % × 4.800.000. 12/12 đơn `ok` của 305 (Jun–Dec 2026, tổng 180.180.471 ₫ → 27.027.071 ₫) và 3/3 đơn của 41 LHC đều 15,00 %. ⇒ **Booking CÓ tính hoa hồng trên cleaning fee dạng *not included*** (trả lời `L-31`), và **tỷ lệ hoa hồng của tài khoản là 15 %** (trả lời `L-37`). - **Khoản "× 1,08" trong PriceLabs KHÔNG phải khách bị cộng thêm 8 %.** VAT 8 % được khai *included* trên `vat_tax_charges.html`, nằm **bên trong** giá khách thấy. Booking báo về PriceLabs giá phòng **đã bóc VAT** (`Rental Revenue` = tổng ÷ 1,08 − dọn), nên `Total Revenue` = `(Rental + dọn) × 1,08` chỉ là phép cộng ngược lại. Hệ quả duy nhất: **`ADR` dòng Booking trong PriceLabs thấp hơn giá khách thật trả ~7–8 %**, còn `ADR` dòng Airbnb là số gộp — so `ADR` hai kênh trong PriceLabs phải nhớ điều này (trả lời `L-36`; nghĩa vụ kê khai VAT của công ty là việc của kế toán, không đổi con số khách trả). ##### 1c. Hai kênh đặt cạnh nhau | | Airbnb (host-only) | Booking.com | |---|---|---| | Khách trả thêm ngoài giá đêm + dọn | **0** | **0** | | Nền tảng giữ lại | 15,5 % của (đêm + dọn) | 15,00 % của (đêm + dọn, gồm VAT) | | Host nhận trên 1.000.000 ₫ khách trả | 845.000 | 850.000 | | Phí dọn hiển thị | trộn vào "× đêm" | dòng riêng "+ taxes and fees" | | Ai đặt giá đêm | dòng `airbnb` trong PriceLabs | dòng `bcom` trong PriceLabs — **hai dòng độc lập** | | Ai đặt phí dọn | Airbnb listing editor | Booking → VAT/Tax/Charges — **PriceLabs không chạm được** | | Weekly / Monthly | −5 % / −10 % (`weeklyPriceFactor`) | −5 % / −10 % (rate plan) | ⇒ Với cùng số tiền khách trả, chênh tiền về túi chỉ **0,5 điểm** nghiêng về Booking. **Không có cơ sở cấu trúc để cố ý đặt kênh này đắt hơn kênh kia.** #### 2. Kết quả so 90 đêm (16/09 → 14/12/2026), 3 đêm, 2 khách, gồm phí dọn Giá = `graph_data.price` từng dòng PriceLabs (đã chứng minh = giá khách thấy). Mở/đóng = `Availability` trong gói đẩy gần nhất của từng dòng. Chỉ tính đêm **mở ở cả hai kênh**. | Căn | Base A / B | Min A / B | Dọn A / B | Đêm mở cả hai | Giá đêm Airbnb ÷ Booking (min · **trung vị** · max) | Đêm Airbnb rẻ hơn | Cửa sổ 3 đêm | Khách Airbnb trả so Booking (min · **trung vị** · max) | 7 đêm, trung vị | |---|---|---|---|---|---|---|---|---|---| | 305 | 2.510.420 / 2.400.000 | 1.552.500 / 1.500.000 | 402.500 / 300.000 | 50/90 | 0,842 · **1,076** · 1,296 | 3/50 | 39 | −13,2 % · **+9,2 %** · +11,2 % | +8,4 % | | 502 | 1.941.840 / 1.700.000 | *chưa đặt* / *chưa đặt* | 230.000 / 150.000 | 64/90 | 0,886 · **1,147** · 1,423 | 1/64 | 62 | +6,7 % · **+16,6 %** · +25,3 % | +15,8 % | | 181 THT | 4.442.260 / 4.200.000 | 2.875.000 / 3.000.000 | 575.000 / 0 | 57/90 | 0,846 · **1,047** · 1,178 | 20/57 | 43 | −6,9 % · **+10,1 %** · +21,2 % | +8,4 % | | 41 LHC | 5.315.880 / 5.500.000 | 3.967.500 / 4.000.000 | 690.000 / 0 | 60/90 | 0,986 · **1,104** · 1,326 | 4/60 | 46 | +5,3 % · **+17,1 %** · +35,2 % | +17,0 % | | 15 MN | 5.175.000 / 6.000.000 | 3.967.500 / 3.900.000 | 575.000 / 0 | **3/90** | 0,911 · **0,923** · 0,927 | 3/3 | 1 | **−3,6 %** | — | | 25 AT 11 | 4.600.000 / 4.600.000 | 3.450.000 / 3.450.000 | 575.000 / 300.000 | 90/90 | 1,000 · **1,000** · 1,109 | 0/90 | 88 | +2,2 % · **+2,6 %** · +6,1 % | +1,2 % | ##### Năm cửa sổ đã nhìn tận mắt trên trang khách | Căn · ngày | Khách trả trên Airbnb | Khách trả trên Booking | Booking rẻ hơn | Host nhận Airbnb (×0,845) | Host nhận Booking (×0,85) | |---|---|---|---|---|---| | 305 · 24–27/10 | 5.817.923 | 5.266.298 | **551.625 (−9,5 %)** | 4.916.145 | 4.476.353 | | 502 · 20–23/10 | 3.566.445 | 2.997.807 | **568.638 (−15,9 %)** | 3.013.646 | 2.548.136 | | 41 LHC · 20–23/10 | 15.904.373 | 12.374.877 | **3.529.496 (−22,2 %)** | 13.439.195 | 10.518.645 | | 25 AT 11 · 20–23/10 | 10.925.000 | 10.650.000 | 275.000 (−2,5 %) | 9.231.625 | 9.052.500 | | 181 THT · 02–05/11 | 10.816.360 | 9.036.537 | **1.779.823 (−16,5 %)** | 9.139.824 | 7.681.056 | Đọc bảng: cùng một căn, cùng ba đêm, khách đi Booking rẻ hơn Airbnb từ 275.000 tới 3,5 triệu. Và vì hai kênh giữ lại gần như bằng nhau, **mỗi đơn Booking mình cũng nhận ít hơn đúng chừng đó** — không phải "Booking ăn nhiều hơn", mà là **mình bán rẻ hơn ở Booking**. #### 3. Vì sao lệch — ba tầng, tầng nào cũng nằm trong tay mình | Tầng | Cơ chế | Bằng chứng | Mã việc | |---|---|---|---| | **A. Base / Min hai dòng khác nhau** | Mỗi kết nối kênh là một dòng PriceLabs với Base/Min riêng; 14/09 dòng Airbnb được nâng ×1,15 cho host-only fee, dòng Booking đứng yên (đúng, vì Booking không đổi phí) — nhưng trước đó hai dòng đã lệch sẵn. | 305: 2.510.420 vs 2.400.000 (+4,6 %) · 502: 1.941.840 vs 1.700.000 (+14,2 %) · 15 MN: 5.175.000 vs **6.000.000** (−13,8 %) · 25 AT 11: bằng nhau | `L-23` (chưa nối cha–con) · `L-38` | | **B. Phí dọn khai lệch** | PriceLabs không đẩy phí; mỗi kênh là số ai đó gõ vào. Airbnb đã nâng ×1,15 ngày 14/09, Booking chưa; 3 villa Booking để 0. | 305: 402.500 vs 300.000 · 502: 230.000 vs 150.000 · 25 AT 11: 575.000 vs 300.000 · 181/41/15 MN: 575.000–690.000 vs **0** | `L-25` · `L-26` · `L-95` | | **C. Thuật toán chạy riêng từng dòng** | Cùng Base mà giá ngày vẫn lệch tới 11 % (25 AT 11). Dòng Booking của 181 THT · 41 LHC · 15 MN khai `BR = 1` ⇒ comp set sai ⇒ bị ép xuống sàn Min, trong khi dòng Airbnb (BR đúng) bay trên sàn. 41 LHC: Base Booking **cao hơn** Airbnb mà giá ngày Booking vẫn **thấp hơn** 10 % trung vị. | 41 LHC 20–22/10: Booking 4.173.998 · 4.174.093 · 4.026.786 (sát Min 4.000.000) vs Airbnb 5.301.096 · 5.088.825 · 4.824.452 | `L-18` · `L-39` | **Không có tầng nào là "phí nền tảng".** Sau 14/09 Airbnb và Booking đều là giá-khách-thấy-là-giá-mình-đặt. #### 4. Đối chiếu Wide Parity của Booking Việt Nam là *wide parity*: giá trên Booking phải **bằng hoặc tốt hơn** mọi kênh khác (`platforms/booking-ranking-playbook.md` §3). Hiện Booking rẻ hơn Airbnb ở 5/6 căn ⇒ **đang tuân thủ**, nhưng bằng cách bán rẻ. Cách đưa hai kênh về cùng giá **mà vẫn tuân thủ**: **hạ Airbnb xuống bằng Booking**, hoặc nâng Booking lên **tới nhưng không vượt** Airbnb. Riêng 15 MN (giá đêm Airbnb rẻ hơn Booking 7,7 % trên 3 đêm mở, gồm dọn còn −3,6 %) là căn duy nhất **đang ngược parity** — cần chỉnh dù căn này gần như không mở bán tới 20/12. #### 5. Sửa lại ghi chép cũ - `platforms/pricelabs.md` §2g và `L-36` từng viết *"khách Booking bị cộng thêm 8 %"* và dựng bảng "khách thực trả = Base Booking × 1,08". **Sai.** Khách trả đúng giá đẩy; 8 % là VAT nằm trong giá, PriceLabs bóc ra khi báo cáo. Bảng "Airbnb rẻ hơn 26 % ở 15 MN" trong §2g vì thế cũng sai chiều ở 4/5 dòng. - `L-38` từng kết luận *"sau 15/09 Airbnb phải cao hơn Booking 8 % thì khách mới trả bằng nhau"*. **Sai cùng gốc.** Sau 15/09 hai Base đều là giá khách thấy ⇒ **khách trả bằng nhau khi Base bằng nhau và phí dọn bằng nhau**. - `README.md` §3c "Ba khoảng trống": cả ba (8 % là gì · hoa hồng Booking · VAT trong hệ số) nay đã đóng. #### 6. Việc phát sinh — chờ user quyết, agent không tự sửa | Việc | Lựa chọn | Ghi chú | |---|---|---| | **Chốt chính sách một mốc giá cho hai kênh** (`L-97`) | (1) **Cùng giá khách thấy** — Base/Min/dọn hai dòng bằng nhau, tiền về gần bằng nhau (chênh 0,5 điểm) · (2) Booking rẻ hơn có chủ ý — giữ như nay nhưng đặt mức lệch rõ (ví dụ −5 %) thay vì 2–17 % ngẫu nhiên · (3) Booking đắt hơn — **không được**, vi phạm wide parity | Khuyến nghị (1): nối cha–con trong PriceLabs (`L-23`) để Base tự đồng bộ; sửa `BR` dòng Booking (`L-18`) trước khi tin giá ngày | | **Đồng bộ phí dọn** (`L-25` · `L-95`) | Khai trên Booking đúng mức Airbnb hiện tại: 305/404 402.500 · 502 230.000 · 181/25 AT 11/15 MN 575.000 · 41 LHC 690.000 | Booking tính hoa hồng 15 % trên phí này (đã chứng minh) — vẫn hơn để 0 | | **15 MN đóng 19/09 → 20/12 ở CẢ HAI kênh** (`L-98`) | Xác nhận là cố ý (sửa nhà / khách dài hạn ngoài kênh) hay khoá nhầm | 93 đêm, chỉ có 1 đơn 28/11–03/12 bên trong; `num_bookings = 0` ở các ngày còn lại ⇒ là khoá tay, không phải kín phòng | #### 7. Phương pháp · giới hạn · bằng chứng - **Giá khách thấy** lấy từ trang công khai: Airbnb `StaysPdpSections.structuredDisplayPrice` (đăng nhập host vẫn trả giá khách); Booking trang hotel với `checkin/checkout/selected_currency=VND`. 9 trang, mọi số khớp PriceLabs đến từng đồng. - **Giá 90 đêm** lấy từ `api/process → graph_data.pricing_array[].price` của 12 dòng PriceLabs. ⚠️ **`api/fetch_last_request_text` KHÔNG dùng được để đọc giá** — gói đẩy Airbnb còn ghi giá cũ trước khi nâng 15 % (25 AT 11: 3.000.000 trong khi Airbnb đang bán 3.450.000); chỉ dùng mảng `Availability` của nó để biết mở/đóng. `num_bookings` trong `graph_data` không phản ánh ngày khoá tay. - **Hoa hồng** đọc từ `reservations_retrieve_list_v2` (Reservations, `date_type=arrival`, 01/06–31/12/2026) của `13311503` và `15668481`. Chưa đọc được 502 và 25 AT 11 (trang extranet treo quá 240 s hai lần) — tỷ lệ 15 % coi là của cả tài khoản, chưa xác minh riêng hai căn đó. - **Chưa quét promotion Airbnb** ở 6 căn còn lại (`L-96`) — đêm có promotion sẽ rẻ hơn `graph_data.price`, tức khoảng cách Airbnb–Booking ở những đêm đó **nhỏ hơn** bảng trên. - **404**: dòng Booking không có Base (`L-21`), Booking báo *no availability* 20–23/10 ⇒ không so được. **15 MN**: chỉ 3 đêm mở cả hai kênh trong 90 đêm. - File: `audits/2026-09-15-price-parity/pricelabs-daily-both-channels.json` (giá + mở/đóng 90 đêm × 6 căn × 2 kênh) · `compare-3night-windows.json` · `public-pages-price-lines.txt` (dòng giá 9 trang công khai) · `booking-reservations-commission.json` (26 đơn, đã bỏ tên khách) · `booking-305-room-table-24-27oct.png`.