Apartments.com Rentals Scraper

Export public Apartments.com rental listings with prices, addresses, amenities, availability, images, coordinates, and contact details.

Data fields

FieldTypeDescription
listingIdstringApartments.com listing id value when publicly available.
urlstringApartments.com url value when publicly available.
sourceUrlstringApartments.com source url value when publicly available.
propertyNamestringApartments.com property name value when publicly available.
addressstringApartments.com address value when publicly available.
citystring | nullApartments.com description value when publicly available.
statestring | nullApartments.com description value when publicly available.
zipCodestring | nullApartments.com description value when publicly available.

Input preview

startUrlsApartments.com URLs
locationLocation
zipCodeZIP code
maxItemsMaximum properties
maxPagesMaximum pages per search
includeDetailsEnrich property details

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Export public Apartments.com rental properties by city, ZIP code, search URL, or individual property URL. Get stable listing IDs, rent ranges, addresses, availability, amenities, coordinates, contact details, images, and source links as JSON, CSV, Excel, or API output.

The Actor is built for rental-market research, inventory monitoring, property-management analysis, relocation workflows, and public listing enrichment. It uses a lightweight connection by default, so you do not need to configure a proxy for ordinary runs.

Example input

{
  "startUrls": [{"url": "https://www.apartments.com/apartments/new-york-ny/?bb="}],
  "maxItems": 25,
  "maxPages": 2,
  "includeDetails": true,
  "includeImages": true
}

You can instead use {"location":"Chicago IL","maxItems":25} or {"zipCode":"10001","maxItems":25}.

Example output

{
  "listingId": "1j2c5h6",
  "url": "https://www.apartments.com/10-halletts-point-astoria-ny/1j2c5h6/",
  "sourceUrl": "https://www.apartments.com/apartments/new-york-ny/?bb=",
  "propertyName": "10 Halletts Point",
  "address": "10, 20, 30 Halletts Pt, Astoria, NY 11102",
  "city": "Astoria",
  "state": "NY",
  "zipCode": "11102",
  "neighborhood": null,
  "latitude": 40.7766,
  "longitude": -73.93585,
  "priceText": "Studio $3,195; 2 Beds $4,388+",
  "minPrice": 3195,
  "maxPrice": 4388,
  "currency": "USD",
  "bedrooms": ["Studio", "2 Beds"],
  "bathrooms": [],
  "squareFeet": [],
  "propertyType": "Apartment Community",
  "availabilityText": null,
  "amenities": ["Fitness Center", "Pool"],
  "rating": null,
  "reviewCount": null,
  "scores": {},
  "phone": "(929) 552-4252",
  "contactName": null,
  "imageUrls": ["https://images1.apartments.com/...jpg"],
  "description": "Public property description...",
  "scrapedAt": "2026-08-03T17:45:00.000Z",
  "warnings": []
}

What data can you extract?

Field Description
listingId Stable public Apartments.com listing identity
url, sourceUrl Canonical property URL and originating input/page
propertyName, address Property name and full displayed address
city, state, zipCode, neighborhood Public location components
latitude, longitude Public map coordinates when available
priceText Original displayed rent/range text
minPrice, maxPrice, currency Safely normalized rent range
bedrooms, bathrooms, squareFeet Public unit range values
propertyType, availabilityText Property classification and availability
amenities Publicly listed amenities
rating, reviewCount, scores Public rating and score summaries
phone, contactName Public contact fields shown on the property page
imageUrls Public property image URLs
description Public property description
scrapedAt, warnings Collection timestamp and per-row enrichment notices

Input settings

Setting JSON key Description
Apartments.com URLs startUrls Search URLs with your filters or individual property URLs
Location location City/state search, such as Chicago IL
ZIP code zipCode Five-digit US ZIP search
Maximum properties maxItems Global unique-property limit; default 25
Maximum pages maxPages Search-page limit per input; default 5
Enrich details includeDetails Visit property pages for expanded public fields
Include images includeImages Return publicly displayed image URLs
Proxy proxyConfiguration Optional advanced connection settings; not required by default

Input recipes

Fast market snapshot

{"location":"Chicago IL","maxItems":50,"maxPages":2,"includeDetails":false}

Detailed property record

{"startUrls":[{"url":"https://www.apartments.com/10-halletts-point-astoria-ny/1j2c5h6/"}],"maxItems":1,"includeDetails":true}

Filtered monitoring run

Paste the filtered Apartments.com results URL into startUrls, set a conservative maxItems, and schedule repeat runs in Apify. Stable listingId values make snapshots easy to compare.

Who is it for?

This Actor is useful for real estate analysts, rental-market researchers, property managers, relocation teams, and developers building rental search or monitoring workflows.

Tips and limits

  • Start with 10–25 properties, inspect output, then increase the limit.
  • Use a pasted search URL when you need Apartments.com filters preserved exactly.
  • Disable includeDetails for a faster search snapshot; enable it for contacts, coordinates, amenities, and richer media.
  • Broad searches may be capped or reordered by Apartments.com. The Actor reports what the public pages expose and does not claim exhaustive market coverage.
  • Optional fields remain empty instead of being guessed. A row warning records detail-page failures while preserving useful search data.

API usage

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/apartments-com-rentals-scraper').call({
  location: 'New York NY', maxItems: 25, includeDetails: true
});
console.log(run.defaultDatasetId);
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/apartments-com-rentals-scraper").call(run_input={
    "zipCode": "10001", "maxItems": 25, "includeDetails": True
})
print(run["defaultDatasetId"])
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~apartments-com-rentals-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"location":"Chicago IL","maxItems":25}'

MCP and AI agents

Connect through Apify MCP Server:

claude mcp add --transport http apify 'https://mcp.apify.com?tools=fetch_cat/apartments-com-rentals-scraper'

Or add the HTTP server to your MCP client configuration:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/apartments-com-rentals-scraper"
    }
  }
}

Example prompts:

  • “Export 20 public Apartments.com rentals in ZIP 10001 and summarize the rent range.”
  • “Find Chicago rentals, return their addresses and amenities, and group them by price range.”

Support

Open an issue from the Actor page with the run URL, input, expected result, and one reproducible public Apartments.com URL. Do not include credentials or private data.

Common questions

Questions and answers reused from the canonical actor README.

Can I export CSV or Excel?

Yes. Every run writes an Apify dataset that can be downloaded as JSON, CSV, Excel, XML, or RSS and queried over the dataset API.

Does it require a proxy?

No proxy is configured by default. Optional Apify Proxy settings are available for buyers who need them in their own environment.

Why are some fields empty?

Apartments.com does not show every field for every property. The Actor returns null or an empty array rather than inventing values.

Can I scrape a single property?

Yes. Add its public Apartments.com property URL to startUrls and set maxItems to 1.