RankquantRQ

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

Provenance

Provenance and parameters for Rankquant normalized hotel ratings
Rows in the catalog15,401 hotels
Review sourceTripAdvisor / Booking.com / Agoda / Expedia / Trip.com / Ostrovok
Score schemabroad-z + bayesian-v1
Cohort definitioncity + nightly price band
Data generated2026-08-07

Columns

Every row in index.json carries these fields. Percentiles run 0–100, where 100 is the top of the catalog.

Column definitions for Rankquant normalized hotel ratings
FieldDefinition
slugURL-safe identifier; resolves to https://rankquant.com/hotels/<slug>/.
nameDisplay title of the hotel.
score10–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.
score1Cohortscore1 recomputed within the row's peer cohort instead of against the whole catalog.
score20–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.
score2Cohortscore2 recomputed within the row's peer cohort.
score30–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.
score3Cohortscore3 recomputed within the row's peer cohort.
n1Count of reviewers with a non-zero rating standard deviation who contribute to score1 and score3.
n2Count of reviewers with two or more reviews who contribute to score2.
cityCity as published by the source.
cleanCityNormalized city name used for cohort matching.
stateState or region.
countryCountry.
displayLocationRendered location string.
siteSource platform the review pool came from.
hotelStarRatingPublished star rating of the property, 1–5.
propertyTypeProperty classification (hotel, resort, apartment and similar).
priceBandNightly price band: $ budget, $$ midscale, $$$ upscale, $$$$ luxury.
priceRangeObserved nightly rate range in USD.
amenitiesCanonical amenity names offered by the property.
hasPoolBoolean 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].