How Bedmark collects and normalizes student housing rates
Bedmark is not a scraper. Thirty properties in one market run on six different platforms and quote rent on four different bases. Getting numbers is easy; getting numbers you can put next to each other is the product. This page is the whole method, unabridged.
Where the data comes from
Every number originates from rates the properties themselves publish: the pricing pages, floorplan pages, and availability tables on each purpose-built community's own website. We do not buy panels, model estimates, or resell a third-party feed. If you can open the page, you can check our number against it.
How often we collect
Every property in every subscribed market is collected daily, and the report you receive at 6:00 AM local time reflects that morning's read. Overnight moves are computed against the prior day's collection, so a rate cut posted at 9:00 PM shows up in the next report with the dollar and percent change attached.
How we normalize rates
Operators quote rent on different bases: per bed, per unit, weekly, or with utilities and furniture bundled in. Every rate is converted to monthly-per-bed before anything is compared, and bundled fees are noted rather than silently folded into the rate. Comparability is the product, so normalization happens before averaging, never after.
What we capture — and what we don't
We capture published asking rates per bed, floorplan and bath configuration, square footage where posted, unit availability counts, and any concession text shown against a floorplan. We do not capture effective rents after concessions, executed lease rates, renewal pricing, or anything behind a login. Published rate is a leading indicator, not a settled revenue number, and we label it that way.
How floorplan matching works
Properties name the same product differently, so we normalize each floorplan to bedroom count plus bath type (private versus shared) and, where posted, square footage band. Comparisons only ever run inside a matched configuration — a 4BR/4BA is never averaged against a 4BR/2BA. Anything we cannot confidently match is held out of the market average rather than blended in, and studios, townhomes, and cottage product are kept as their own configurations. Plans are tracked across renames and rebrands, so a renamed plan never reads as new supply.
Validated, then frozen
Each morning's collection is checked against the prior day before it ships: implausible jumps, empty pages, and layout changes are flagged and reviewed rather than published. Once a report goes out, that day's numbers are frozen, so a figure you quoted in a leasing meeting still reads the same a month later. A rate we could not read is reported as missing, by property name — never estimated, interpolated, or carried forward silently.
Rent per square foot
Square footage is only used where the property posts it, and always per bed so a 4BR plan is not flattered by shared living space:
$/sqft = monthly rent per bed ÷ square feet per bed
How we read availability language
Operators describe inventory differently. Every phrase is mapped to one reading before it reaches a report.
| Posted on the site | How we read it | How it is reported |
|---|---|---|
| Available now | Vacant and leasable today | Counted in available units |
| Waitlist / sold out | No leasable inventory in that plan | Zero available, plan still tracked for rate |
| Limited availability | Leasable, count not disclosed | Rate counted, unit count reported as undisclosed |
| Call for pricing | No published rate | Reported as missing, by property name |
| Coming soon / pre-lease | Future term inventory | Tracked against the term it is quoted for |
What we don't do
We do not model, estimate, or fill gaps. We do not buy or resell third-party panels, and we do not touch anything behind a login. If a property stops publishing a rate, the report says so by name rather than carrying yesterday's number forward.
See the method in a finished report: open the full sample
Start with one university.
Your first report arrives the next business morning.