Data dictionaryEleven columns,
and only four we have seen work.
The names come from the service's own declared list, so the shape of the file is not in question. What each one contained is a much shorter story, and this page tells it rather than describing a schema as though it were a result.
- query
- The hotel URL you submitted, echoed back on every row that came from it - verbatim, including any query string or fragment you pasted along with it. Group by it whenever a file covers more than one hotel.
- reviewer_name
- The guest, as the review is credited. Not always a clean first name: in two of our rows the country had been folded into this field, and those were exactly the two rows where
reviewer_country came back blank. - reviewer_country
- The country the guest booked from - United States, Kazakhstan, Germany and so on, spelled out rather than a code. Filled on all but the two rows described above.
- score
- The guest's score for the stay. Read it on your own first run.
- review_title
- The review headline, which Booking collects separately from the body.
- liked
- What the guest said they liked - and in our runs the only piece of review text that ever arrived. Two things to know before you parse it. It is a snippet, not the full review: many values end in an ellipsis, and the same review came back cut at two different lengths in two different runs, so the cut-off point is not stable. And every value carried a leading and trailing space, so trim it. One row also held a bulleted, aggregated summary of the hotel rather than one guest's words, which is worth a glance before you feed the column to anything.
- disliked
- What the guest said they disliked, as its own column. On paper this is the most useful field in the export.
- date
- When the review was posted.
- stay_date
- When the guest actually stayed, which is a different fact from when they wrote.
- room_type
- The room the guest had.
- traveler_type
- The kind of trip - the segmentation field that makes a review export worth grouping.
The names are the service's own; the behaviour is a much narrower claim, and the gap between them is the whole point of this section. Our measurements come from thirty-six rows covering exactly two hotels - twenty-two distinct reviews once the rows repeated across runs are removed. On that sample, only four of the eleven columns ever carried a value: query, reviewer_name, reviewer_country and liked. The other seven - score, review_title, disliked, date, stay_date, room_type and traveler_type - were empty on every row. They are documented because they are part of the declared schema, not because we have seen them work, and this page therefore states no format for the dates, no scale for the score and no vocabulary for the two segmentation fields. What we can tell you about the four that did work is above, and the practical parts are that liked is a truncated snippet with spaces on both ends, and that a missing reviewer_country means the country ended up inside reviewer_name. Set a paid residential PROXY_URL before your first run - the service says plainly that Booking blocks free and datacenter IPs - then spend a few free rows on a hotel you care about and read the columns yourself.