Python 64.6%
TeX 23.3%
HTML 11.6%
Makefile 0.5%
1% ==========================================================================2\section{Data}3\label{sec:data}4% ==========================================================================56\subsection{Source and Content of the Scrape}7\label{subsec:source}89The data are a scrape of Airbnb's public search pages for the province10of Quebec collected in early 2026. The file carries no timestamp; it was11assembled in the same period as the January 2026 rental extraction used12in the companion paper on Airbnb and rents (UQO Working Paper No.~5),13which analyses the same 5,000 listings. The unit of observation is the14listing card as it appears in search results, and the record contains15nineteen fields: the card title, the municipality, a property-type label,16the displayed price, a price category, the star rating and a rating17category, the numbers of bedrooms and bathrooms, the guest capacity, the18number of amenities, the number of photos, the number of reviews, a19composite ``quality score'' generated by the scraper, the Superhost and20Guest Favourite badges, the pet policy and the coordinates. The data are21therefore considerably sparser than an Inside Airbnb extract: the room22type (entire home, private room, shared room), the host identifier, the23amenity list, the cleaning fee, the minimum stay and the calendar are not24observed, and the first version of this paper, which described the data25as an Inside Airbnb sample with amenity lists and host profiles, was26wrong on this point.\footnote{The scraper-generated quality score is a27deterministic function of the review count, the badges and the photo28count ($R^2 = 0.63$ in a linear regression on those fields) and is not29used. Three fields of the first version are no longer used: ``amenity30indices'' that were computed by adding random noise to the normalised31amenity count, ``room-type'' indicators that relabelled the property-type32field, and a ``multi-listing host'' proxy based on duplicated card titles.}3334The card title follows a fixed template, for example ``Rental unit in35Montr\'eal $\cdot$ $\star$4.90 $\cdot$ 2 bedrooms $\cdot$ 3 beds $\cdot$361 shared bath'', and it carries information that the structured fields37do not. We parse it to obtain the title category assigned by the host38(44 distinct labels, which we group into six classes), the star rating39as displayed, a ``New'' marker for listings that have no rating yet, the40number of beds, and whether the bathroom is shared, private or a half41bath. Parsing also repairs three defects of the structured fields. First,42the rating field is missing for 456 of the 3,456 priced listings (13.2\%)43and had been median-imputed in the committed version of the data; the44title shows that these listings display no star, so we treat them as45unrated and add an indicator. Second, the scraper stored zero bathrooms46whenever the title qualified the bathroom (``1 shared bath'', ``1 private47bath'', ``Half-bath''); the count is recovered from the title for 46548listings. Third, 161 studios have zero bedrooms in the structured field49and are recoded as one sleeping room with a studio indicator, and 4650bedroom counts missing from the field are read from the title. Fifty51titles were served in German by the platform's locale and are parsed with52the corresponding patterns; for 37 of them the rating field had been53truncated to 4.0 by a decimal-comma parsing error and the title value is54retained.5556\subsection{The Price Field}57\label{subsec:price_field}5859Of the 5,000 cards, 1,544 (30.9\%) display no price and are dropped. The60displayed price of the remaining 3,456 listings has a median of \$220 and61a mean of \$1,233, and its distribution on the logarithmic scale is62bimodal (Figure~\ref{fig:logprice}). A two-component normal mixture63fitted to $\ln p$ places one mode near \$150 and the other near \$2,500;6426.5\% of listings (915) display a price above \$1,000. The upper mode is65not a luxury segment. Table~\ref{tab:price_regimes} shows that, bedroom66count by bedroom count, the median price of listings above \$1,000 is67sixteen to nineteen times the median of listings below it, a ratio that68no plausible quality difference produces but that a stay of about three69weeks does. Listings in the upper mode are disproportionately small70rental units in Montreal with few reviews and without the Superhost71badge, which is the profile of listings oriented towards stays of a month72or more under Montreal's short-term rental rules. We conclude that the73scraper captured, for part of the sample, the total price of a multi-night74stay rather than the nightly rate, and the companion paper reaches the same75diagnosis on the same file. Because neither the stay length nor the76search dates are recorded, the nightly price of these listings cannot be77recovered.7879\begin{figure}[!htbp]80\centering81\includegraphics[width=0.85\textwidth]{rev_fig_logprice_mixture.pdf}82\caption{Displayed Prices of 3,456 Quebec Airbnb Listings on a Logarithmic Scale}83\label{fig:logprice}84\begin{minipage}{0.9\textwidth}85\footnotesize86\textit{Notes:} Histogram of $\ln p$ with the two components of a normal87mixture fitted by maximum likelihood (solid lines) and their sum (dashed).88The grey dotted line marks \$1,000; the red dotted line marks the price at89which the posterior probability of the upper component reaches one half.90\end{minipage}91\end{figure}9293\begin{table}[!htbp]94\centering95\caption{Median Displayed Price by Bedroom Count, Below and Above \$1,000}96\label{tab:price_regimes}97\begin{threeparttable}98\input{../results/tables/rev_price_regimes.tex}99\begin{tablenotes}100\footnotesize101\item \textit{Notes:} Priced listings ($N = 3{,}456$). Studios are102counted as one bedroom; the ``0'' row contains listings whose bedroom103count could not be parsed. The ratio is the median above \$1,000 divided104by the median below.105\end{tablenotes}106\end{threeparttable}107\end{table}108109A single price threshold is an imperfect classifier: the three-week total110of a \$40 room is below \$1,000, and the genuine nightly rate of a large111chalet can exceed it. We therefore classify listings with the mixture of112hedonic regressions of Section~\ref{subsec:mixture_methods}, which uses113the listing's characteristics to judge whether its price is a nightly or114a stay price. Table~\ref{tab:mixture} reports the estimates. The stay115regime shifts the intercept by $\hat\delta = 3.15$ log points, an implied116stay of about 23 nights, and has a wider residual dispersion, as expected117if stay lengths vary; its probability rises in Montreal and falls with118capacity, review count, Superhost status and the hotel and chalet119categories. The posterior classification is sharp: only 7 listings have a120posterior probability between 0.25 and 0.75. It assigns 976 listings121(28.2\%) to the stay regime, of which 83 display a price at or below122\$1,000, and it keeps 22 listings priced above \$1,000, mostly large123chalets, in the nightly regime. The 2,480 listings with a posterior124probability below one half form the analysis sample.125126\begin{table}[!htbp]127\centering128\caption{Two-Regime Mixture of Hedonic Regressions: Nightly Versus Stay Prices}129\label{tab:mixture}130\begin{threeparttable}131\input{../results/tables/rev_mixture.tex}132\begin{tablenotes}133\footnotesize134\item \textit{Notes:} Estimates of Equation~\eqref{eq:mixture} by the EM135algorithm on the 3,456 priced listings. The common slopes136$\boldsymbol{\beta}$ use the M4 regressor set plus a Montreal indicator.137The regime equation is a logistic regression of the posterior regime138probability on the listed characteristics; standard errors in139parentheses. ***, ** and * denote significance at the 1, 5 and 10\%140levels.141\end{tablenotes}142\end{threeparttable}143\end{table}144145\subsection{Analysis Sample and Descriptive Statistics}146\label{subsec:descriptives}147148Table~\ref{tab:summary} describes the analysis sample. The median149displayed price is \$162 and the mean \$206; the 10th and 90th150percentiles are \$70 and \$376. The typical listing has two bedrooms,151one and a half bathrooms and sleeps six; 91\% display a rating, with a152mean of 4.81 and a tenth percentile of 4.57 among rated listings, the153compression documented by \citet{Zervas2021}; 59\% of hosts are154Superhosts and 41\% of listings carry the Guest Favourite badge. The155sample spans 438 municipalities; Montreal accounts for 20\% of156listings, Quebec City and Mont-Tremblant for the next largest shares, and157the median listing is 17~km from the nearest of the 22 reference city158centres. The last column shows that the full priced sample differs from159the analysis sample mainly in price (because of the stay regime) and in160the Montreal share. Prices in the analysis sample are winsorised at the1611st and 99th percentiles of the full priced sample (\$31 and \$18,205) by162the committed cleaning step, which affects 35 listings at the bottom (clipped to \$31) and none163at the top.164165\begin{table}[!htbp]166\centering167\caption{Descriptive Statistics, Analysis Sample}168\label{tab:summary}169\begin{threeparttable}170\small171\input{../results/tables/rev_summary.tex}172\begin{tablenotes}173\footnotesize174\item \textit{Notes:} Analysis sample of 2,480 listings classified in175the nightly-price regime. The last column reports the mean in the full176priced sample ($N = 3{,}456$). Binary variables are 0/1. Bathrooms and177bedrooms are the repaired counts described in178Section~\ref{subsec:source}. Distances are great-circle distances to the179nearest of 22 reference municipalities.180\end{tablenotes}181\end{threeparttable}182\end{table}183184Table~\ref{tab:price_category} and Figure~\ref{fig:price_by_category}185show prices by title category. Chalets, cottages and cabins (30\% of the186sample) and houses (20\%) have the highest median prices, about \$200 and187\$180; rental units (28\%) and condominiums, lofts and apartments (12\%)188are priced near \$135; hotel rooms, bed-and-breakfasts and hostels (6\%)189near \$100. These raw differences confound type with capacity and190location, which the hedonic model separates. Figure~\ref{fig:map} maps191the analysis sample: the Montreal and Quebec City agglomerations, the192Laurentian corridor north of Montreal, Charlevoix and the Eastern193Townships are the main concentrations, and the density of listings within1941~km ranges from zero for a third of the sample to over 90 in central195Montreal.196197\begin{table}[!htbp]198\centering199\caption{Displayed Nightly Price by Title Category, Analysis Sample}200\label{tab:price_category}201\begin{threeparttable}202\input{../results/tables/rev_price_by_category.tex}203\begin{tablenotes}204\footnotesize205\item \textit{Notes:} Title categories group the 44 labels hosts choose206for the listing card. ``Chalet/cottage/cabin'' includes vacation and207holiday homes and nature lodges; ``House'' includes townhouses,208bungalows, villas and farm stays; ``Condo/loft/apartment'' includes209serviced apartments and guest suites; ``Hotel/B\&B/hostel'' includes210aparthotels, boutique hotels, guesthouses and resorts.211\end{tablenotes}212\end{threeparttable}213\end{table}214215\begin{figure}[!htbp]216\centering217\includegraphics[width=0.85\textwidth]{rev_fig_price_by_category.pdf}218\caption{Displayed Nightly Price by Title Category}219\label{fig:price_by_category}220\begin{minipage}{0.9\textwidth}221\footnotesize222\textit{Notes:} Box plots (median, interquartile range, whiskers at 1.5223times the interquartile range; outliers omitted) on a logarithmic price224axis, analysis sample.225\end{minipage}226\end{figure}227228\begin{figure}[!htbp]229\centering230\includegraphics[width=0.95\textwidth]{rev_fig_map.pdf}231\caption{Geographic Distribution of the Analysis Sample}232\label{fig:map}233\begin{minipage}{0.9\textwidth}234\footnotesize235\textit{Notes:} Each point is a listing in the nightly-price regime,236coloured by displayed price on a logarithmic scale. Coordinates are237WGS-84; a small number of listings in the Gasp\'esie and on the North238Shore lie outside the plotted window.239\end{minipage}240\end{figure}241242\subsection{What the Cross-Section Can and Cannot Measure}243\label{subsec:limits_data}244245Three features of the data bound the interpretation of everything that246follows. The price is the host's asking price displayed on one day, not247a transaction price, and it embodies whatever dynamic pricing the host248applies \citep{Gibbs2018dynamic}; the cleaning fee, which is a249substantial and variable component of what guests pay, is not observed.250The sample is a single cross-section: the first version of this paper251referred to ``seasons'' and ``seasonal sub-markets'', but no seasonal252variation exists in the data, and seasonality can enter only through the253composition of listings active at the time of the scrape, which the city254fixed effects absorb. Finally, the scrape covers listings returned by255the platform's search for Quebec on the collection dates, so listings256that were calendar-blocked or filtered out are missing, and the257province-wide coverage is denser in the urban and resort areas where the258platform is most active.259