A quick demo might save your team weeks of engineering work.
Resources
Free Tools
One endpoint call, the Looker Studio setup steps, and a field-to-column map. Then keep it refreshing on a schedule.
Trusted by hospitality teams at
Booking.com carries the largest structured review corpus in hospitality: numeric sub-scores, reviewer country, stay type, and dated text on every property. Rates and rooms sit behind the same hotel_id. Below, those nightly rates land in Looker Studio as sortable rows.
Looker Studio reads best from a data source that refreshes itself. The reliable pattern is a Google Sheet in the middle: a script fills it on a schedule, Looker Studio treats it as a live table. In this guide it reads Booking.com rates straight from the StayAPI endpoint.
The Hotel Prices endpoint returns clean JSON for one hotel. Send your key in the X-API-Key header. See the
endpoint docs for every parameter.
Create a StayAPI account and copy your API key from the dashboard.
Load the API response into a Google Sheet with the Apps Script below, on a time-driven trigger.
In Looker Studio, add that sheet as a data source.
Build your report; it re-reads the sheet on each refresh.
This uses the real endpoint URL with the example Angsana Laguna Phuket id. Swap in your hotel id and your API key.
function refreshData() { var url = "https://api.stayapi.com/v1/booking/hotel/prices?hotel_id=346648&check_in=2026-05-01&check_out=2026-05-03"; var response = UrlFetchApp.fetch(url, { method: "get", headers: { "X-API-Key": "YOUR_API_KEY" }, muteHttpExceptions: true }); var body = JSON.parse(response.getContentText()); var records = (body.data && body.data.reviews) || body.reviews || body.rooms || []; var sheet = SpreadsheetApp.getActiveSheet(); sheet.clear(); sheet.appendRow(["retrieved_at", "block_id", "room_name", "is_refundable", "total_price"]); var now = new Date(); records.forEach(function (r) { sheet.appendRow([now, r.block_id, r.room_name, r.is_refundable, r.total_price]); }); }
50 free requests on signup, no card.
Each field from the Hotel Prices response, and a suggested column name.
The fields from the mapping above land as columns: hotel_id, block_id, room_name, is_refundable. Refreshed on the schedule you set.
Every row is one hotel record from the Hotel Prices response. These fields become columns:
Sign up, copy your key into the snippet above, and pull live Booking.com rates into Looker Studio.
50 free requests on signup. Fastest way to see if the schema fits.
Start free15 minutes. Volume, endpoint mix, and where the data lands. Walk out with a quote.
Book a demo