Rankquant normalized hotel ratings
15,401 hotels scored with the Rankquant per-reviewer normalization method, derived from a TripAdvisor / Booking.com / Agoda / Expedia / Trip.com / Ostrovok review corpus. Each reviewer is re-centred against their own rating distribution before aggregation, so a percentile reflects relative standing rather than a raw star average. Every row carries the z-normalized percentile, the unadjusted raw-average percentile it is measured against, and a sample-size-adjusted percentile, each also recomputed within the row's peer cohort. JSON, CC BY 4.0.
Download
- /datasets/hotels.json — the complete ranked table, JSON array of row objects (12.0 MB)
- /datasets/hotels.meta.json — provenance and the scoring parameters used for this export
- /hotels/ — the same data, browsable, one page per hotel
Provenance
| Rows in the catalog | 15,401 hotels |
|---|---|
| Review source | TripAdvisor / Booking.com / Agoda / Expedia / Trip.com / Ostrovok |
| Score schema | broad-z + bayesian-v1 |
| Cohort definition | city + nightly price band |
| Data generated | 2026-08-07 |
Columns
Every row in index.json carries these fields. Percentiles run 0–100, where 100 is the top of the catalog.
| Field | Definition |
|---|---|
| slug | URL-safe identifier; resolves to https://rankquant.com/hotels/<slug>/. |
| name | Display title of the hotel. |
| score1 | 0–100. Percentile of the mean per-reviewer z-score, taken across calibrated reviewers — those with five or more ratings and a rating standard deviation above zero. The headline Rankquant score: each reviewer is re-centred on their own scale before aggregation. Null on hotels with no calibrated reviewer: those are unranked rather than scored zero. |
| score1Cohort | score1 recomputed within the row's peer cohort instead of against the whole catalog. |
| score2 | 0–100. Percentile of the plain arithmetic mean rating over reviewers with two or more reviews. Unadjusted — it applies no correction of any kind, and exists as the baseline score1 is measured against. |
| score2Cohort | score2 recomputed within the row's peer cohort. |
| score3 | 0–100. Percentile of mean_z × n/(n + 53): the same reviewer-normalized mean behind score1, pulled toward the corpus average in proportion to how thin the sample is. A row keeps the fraction n/(n+53) of its measured distance from the mean. Shrinkage arithmetic — no model is fitted and nothing is inferred. |
| score3Cohort | score3 recomputed within the row's peer cohort. |
| n1 | Count of reviewers with a non-zero rating standard deviation who contribute to score1 and score3. |
| n2 | Count of reviewers with two or more reviews who contribute to score2. |
| city | City as published by the source. |
| cleanCity | Normalized city name used for cohort matching. |
| state | State or region. |
| country | Country. |
| displayLocation | Rendered location string. |
| site | Source platform the review pool came from. |
| hotelStarRating | Published star rating of the property, 1–5. |
| propertyType | Property classification (hotel, resort, apartment and similar). |
| priceBand | Nightly price band: $ budget, $$ midscale, $$$ upscale, $$$$ luxury. |
| priceRange | Observed nightly rate range in USD. |
| amenities | Canonical amenity names offered by the property. |
| hasPool | Boolean convenience flag for pool availability. |
Method
Each reviewer is re-centred against their own rating distribution before anything is aggregated, so a percentile reports relative standing inside a peer set rather than a raw star average. The full derivation, including every constant, is published at /methodology/. The sample-size adjustment behind score3 is shrinkage arithmetic — a row keeps the fraction n/(n+53) of its measured distance from the corpus average. Nothing is fitted or inferred.
Licence and reuse
Licensed under CC BY 4.0. Republish, cite, or remix with attribution to Rankquant and a link to this page. Questions about bulk access or a different export format: [email protected].