# US Rental Business Census 2026-Q3: method and data dictionary Public data files in this folder: `census.csv` (state x category), `platforms.csv` (platform share by category), `platforms_by_state.csv`, `capability.csv` (booking capability by category), `chains.csv`, `populations.csv`, `meta.json`. Raw pulls are not published. ## Source and pull window Google Business Profile listings, retrieved through a commercial business-listings data API, one count query per state and category (612 queries), pulled between 2026-09-15T16:20:29Z and 2026-09-15T16:26:52Z. Filters: `address_info.country_code = US` and `address_info.region = `. No coordinates or radius were used. Google's data is a directory of self-declared listings, not a government count of businesses. ## Categories and national totals (sum of the 51 state counts) | category_id | label | listings | |---|---|---:| | `party_equipment_rental_service` | Party rental | 22,349 | | `trailer_rental_service` | Trailer rental | 37,029 | | `equipment_rental_agency` | Equipment rental | 24,588 | | `dumpster_rental_service` | Dumpster rental | 8,329 | | `boat_rental_service` | Boat rental | 8,541 | | `photo_booth` | Photo booth | 8,430 | | `bicycle_rental_service` | Bike rental | 4,445 | | `tent_rental_service` | Tent rental | 3,851 | | `canoe_and_kayak_rental_service` | Kayak & canoe rental | 3,754 | | `portable_toilet_supplier` | Portable restroom rental | 3,207 | | `rv_rental_agency` | RV rental | 2,182 | | `bouncy_castle_hire` | Bounce house rental | 1,483 | | **all categories** | | **128,188** | A listing that carries two census categories (for example tent rental and party rental) is counted in both, so the all-categories total is a count of category memberships, not of distinct businesses. Zero-count pairs: bouncy_castle_hire / Alaska, bouncy_castle_hire / District of Columbia. ## Sample rule For each category, the top 3,000 US listings by Google review count were pulled (fewer where the category has fewer US listings). Listings were de-duplicated by Google `cid` across categories, giving 30,031 distinct businesses in the sample. Sample-based columns describe the most-reviewed businesses in each state, not a random sample. ## Chain rule A domain is a chain if it is on the configured national-chain list or if the same domain appears in 20 or more states in the sample. Social pages are never chains. Chains found in this pull (sample locations, states): - www.uhaul.com (2176 locations, 51 states) - www.sunbeltrentals.com (234 locations, 35 states) - www.cruiseamerica.com (159 locations, 36 states) - www.republicservices.com (157 locations, 34 states) - www.willscot.com (144 locations, 42 states) - www.unitedsiteservices.com (143 locations, 27 states) - www.unitedrentals.com (124 locations, 36 states) - www.bintheredumpthat.com (123 locations, 31 states) - www.enterprise.com (88 locations, 28 states) - www.junk-king.com (79 locations, 28 states) - dumpsterdudez.com (72 locations, 25 states) - pedegoelectricbikes.com (69 locations, 30 states) - www.wasteconnections.com (60 locations, 21 states) - dealers.pedegoelectricbikes.com (50 locations, 27 states) - www.outdoorsy.com (47 locations, 23 states) - www.rumpke.com (40 locations, 3 states) - completewedo.com (35 locations, 20 states) - www.axisair.com (30 locations, 21 states) - www.hercrentals.com (20 locations, 11 states) - www.wm.com (13 locations, 3 states) - rvshare.com (6 locations, 5 states) - www.homedepot.com (5 locations, 5 states) - outdoorsy.com (2 locations, 2 states) - cruiseamerica.com (1 locations, 1 states) ## Website fingerprinting Each distinct website domain in the sample was fetched once (homepage, browser user agent, 15 s timeout, https then http, first 512 KB) and matched against the signature table below, case-insensitively. Links on the page are never used as a signal. No HTML was stored: only the HTTP status, the page title and the matched signatures. Sites returning a bot challenge, 403, 429 or 503, or failing to load, are recorded as unknown. Domains fetched: 21,238; unknown rate: 15.0%. Listings whose website is a social page (business.google.com, docs.google.com, facebook.com, instagram.com, linkedin.com, linktr.ee, nextdoor.com, sites.google.com, tiktok.com, twitter.com, x.com, yelp.com, youtube.com, or a `.business.site` address): 335, treated as having no website. Signature version: 2026-09-15. ### Booking capability classes - **rental_platform**: homepage matches one of the rental-platform signatures (first tier of the table) - **generic_ecommerce**: WooCommerce or Shopify present, no rental platform - **scheduling_widget**: a scheduling widget present, no rental platform and no e-commerce stack - **brochure**: a website that matched none of the above (site builder only, or nothing recognised) - **no_website**: no domain on the listing, or a social page in place of a website - **unknown**: the site could not be fetched (timeout, connection error, bot challenge, 403/429/503) or was never fetched ### Signature table | Platform | Tier | Regex (case-insensitive) | |---|---|---| | Reservety | rental | `booking-bytes` | | Booqable | rental | `booqable` | | Goodshuffle Pro | rental | `goodshuffle` | | TapGoods | rental | `tapgoods` | | EZRentOut | rental | `ezrentout\|ezo\.io` | | Twice / Rentle | rental | `rentle\.(io\|shop)\|twicecommerce` | | Checkfront | rental | `checkfront\.com` | | FareHarbor | rental | `fareharbor\.com` | | Peek Pro | rental | `book\.peek\.com\|peek\.com/embed` | | Rentman | rental | `rentman\.io` | | Point of Rental | rental | `pointofrental\|point-of-rental` | | InflatableOffice | rental | `inflatableoffice` | | Event Rental Systems | rental | `eventrentalsystems` | | Quipli | rental | `quipli` | | RentMy | rental | `rentmy\.co` | | Yo!Rent | rental | `yo-rent\|yorent` | | Sharefox | rental | `sharefox` | | SurvCart | rental | `survcart` | | Rentrax | rental | `rentrax` | | HireHop | rental | `hirehop` | | Current RMS | rental | `currentrms\|current-rms` | | Flex Rental Solutions | rental | `flexrentalsolutions` | | Texada | rental | `texada` | | Hubtiger | rental | `hubtiger` | | IntelliEvent | rental | `intellievent` | | WooCommerce | ecommerce | `woocommerce` | | WordPress | builder | `wp-content` | | Shopify | ecommerce | `cdn\.shopify\.com\|myshopify` | | Wix | builder | `wixstatic\|wix\.com` | | Squarespace | builder | `squarespace` | | GoDaddy builder | builder | `godaddysites\|wsimg\.com` | | Duda | builder | `dudamobile\|cdn-website\.com` | | Weebly | builder | `weebly` | | Webflow | builder | `webflow` | | Acuity | scheduling | `acuityscheduling` | | Calendly | scheduling | `calendly\.com` | | Setmore | scheduling | `setmore` | | Square Appointments | scheduling | `squareup\.com/appointments\|square\.site` | | HoneyBook | scheduling | `honeybook` | | Jobber | scheduling | `getjobber` | | Housecall Pro | scheduling | `housecallpro` | ## Column definitions (`census.csv`) - **state**: US state or District of Columbia, as Google Business Profile spells it. - **category_id / category**: Google Business Profile category id and the public label used in the report. - **locations**: Number of Google Business Profile listings in that state carrying that category, from the business-listings count query. A listing with two census categories appears in both categories' counts. - **population**: Resident population, Census Bureau Vintage 2025 estimate (see source below). - **per_100k**: locations / population x 100,000, rounded to 2 decimals. - **rank_in_category**: 1 = highest per_100k among the 51 rows of that category. - **sample_n**: Sample listings in that state and category (top listings by review count, see sample rule). - **avg_rating**: Mean Google rating of the sample rows that have a rating, 2 decimals. - **pct_claimed**: Share of the sample whose Google listing is claimed by the business. - **pct_with_website**: Share of the sample with a website of their own. A Facebook, Instagram, Linktree or retired Google business.site page does not count as a website. - **pct_can_book_online**: Among sample rows whose website could be classified, the share running a rental platform, a generic e-commerce stack or a scheduling widget. Rows with no website count as cannot; rows whose site could not be fetched are excluded from the denominator. - **chain_share_sample**: Share of the sample whose website domain belongs to a chain (see chain rule). - **independent_estimate**: round(locations x (1 - chain_share_sample)); blank when sample_n < 20. - **top_operator / top_operator_rating / top_operator_reviews**: The sample business in that state and category with the most reviews among those that are not a chain and have rating >= 4.5 with >= 25 reviews; blank if none qualifies. ## Population source https://www2.census.gov/programs-surveys/popest/datasets/2020-2025/state/totals/NST-EST2025-ALLDATA.csv (column `POPESTIMATE2025`, Vintage 2025, 51 rows). ## Known limits - Google Business Profile counts include listings that are closed, duplicated or mis-categorised; they are not a government count. - Categories are self-declared by the business; a business can be in several. - The sample is the most-reviewed businesses per category, so sample-based shares over-represent established operators. - Unknown websites are excluded from platform and capability shares, not counted as either; the unknown rate is published above. - Signature matching detects code and asset references only; a platform used without any homepage footprint is not detected. - Population is the state total, not the number of businesses or households. Generated 2026-09-15T19:23:08Z by `scripts/census/write_readme.py`.