% ========================================================================== \section{Data} \label{sec:data} % ========================================================================== \subsection{Source and Content of the Scrape} \label{subsec:source} The data are a scrape of Airbnb's public search pages for the province of Quebec collected in early 2026. The file carries no timestamp; it was assembled in the same period as the January 2026 rental extraction used in the companion paper on Airbnb and rents (UQO Working Paper No.~5), which analyses the same 5,000 listings. The unit of observation is the listing card as it appears in search results, and the record contains nineteen fields: the card title, the municipality, a property-type label, the displayed price, a price category, the star rating and a rating category, the numbers of bedrooms and bathrooms, the guest capacity, the number of amenities, the number of photos, the number of reviews, a composite ``quality score'' generated by the scraper, the Superhost and Guest Favourite badges, the pet policy and the coordinates. The data are therefore considerably sparser than an Inside Airbnb extract: the room type (entire home, private room, shared room), the host identifier, the amenity list, the cleaning fee, the minimum stay and the calendar are not observed, and the first version of this paper, which described the data as an Inside Airbnb sample with amenity lists and host profiles, was wrong on this point.\footnote{The scraper-generated quality score is a deterministic function of the review count, the badges and the photo count ($R^2 = 0.63$ in a linear regression on those fields) and is not used. Three fields of the first version are no longer used: ``amenity indices'' that were computed by adding random noise to the normalised amenity count, ``room-type'' indicators that relabelled the property-type field, and a ``multi-listing host'' proxy based on duplicated card titles.} The card title follows a fixed template, for example ``Rental unit in Montr\'eal $\cdot$ $\star$4.90 $\cdot$ 2 bedrooms $\cdot$ 3 beds $\cdot$ 1 shared bath'', and it carries information that the structured fields do not. We parse it to obtain the title category assigned by the host (44 distinct labels, which we group into six classes), the star rating as displayed, a ``New'' marker for listings that have no rating yet, the number of beds, and whether the bathroom is shared, private or a half bath. Parsing also repairs three defects of the structured fields. First, the rating field is missing for 456 of the 3,456 priced listings (13.2\%) and had been median-imputed in the committed version of the data; the title shows that these listings display no star, so we treat them as unrated and add an indicator. Second, the scraper stored zero bathrooms whenever the title qualified the bathroom (``1 shared bath'', ``1 private bath'', ``Half-bath''); the count is recovered from the title for 465 listings. Third, 161 studios have zero bedrooms in the structured field and are recoded as one sleeping room with a studio indicator, and 46 bedroom counts missing from the field are read from the title. Fifty titles were served in German by the platform's locale and are parsed with the corresponding patterns; for 37 of them the rating field had been truncated to 4.0 by a decimal-comma parsing error and the title value is retained. \subsection{The Price Field} \label{subsec:price_field} Of the 5,000 cards, 1,544 (30.9\%) display no price and are dropped. The displayed price of the remaining 3,456 listings has a median of \$220 and a mean of \$1,233, and its distribution on the logarithmic scale is bimodal (Figure~\ref{fig:logprice}). A two-component normal mixture fitted to $\ln p$ places one mode near \$150 and the other near \$2,500; 26.5\% of listings (915) display a price above \$1,000. The upper mode is not a luxury segment. Table~\ref{tab:price_regimes} shows that, bedroom count by bedroom count, the median price of listings above \$1,000 is sixteen to nineteen times the median of listings below it, a ratio that no plausible quality difference produces but that a stay of about three weeks does. Listings in the upper mode are disproportionately small rental units in Montreal with few reviews and without the Superhost badge, which is the profile of listings oriented towards stays of a month or more under Montreal's short-term rental rules. We conclude that the scraper captured, for part of the sample, the total price of a multi-night stay rather than the nightly rate, and the companion paper reaches the same diagnosis on the same file. Because neither the stay length nor the search dates are recorded, the nightly price of these listings cannot be recovered. \begin{figure}[!htbp] \centering \includegraphics[width=0.85\textwidth]{rev_fig_logprice_mixture.pdf} \caption{Displayed Prices of 3,456 Quebec Airbnb Listings on a Logarithmic Scale} \label{fig:logprice} \begin{minipage}{0.9\textwidth} \footnotesize \textit{Notes:} Histogram of $\ln p$ with the two components of a normal mixture fitted by maximum likelihood (solid lines) and their sum (dashed). The grey dotted line marks \$1,000; the red dotted line marks the price at which the posterior probability of the upper component reaches one half. \end{minipage} \end{figure} \begin{table}[!htbp] \centering \caption{Median Displayed Price by Bedroom Count, Below and Above \$1,000} \label{tab:price_regimes} \begin{threeparttable} \input{../results/tables/rev_price_regimes.tex} \begin{tablenotes} \footnotesize \item \textit{Notes:} Priced listings ($N = 3{,}456$). Studios are counted as one bedroom; the ``0'' row contains listings whose bedroom count could not be parsed. The ratio is the median above \$1,000 divided by the median below. \end{tablenotes} \end{threeparttable} \end{table} A single price threshold is an imperfect classifier: the three-week total of a \$40 room is below \$1,000, and the genuine nightly rate of a large chalet can exceed it. We therefore classify listings with the mixture of hedonic regressions of Section~\ref{subsec:mixture_methods}, which uses the listing's characteristics to judge whether its price is a nightly or a stay price. Table~\ref{tab:mixture} reports the estimates. The stay regime shifts the intercept by $\hat\delta = 3.15$ log points, an implied stay of about 23 nights, and has a wider residual dispersion, as expected if stay lengths vary; its probability rises in Montreal and falls with capacity, review count, Superhost status and the hotel and chalet categories. The posterior classification is sharp: only 7 listings have a posterior probability between 0.25 and 0.75. It assigns 976 listings (28.2\%) to the stay regime, of which 83 display a price at or below \$1,000, and it keeps 22 listings priced above \$1,000, mostly large chalets, in the nightly regime. The 2,480 listings with a posterior probability below one half form the analysis sample. \begin{table}[!htbp] \centering \caption{Two-Regime Mixture of Hedonic Regressions: Nightly Versus Stay Prices} \label{tab:mixture} \begin{threeparttable} \input{../results/tables/rev_mixture.tex} \begin{tablenotes} \footnotesize \item \textit{Notes:} Estimates of Equation~\eqref{eq:mixture} by the EM algorithm on the 3,456 priced listings. The common slopes $\boldsymbol{\beta}$ use the M4 regressor set plus a Montreal indicator. The regime equation is a logistic regression of the posterior regime probability on the listed characteristics; standard errors in parentheses. ***, ** and * denote significance at the 1, 5 and 10\% levels. \end{tablenotes} \end{threeparttable} \end{table} \subsection{Analysis Sample and Descriptive Statistics} \label{subsec:descriptives} Table~\ref{tab:summary} describes the analysis sample. The median displayed price is \$162 and the mean \$206; the 10th and 90th percentiles are \$70 and \$376. The typical listing has two bedrooms, one and a half bathrooms and sleeps six; 91\% display a rating, with a mean of 4.81 and a tenth percentile of 4.57 among rated listings, the compression documented by \citet{Zervas2021}; 59\% of hosts are Superhosts and 41\% of listings carry the Guest Favourite badge. The sample spans 438 municipalities; Montreal accounts for 20\% of listings, Quebec City and Mont-Tremblant for the next largest shares, and the median listing is 17~km from the nearest of the 22 reference city centres. The last column shows that the full priced sample differs from the analysis sample mainly in price (because of the stay regime) and in the Montreal share. Prices in the analysis sample are winsorised at the 1st and 99th percentiles of the full priced sample (\$31 and \$18,205) by the committed cleaning step, which affects 35 listings at the bottom (clipped to \$31) and none at the top. \begin{table}[!htbp] \centering \caption{Descriptive Statistics, Analysis Sample} \label{tab:summary} \begin{threeparttable} \small \input{../results/tables/rev_summary.tex} \begin{tablenotes} \footnotesize \item \textit{Notes:} Analysis sample of 2,480 listings classified in the nightly-price regime. The last column reports the mean in the full priced sample ($N = 3{,}456$). Binary variables are 0/1. Bathrooms and bedrooms are the repaired counts described in Section~\ref{subsec:source}. Distances are great-circle distances to the nearest of 22 reference municipalities. \end{tablenotes} \end{threeparttable} \end{table} Table~\ref{tab:price_category} and Figure~\ref{fig:price_by_category} show prices by title category. Chalets, cottages and cabins (30\% of the sample) and houses (20\%) have the highest median prices, about \$200 and \$180; rental units (28\%) and condominiums, lofts and apartments (12\%) are priced near \$135; hotel rooms, bed-and-breakfasts and hostels (6\%) near \$100. These raw differences confound type with capacity and location, which the hedonic model separates. Figure~\ref{fig:map} maps the analysis sample: the Montreal and Quebec City agglomerations, the Laurentian corridor north of Montreal, Charlevoix and the Eastern Townships are the main concentrations, and the density of listings within 1~km ranges from zero for a third of the sample to over 90 in central Montreal. \begin{table}[!htbp] \centering \caption{Displayed Nightly Price by Title Category, Analysis Sample} \label{tab:price_category} \begin{threeparttable} \input{../results/tables/rev_price_by_category.tex} \begin{tablenotes} \footnotesize \item \textit{Notes:} Title categories group the 44 labels hosts choose for the listing card. ``Chalet/cottage/cabin'' includes vacation and holiday homes and nature lodges; ``House'' includes townhouses, bungalows, villas and farm stays; ``Condo/loft/apartment'' includes serviced apartments and guest suites; ``Hotel/B\&B/hostel'' includes aparthotels, boutique hotels, guesthouses and resorts. \end{tablenotes} \end{threeparttable} \end{table} \begin{figure}[!htbp] \centering \includegraphics[width=0.85\textwidth]{rev_fig_price_by_category.pdf} \caption{Displayed Nightly Price by Title Category} \label{fig:price_by_category} \begin{minipage}{0.9\textwidth} \footnotesize \textit{Notes:} Box plots (median, interquartile range, whiskers at 1.5 times the interquartile range; outliers omitted) on a logarithmic price axis, analysis sample. \end{minipage} \end{figure} \begin{figure}[!htbp] \centering \includegraphics[width=0.95\textwidth]{rev_fig_map.pdf} \caption{Geographic Distribution of the Analysis Sample} \label{fig:map} \begin{minipage}{0.9\textwidth} \footnotesize \textit{Notes:} Each point is a listing in the nightly-price regime, coloured by displayed price on a logarithmic scale. Coordinates are WGS-84; a small number of listings in the Gasp\'esie and on the North Shore lie outside the plotted window. \end{minipage} \end{figure} \subsection{What the Cross-Section Can and Cannot Measure} \label{subsec:limits_data} Three features of the data bound the interpretation of everything that follows. The price is the host's asking price displayed on one day, not a transaction price, and it embodies whatever dynamic pricing the host applies \citep{Gibbs2018dynamic}; the cleaning fee, which is a substantial and variable component of what guests pay, is not observed. The sample is a single cross-section: the first version of this paper referred to ``seasons'' and ``seasonal sub-markets'', but no seasonal variation exists in the data, and seasonality can enter only through the composition of listings active at the time of the scrape, which the city fixed effects absorb. Finally, the scrape covers listings returned by the platform's search for Quebec on the collection dates, so listings that were calendar-blocked or filtered out are missing, and the province-wide coverage is denser in the urban and resort areas where the platform is most active.