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.

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.
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.