Apartments API endpoints
Explore 29 endpoints for accessing Apartments real estate data. Each endpoint is designed for a specific use case and returns structured JSON.
/details/byidINPUT: `listingKey` (e.g. `B22w35`) Get the **full property record** by apartments.com listing key — the fastest details endpoint. ##### Where to find a listingKey: - Returned as `listingKey` in every `/search/*` response. - Trailing segment of a listing URL: `https://www.apartments.com/the-victor-by-windsor-boston-ma/B22w35/` → `B22w35`. If you only have an address or URL, use [/details/byaddress](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=detailsbyaddress) or [/details/byurl](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=detailsbyurl) instead — both resolve to a listing key internally.
/details/byurlGet the **full property record** by an apartments.com **listing URL**. The trailing path segment of an apartments.com listing URL is the listing key — we extract it and forward to [/details/byid](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=detailsbyid). **URL forms accepted**: - `https://www.apartments.com/<property-slug>/<listingKey>/` - `https://www.apartments.com/<property-slug-city-state>/<listingKey>/`
/details/byaddressGet the **full property record** by **street address**. Internally this hits apartments.com's typeahead with the address, picks the property-type match, and uses its geo id to fetch the matching placard — same path the mobile app takes when a user taps an address suggestion. **Note**: apartments.com only knows about properties they have an active listing for. If the address is a single-family home the property owner hasn't listed, this endpoint returns an empty result.
/autocompleteApartments.com **search-box autocomplete** — the same typeahead the mobile app uses. Returns ranked suggestions across cities, ZIPs, neighborhoods, counties, submarkets, buildings, streets, and addresses — each with a region `id`, `typeCode`, `displayText`, centroid `(lat, lon)`, and bounding `box`. Feed the `id` + `typeCode` into [/search/byregionid](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=searchbyregionid) to reproduce the exact search the app fires after a user picks an autocomplete suggestion.
/search/bylocationSearch apartments.com rentals by **free-text location** — city, ZIP, neighborhood, county, submarket, or address. The location string is resolved through apartments.com's autocomplete and the matched region's bounding box is used for the search area — so a query of `Brooklyn, NY` searches the entire borough rather than treating it as a keyword. Returns paginated listings with `listingKey`, address, photos, rent (or rent range for multi-unit buildings), beds/baths/sqft, available units, listing dates, amenities, ratings, and the management/contact block. Supports the **full filter set** below (rent / beds / baths / sqft ranges, property types, sort, amenities, specialties, deal filters, rating threshold, move-in date window, pet policy, keywords).
/search/byzipSearch apartments.com rentals by **5-digit US ZIP code**. Same response shape and filter set as [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=searchbylocation) — only the location-block param changes.
/search/bycoordinatesSearch apartments.com rentals by **latitude + longitude + radius (miles)**. Use this when you have map coordinates rather than a city/ZIP — the request is sent to apartments.com as a circle around the centroid. Same response shape and filter set as [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=searchbylocation).
/search/bypolygonSearch apartments.com rentals inside a **polygon**. The polygon's bounding box is sent to apartments.com's BFF, then results are post-filtered with a precise point-in-polygon test on each listing's centroid — so the returned list matches the polygon you passed (not just its bounding box). Same response shape and filter set as [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=searchbylocation).
/search/byurlPaste an apartments.com **search results URL** and we replicate the search. The URL's path segments (city-state slug, property-type, bedroom count, price cap) are parsed and translated to the equivalent search params, then forwarded to [/search/bylocation](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=searchbylocation). Any of the optional filters below override what the URL implies. Same response shape as the other search endpoints.
/search/byregionidSearch by apartments.com **region id** — the same `id` + `typeCode` returned by [/autocomplete](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=autocomplete). This reproduces the **exact** search the app fires after a user picks a typeahead suggestion — apartments.com matches the region by its internal id rather than re-resolving a string, so this is the most precise location-search variant when you've already gone through autocomplete. If you only have the `id`, pass `displayText` (the autocomplete row's `displayText`) and we'll re-resolve the missing fields. If you have all four (`id`, `typeCode`, `box`, centroid) from autocomplete, pass them through verbatim for the fastest path.
/details/infoINPUT: `listingKey` (e.g. `B22w35`) Returns the **core property record** — name, address, coordinates, property type, year built, total units, building photo URLs, headline rent range, and the building-level description.
/details/amenitiesINPUT: `listingKey` (e.g. `B22w35`) Returns the **amenities** list for a property — both unit-level features (in-unit washer/dryer, dishwasher, hardwood, etc.) and building-level features (gym, pool, doorman, controlled access, etc.).
/details/availabilitiesINPUT: `listingKey` (e.g. `B22w35`) Returns the **available units** at the property — each unit's beds, baths, square footage, asking rent, available-from date, and floor plan label. This is the most-fetched sub-block for users tracking listings — it changes daily.
/details/schoolsINPUT: `listingKey` (e.g. `B22w35`) Returns the **assigned schools** for the property — elementary, middle, and high — with name, distance, ratings, grade range, and student counts.
/details/transitsINPUT: `listingKey` (e.g. `B22w35`) Returns nearby **transit stops** — subway, light rail, commuter rail, and bus — with line, stop name, distance from the property, and walking time.
/details/officehoursINPUT: `listingKey` (e.g. `B22w35`) Returns the leasing office's **hours of operation** for each day of the week, plus contact phone.
/details/petpolicyINPUT: `listingKey` (e.g. `B22w35`) Returns the property's **pet policy** — whether dogs / cats / other pets are allowed, weight limits, breed restrictions, monthly pet rent, and one-time pet deposits.
/details/parkingpolicyINPUT: `listingKey` (e.g. `B22w35`) Returns the property's **parking policy** — covered / uncovered / garage availability, monthly parking fees, and EV charging availability.
/details/leasetermsINPUT: `listingKey` (e.g. `B22w35`) Returns the property's **lease term options** — minimum / maximum lease length, short-term availability, and corporate housing eligibility.
/details/managementINPUT: `listingKey` (e.g. `B22w35`) Returns the **property management** block — management company name, contact phone / email, leasing office address, and the listing-advertiser metadata.
/details/expensesINPUT: `listingKey` (e.g. `B22w35`) Returns the property's **monthly expense estimate** — utilities (water, gas, electric, trash) breakdown and average total monthly cost beyond rent.
/details/photosINPUT: `listingKey` (e.g. `B22w35`) Returns the **photo gallery** — full-resolution URLs for every property photo (exterior, interior, common areas, floor plans), in display order.
/details/attachmentsINPUT: `listingKey` (e.g. `B22w35`) Returns **attached documents** — floor plan PDFs, brochures, application packets, lease previews, and any other PDFs the property has uploaded.
/details/walkscoreINPUT: `listingKey` (e.g. `B22w35`) Returns the **Walk / Transit / Bike scores** for the property's location — sourced from Walk Score's API and surfaced on the apartments.com listing page.
/details/feesINPUT: `listingKey` (e.g. `B22w35`) Returns one-time and recurring **fees** charged at the property — application fee, security deposit, admin fee, broker fee, amenity fee, and any other line items.
/details/rentalcostsINPUT: `listingKey` (e.g. `B22w35`) Returns the **all-in monthly cost estimate** — base rent + estimated utilities + recurring fees + parking + pet rent — broken out by line item.
/details/similarINPUT: `listingKey` (e.g. `B22w35`) Returns **similar listings** — apartments.com's recommended alternatives based on neighborhood, price band, and bedroom count. Each entry is a full placard ready to feed back into [/details/byid](https://realtyapi.io/dashboard?tab=playground&api=apartments&endpoint=detailsbyid).
/details/reviewsINPUT: `listingKey` (e.g. `B22w35`) Returns **resident reviews** — overall star rating, sub-ratings (location, value, noise, amenities, etc.), and individual review text with author + date.
/rental/trends**Rental market trends** — scrapes apartments.com's `rent-market-trends/<scope>/` page for monthly rent indices and historical change. Returns nationwide / state / city averages with **studio**, **1BR**, **2BR**, **3BR** rent breakdowns, plus the underlying market table (which states the requested scope ranks against). ##### Scope options Pass **one** of: - `scope` — the URL slug verbatim (e.g. `us`, `ny`, `new-york-ny`). Use this for non-state, non-city pages. - `state` — 2-letter state code (e.g. `ny`, `ca`, `tx`). Maps to `/rent-market-trends/<state>/`. - `city` — full city slug (e.g. `new-york-ny`, `austin-tx`). Maps to `/rent-market-trends/<city>/`. **Default**: `scope=us` (nationwide trends). ##### Notes - This is the only apartments.com endpoint that hits the **public web** (not the mobile-app API). It uses a residential proxy and warmed bot-cookies — first call may take 5–10s. - Page layout changes occasionally; if a field is missing in the response, apartments.com may have rolled out a new layout.
We built RealtyAPI so developers can focus on their products, not on data collection infrastructure.
Get the most current Apartments data without dealing with rate limits, IP blocks, or anti-bot protections. Our infrastructure handles the heavy lifting.
Clear documentation and a straightforward REST API make it easy to start pulling Apartments data into your application within minutes.
Our infrastructure is built for uptime and performance. Rely on consistent, uninterrupted access to Apartments data for your production applications.
Access a wide range of Apartments data points through carefully designed endpoints that cover properties, listings, agents, and market metrics.
Optimized data pipelines deliver Apartments results in milliseconds. Low latency means a better experience for your end users.
Every Apartments endpoint returns clean, well-structured JSON that is ready to parse and use directly in your application logic.
From property valuation to market analysis, the Apartments powers a wide range of real estate applications.
Analyze Apartments property data to determine accurate market values, estimate appreciation, and identify undervalued investment opportunities.
Track Apartments listing trends, pricing shifts, and inventory changes to make informed, data-driven investment and development decisions.
Monitor your real estate portfolio with live Apartments data. Track current values, rental comps, and market conditions in one place.
Identify high-potential properties and neighborhoods using Apartments data to power targeted outreach and marketing campaigns.
Compare listings, pricing, and agent activity across Apartments to understand market positioning and stay ahead of competition.
Build real-time dashboards that aggregate Apartments data for internal teams, clients, or investors with always-current information.
Common questions about using the Apartments through RealtyAPI.
Get started with 250 free API calls. No credit card required.