Skip to main content

Apartments.com Scraper API

Search US rental listings and pull unit-level inventory — not just a property’s advertised range, but every individual rentable unit with its own rent, beds, baths, square footage and availability date. Authentication and anti-bot bypass are handled automatically.

Key Features

Unit-Level Pricing

Every rentable unit with its own rent, beds, baths, sqft and availability date — not just the property’s advertised range.

Floor Plans

Each floor-plan model with its price range, bed/bath count, square footage and the units belonging to it.

Location Search

40 property cards a page, filterable by bedroom count and price. Pages 1-28.

Property Detail

Name, full address with city/state/ZIP, geo coordinates, phone, amenities, office hours and photo gallery.

No JS Rendering

apartments.com is fully server-rendered, so responses come back in ~2 seconds with no browser in the path.

School Data

GreatSchools ratings, grade ranges, enrollment and whether the property is in each school’s attendance zone.

Anti-Bot Bypass

apartments.com sits behind Akamai Bot Manager. ScrapeBadger clears it automatically — no proxies or CAPTCHAs to manage.
Use rent, not max_term_rent. Each unit carries both. rent is the advertised price the site shows a renter. max_term_rent is apartments.com’s raw data-maxrent attribute, which measures roughly twice the advertised rent and appears to be an upper bound across lease terms. It is exposed unparsed for completeness — do not treat it as the rent.

Coverage

Single market: apartments.com (US, USD, en-US).

Endpoints

Search Filters

Every filter below was verified against live result counts. Measured on kansas-city-mo (700 properties unfiltered):
apartments.com also renders a pet filter, but it returns the unfiltered total, so it is deliberately not exposed — a filter that silently does nothing is worse than no filter.

Quickstart

Finding a location slug

location is the slug apartments.com uses in its own URLs — the segment right after the domain.

Notes on the data

available_text is verbatim as rendered — "Now", "Sep 3". The site prints no year, so converting it to a timestamp would mean guessing the rollover. It is left as text deliberately.
A floor plan with units_available: 0 and valid beds/baths/rent/sqft is the site’s own layout for that property, not missing data. Those properties advertise plans rather than individual units.
rating is the GreatSchools score out of 10. apartments.com renders no badge for schools it has no rating for, so those come back as null. They are never 0 — a 0 would mean “rated zero”, which is a different and much worse claim about a school.
A search card carries a rent/bed rollup ("1 Bed", "$1,559+"), not per-unit inventory. Pass the card’s url to the property endpoint for units.
If you scrape apartments.com through the general Web Scraping API instead of this one, do not pass render_js: true. The whole page is server-rendered, so JS rendering only forces the slow browser path — 100+ seconds per page, which can exceed the CDN timeout and return a 524.