Apartments.com Scraper avatar

Apartments.com Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Apartments.com Scraper

Apartments.com Scraper

Scrape rental listings from Apartments.com — the largest US rental marketplace by CoStar Group. Extract rent prices, total monthly costs, floor plans, amenities, fees, pet policies, photos, phone numbers and availability. Filter by city, price range, bedrooms and property type.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

6

Monthly active users

4 days ago

Last modified

Share

Apartments.com Scraper — US Rental Listings, Rent Comps, Floor Plans & Multifamily Property Data Extractor

The most complete Apartments.com data extraction tool on Apify. Pull live rental listings from the largest US apartment marketplace — operated by CoStar Group — with structured rent prices, total monthly costs, beds/baths/sqft, amenities, fees, pet policies, photos, phone numbers, ratings, and geocoordinates. Built for multifamily investors, prop-tech teams, rent-comp analysts, lenders, brokerages, and relocation platforms that need fresh, query-ready rental supply data without fighting CoStar's anti-bot stack.

Apify Actor


What This Actor Does

The Apartments.com Scraper is a production-ready Apify actor that extracts structured rental listings from Apartments.com — the flagship US rental marketplace owned by CoStar Group, the same company behind LoopNet, Homes.com, and the CoStar Suite used by 90%+ of US commercial real-estate professionals. Apartments.com aggregates multifamily complexes, condos, townhomes, and single-family rentals across virtually every metro in the United States, making it the single largest public source of US rental supply data.

The actor fetches city or URL-scoped search results, parses each listing card from the HTML and from the embedded JSON-LD CollectionPage graph, and optionally dives into each property's detail page to pull floor plans, amenity tags, fees, pet policies, photos, ratings, walk scores, and management company info. It returns one normalized JSON record per property — ready to drop into Postgres, BigQuery, Snowflake, Power BI, a CRM, or an investment-research notebook.

Each record can include:

  • Property identity — Apartments.com listing ID, property name, full street address, city, state, ZIP, neighborhood, latitude/longitude
  • Pricing — base rent range (rentMin/rentMax), total monthly with fees (totalMonthlyMin/totalMonthlyMax), deposit
  • Unit specs — bedroom range, bathroom range, sqft range, floor plans (when detail scrape is on)
  • Property metadata — property type (apartment / house / condo / townhome), year built, unit count, management company
  • Lifestyle attributes — pet friendly flag + full pet policy + breed/weight restrictions, parking, lease term
  • Marketing signalsrentSpecials flag + free-text promo description, ratings, review count
  • Media — photo URLs, photo count, virtual tour link
  • Walkability — Walk Score, Transit Score, Bike Score
  • Contact — leasing phone number, listing URL

If you've ever tried to build a rent-comp dataset by hand, you already know this is a multi-week engineering project. This actor does it in minutes.


Why scrape Apartments.com yourself when this exists?

Apartments.com is a high-value target because it is hard to scrape. CoStar invests heavily in protecting its data — they license it commercially through the CoStar API at five-figure annual contracts. DIY scrapers typically hit the wall at one of these obstacles within the first week:

  • Aggressive Akamai / DataDome fingerprinting that blocks vanilla requests / axios traffic on the first hit
  • HTTP 403 and 429 rate-limit walls triggered by even mild concurrency
  • Markup churn — Apartments.com ships A/B tests constantly, so CSS selectors break every few weeks
  • Two sources of truth per page — the visible HTML cards and a separate JSON-LD CollectionPage graph that need to be merged and de-duplicated by property name
  • Pagination quirks/2/, /3/ URL suffixes with no canonical "last page" hint; you have to detect partial pages
  • Detail-page JSON-LD nesting — floor plans, fees, and pet rules live across multiple @graph nodes inside multiple <script type="application/ld+json"> blocks
  • Total monthly vs. base rent confusion — the headline price excludes mandatory fees that often add $100–$400/month
  • Phone numbers rendered as click-to-call tokens, not raw text
  • Geocoordinates only available in JSON-LD, not in the visible card
  • IP geofencing — non-US IPs get throttled or shown a stripped layout, so residential US proxies are mandatory at scale

This actor handles all of it: realistic Chrome headers, retry-with-backoff on 403/429, Apify Residential Proxy integration, JSON-LD + HTML merge, deterministic dedupe by property ID, and a stable normalized output schema that survives Apartments.com's UI refreshes.


Quick Start

One-Click Run

  1. Open the actor page on the Apify Store and click "Try for free"
  2. Enter one or more city slugs in the Cities field (e.g. austin-tx, new-york-ny, chicago-il) — or paste full Apartments.com search URLs into Search URLs
  3. Optionally toggle Scrape Detail Pages for floor plans/amenities/fees/photos, and set a Max Listings cap
  4. Hit Start — your structured rental dataset appears in the Apify dataset view, downloadable as JSON, CSV, Excel, or HTML

API Run (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/apartments-com-scraper").call(run_input={
"cities": ["austin-tx", "houston-tx", "dallas-tx"],
"propertyType": "apartments",
"maxPrice": 2500,
"minBeds": 2,
"scrapeDetails": True,
"maxListings": 300,
"maxPages": 15,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"]
}
})
for unit in client.dataset(run["defaultDatasetId"]).iterate_items():
print(
unit["propertyName"],
f"{unit['bedsMin']}{unit['bedsMax']} bd",
f"${unit['rentMin']:,}–${unit['rentMax']:,}/mo",
unit["city"], unit["zipCode"],
)

API Run (Node.js / TypeScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/apartments-com-scraper').call({
searchUrls: [
'https://www.apartments.com/new-york-ny/',
'https://www.apartments.com/brooklyn-ny/under-3500/',
],
rentSpecialsOnly: false,
scrapeDetails: true,
maxListings: 500,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Pulled ${items.length} NYC + Brooklyn listings`);

API Run (cURL)

curl -X POST "https://api.apify.com/v2/acts/haketa~apartments-com-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cities": ["los-angeles-ca", "san-francisco-ca", "seattle-wa"],
"propertyType": "all",
"maxPrice": 4000,
"scrapeDetails": false,
"maxListings": 200
}'

How It Works

The actor builds a list of search URLs from your input, fetches each page with got-scraping (rotating Chromium-style headers + optional Apify Residential Proxy), parses the response with Cheerio, and merges two complementary data sources:

  1. HTML placard cards<article class="placard"> elements expose listing ID, street address, headline rent range, beds, deal/special badge, and detail-page URL via data-* attributes.
  2. JSON-LD CollectionPage graph — every search page embeds a <script type="application/ld+json"> block containing an @graph with an ItemList of ApartmentComplex / Product / Residence entities. These supply geocoordinates, telephone, aggregate rating, review count, and a clean address object that backfills missing fields.

The actor matches the two sources by lowercased property name, dedupes by propertyId, and pushes one normalized record per property to the dataset.

If scrapeDetails: true, each property's detail page is fetched too. The detail parser pulls additional JSON-LD nodes covering floor plans (with per-floor-plan rent + sqft + bedrooms), amenity tags, fee schedule, pet policy + restrictions, parking notes, lease term, deposit, photo gallery URLs, virtual tour link, walk/transit/bike scores, and management company.

Source endpoints

Source PatternExampleWhat's there
City landingapartments.com/{city-slug}/Default search — all property types
Price filterapartments.com/{city}/under-{price}/Adds price cap filter
Bed filterapartments.com/{city}/{n}-bedrooms/Adds bedroom minimum
Specialsapartments.com/{city}/rent-specials/Promotions-only feed
Type filterapartments.com/houses/{city}/ etc.Houses, condos, townhomes
Paginationapartments.com/{city}/{page}//2/, /3/, …
Detail pageapartments.com/{property-slug}-{city-slug}/{propertyId}/Full JSON-LD + amenity HTML

Engineering details

  • Realistic Chrome 124 fingerprintUser-Agent, sec-ch-ua, sec-fetch-*, Accept-Language headers all aligned
  • Exponential backoff on 403/429 — five attempts per URL, sleeping 5×attempt seconds
  • Optional Apify Residential Proxy — strongly recommended; default config pre-selects RESIDENTIAL group
  • Configurable requestDelay (default 1500 ms) + maxConcurrency (default 1) — tuned to stay under CoStar's per-IP rate-limit threshold
  • JSON-LD walker — recursive scanner up to 8 levels deep, supports nested @graph, ListItem, and mentions[] structures
  • Dedupe by propertyId with fallback to listingUrl then propertyName
  • Auto-stop on partial pages — when a page returns fewer than 5 listings, the actor treats it as the last page and moves to the next task

Input Parameters

{
"cities": ["austin-tx", "houston-tx", "denver-co"],
"propertyType": "apartments",
"maxPrice": 2200,
"minBeds": 1,
"rentSpecialsOnly": false,
"scrapeDetails": true,
"maxListings": 250,
"maxPages": 15,
"requestDelay": 1500,
"maxConcurrency": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Parameter reference

ParameterTypeDefaultDescription
searchUrlsarray<string>[]Direct Apartments.com search URLs. When set, cities and other filters are ignored. Use to target arbitrary slices (neighborhoods, ZIPs, custom filter combos).
citiesarray<string>["austin-tx"]City-state slugs matching Apartments.com URL format. Examples: new-york-ny, los-angeles-ca, chicago-il, miami-fl, seattle-wa, boston-ma, washington-dc, san-francisco-ca.
propertyTypestringallOne of all, apartments, houses, condos, townhomes. Only applied when cities is used.
maxPriceinteger0Maximum monthly rent. Appends /under-{price}/ to search URLs. 0 = no cap. Common values: 700, 1000, 1500, 2000, 2500, 3000.
minBedsinteger0Minimum bedrooms. 0 = studio or any. Max enum value 5.
rentSpecialsOnlybooleanfalseRestrict to listings with active promotions (free month, discounted rent, etc.).
scrapeDetailsbooleanfalseVisit each listing's detail page for JSON-LD enrichment (floor plans, amenities, fees, pet policy, photos, scores). Significantly increases runtime and cost.
maxListingsinteger100Hard cap on total listings saved. 0 = unlimited.
maxPagesinteger20Pages crawled per city/search URL. Each page yields ~20–25 listings.
requestDelayinteger1500Delay between requests in ms. CoStar rate-limits aggressively — keep at or above 1500. Max 15000.
maxConcurrencyinteger1Parallel requests. Keep at 12. Higher values trigger 403/429 quickly. Max 5.
proxyConfigurationobjectResidentialApify Proxy config. Residential proxies are strongly recommended — datacenter IPs are blocked within minutes.

Output Schema

Every dataset record uses a single flat JSON shape so warehouse loads, BI tools, and CRMs don't need per-record branching.

Identity & location

FieldTypeDescription
propertyIdstringApartments.com canonical listing ID (e.g., 40n18nj)
propertyNamestringProperty name (e.g., Edison Austin, The Hudson Yards, Pacific Plaza Apartments)
addressstringStreet address (e.g., 4711 E Riverside Dr)
citystringCity (e.g., Austin, New York, Los Angeles)
statestringTwo-letter state code (TX, NY, CA, …)
zipCodestring5-digit ZIP code
neighborhoodstringNeighborhood / submarket when detected
latitudenumberGeocoordinate (decimal degrees) — from JSON-LD
longitudenumberGeocoordinate (decimal degrees) — from JSON-LD
listingUrlstringCanonical Apartments.com property detail URL
searchCitystringThe city slug the listing was discovered under

Property metadata

FieldTypeDescription
propertyTypestringApartment, House, Condo, Townhome (when detected)
yearBuiltintegerConstruction year (detail page)
unitCountintegerTotal units in the property (detail page)
managementCompanystringProperty manager / owner name (detail page)

Pricing & unit specs

FieldTypeDescription
rentMinnumberLowest advertised monthly rent (base)
rentMaxnumberHighest advertised monthly rent (base)
totalMonthlyMinnumberLowest total monthly cost including mandatory fees
totalMonthlyMaxnumberHighest total monthly cost including mandatory fees
bedsMinintegerMinimum bedrooms (0 = studio)
bedsMaxintegerMaximum bedrooms
bathsMinnumberMinimum bathrooms
bathsMaxnumberMaximum bathrooms
sqftMinintegerMinimum unit square footage
sqftMaxintegerMaximum unit square footage
depositnumberRequired security deposit (USD)
leaseTermstringLease length(s) — e.g. 6, 9, 12 months
floorPlansarray<object>Per-floor-plan array (name, beds, baths, sqft, rent, availability) — detail page
feesobjectFree-text fee schedule (application, admin, amenity, etc.) — detail page

Marketing, lifestyle & media

FieldTypeDescription
availabilityStatusstringNow Available, Coming Soon, Waitlist, etc.
rentSpecialsbooleantrue if a promo banner is detected
specialTextstringFree-text promo description (e.g., 1 month free on 13-month lease)
petFriendlybooleantrue if dogs or cats are allowed
petPolicystringFree-text pet policy summary
petRestrictionsarray<string>Breed/weight restrictions when published
parkingInfostringParking type + cost (e.g., Garage, $150/mo)
amenitiesarray<string>Community + unit amenity tags (Pool, Fitness Center, In-Unit Laundry, EV Charging, …)
descriptionstringFull marketing description from detail page
photoCountintegerNumber of gallery images
photosarray<string>Photo URLs
virtualTourstringVirtual tour URL when offered
ratingnumberApartments.com aggregate rating (0–5)
reviewCountintegerNumber of resident reviews
walkScoreinteger0–100 walkability score
transitScoreinteger0–100 public transit score
bikeScoreinteger0–100 bikeability score
phoneNumberstringLeasing office phone (from JSON-LD)
scrapedAtstringISO-8601 timestamp

Example record — multifamily complex (Austin, TX)

{
"propertyId": "40n18nj",
"propertyName": "Edison Austin",
"address": "4711 E Riverside Dr",
"city": "Austin",
"state": "TX",
"zipCode": "78741",
"neighborhood": "East Riverside",
"latitude": 30.2389,
"longitude": -97.7128,
"propertyType": "Apartment",
"yearBuilt": 2021,
"unitCount": 312,
"rentMin": 1295,
"rentMax": 2840,
"totalMonthlyMin": 1395,
"totalMonthlyMax": 3010,
"bedsMin": 0,
"bedsMax": 3,
"bathsMin": 1,
"bathsMax": 2,
"sqftMin": 512,
"sqftMax": 1420,
"availabilityStatus": "Now Available",
"rentSpecials": true,
"specialText": "1 month free on 13-month lease",
"petFriendly": true,
"petPolicy": "Cats and dogs welcome. 2 pets max.",
"petRestrictions": ["No aggressive breeds", "50 lb weight limit"],
"phoneNumber": "(512) 555-0142",
"amenities": ["Pool", "Fitness Center", "In-Unit Laundry", "EV Charging", "Rooftop Lounge"],
"floorPlans": [
{ "name": "S1", "beds": 0, "baths": 1, "sqft": 512, "rent": 1295 },
{ "name": "A2", "beds": 1, "baths": 1, "sqft": 720, "rent": 1620 },
{ "name": "B1", "beds": 2, "baths": 2, "sqft": 1090, "rent": 2310 },
{ "name": "C1", "beds": 3, "baths": 2, "sqft": 1420, "rent": 2840 }
],
"fees": { "application": "$60", "admin": "$200", "amenity": "$25/mo" },
"parkingInfo": "Garage, $125/mo",
"leaseTerm": "6, 9, 12, 13 months",
"deposit": 500,
"photoCount": 42,
"photos": ["https://images1.apartments.com/.../photo01.jpg", "..."],
"virtualTour": "https://my.matterport.com/show/?m=abcdef",
"rating": 4.3,
"reviewCount": 178,
"walkScore": 64,
"transitScore": 51,
"bikeScore": 72,
"managementCompany": "Greystar",
"listingUrl": "https://www.apartments.com/edison-austin-austin-tx/40n18nj/",
"searchCity": "austin-tx",
"scrapedAt": "2026-05-16T14:32:18.000Z"
}

Example record — single-family rental (Houston, TX)

{
"propertyId": "p3kxr88",
"propertyName": "1842 Bissonnet St House",
"address": "1842 Bissonnet St",
"city": "Houston",
"state": "TX",
"zipCode": "77005",
"neighborhood": "West University",
"latitude": 29.7193,
"longitude": -95.4196,
"propertyType": "House",
"rentMin": 3450,
"rentMax": 3450,
"totalMonthlyMin": 3450,
"totalMonthlyMax": 3450,
"bedsMin": 3,
"bedsMax": 3,
"bathsMin": 2,
"bathsMax": 2,
"sqftMin": 1980,
"sqftMax": 1980,
"availabilityStatus": "Now Available",
"rentSpecials": false,
"petFriendly": true,
"petPolicy": "Small dogs only with deposit",
"phoneNumber": "(713) 555-0199",
"amenities": ["Backyard", "Garage", "Washer/Dryer"],
"listingUrl": "https://www.apartments.com/1842-bissonnet-st-houston-tx/p3kxr88/",
"searchCity": "houston-tx",
"scrapedAt": "2026-05-16T14:35:02.000Z"
}

Property Type & Status Reference

Property type taxonomy

propertyType valueMeaning
ApartmentMultifamily rental community (most common)
HouseSingle-family detached rental
CondoCondominium unit rented by owner
TownhomeAttached townhouse rental

Filter at the search level with the propertyType input parameter: all, apartments, houses, condos, townhomes.

Availability statuses

availabilityStatusMeaning
Now AvailableUnits available for immediate move-in
Coming SoonPre-leasing future units (often new construction)
WaitlistFully occupied; accepting waitlist applications
Limited AvailabilityFew units left
Contact for AvailabilityNo live availability published

Rent specials examples

When rentSpecials: true, the specialText field contains the promo verbatim. Common patterns:

  • 1 month free on 13-month lease
  • $500 off first month
  • Look & Lease — $0 admin fee
  • Reduced deposit for qualified applicants
  • Free covered parking for 12 months

Use Cases

Multifamily Investment Research & Acquisitions

Multifamily syndicators, REITs, and value-add investors run this actor to:

  • Pull a full rent roll snapshot for every comp within a 1–3 mile radius of a target acquisition
  • Compute price-per-sqft and price-per-bed comparables across submarkets to underwrite offer prices
  • Track lease-up velocity at new construction by re-running weekly and diffing availabilityStatus
  • Identify rent specials concentration as a soft-market signal (markets with high rentSpecials: true share are typically over-supplied)
  • Benchmark target asset rent vs. market by floor plan type using the floorPlans array
  • Source off-market opportunities by spotting properties listed by smaller management companies that may signal owner fatigue

Rent Comp & Pricing Analytics (Prop-Tech)

Pricing platforms, revenue-management vendors, and prop-tech startups use the data to:

  • Train rent-prediction models on millions of rows of rentMin/bedsMin/sqftMin/zipCode/amenities
  • Build rent index dashboards by city, ZIP, neighborhood, or property class
  • Power automated comp reports that property managers receive in their inbox each Monday
  • Monitor competitor pricing in real time — alert when a comp drops rent by >5%
  • Feed AI underwriting copilots with the freshest possible rent signal
  • Validate proprietary pricing recommendations against live market evidence

Brokerage, Leasing & Tour Generation

Apartment locators, leasing brokerages, and corporate housing providers leverage Apartments.com data to:

  • Build searchable internal inventories without licensing the CoStar Suite
  • Match client requirements (budget, beds, pet policy, neighborhood) against current listings instantly
  • Stage tour itineraries by pulling addresses, phone numbers, and availability in one query
  • Identify pet-friendly inventory for clients with dogs over 50 lbs using petRestrictions
  • Spot rent specials to lead with savings in client conversations
  • Track which buildings convert from "Now Available" to "Waitlist" as a soft demand signal

Relocation & Corporate Housing

Relocation management companies, HR mobility teams, and corporate-housing providers use the actor to:

  • Pre-screen rentals in destination metros before an employee accepts an offer
  • Build relocation packets with shortlisted comparables across price tiers
  • Quote cost-of-living adjustments with hard totalMonthlyMin data — not estimated medians
  • Compare neighborhoods using walkScore/transitScore/bikeScore
  • Match commute zones by geocoordinate to office addresses

Lender Underwriting, Insurance & Risk

Multifamily lenders (agency, CMBS, debt funds), property insurers, and tax appeal consultants use the dataset to:

  • Underwrite refi requests by validating sponsor's stated rent against scraped market rent
  • Stress-test pro formas with current vacancy + concession environment in the submarket
  • Identify mispriced insurance policies when scraped rent is materially above premium-baseline rent
  • Support property-tax appeals with hard comparable evidence
  • Monitor portfolio submarkets quarterly for early signs of rent compression
  • Feed credit committees with submarket performance briefs

Market Reports & Real-Estate Journalism

Brokerages, research desks, and real-estate journalists publish recurring market reports built on this data:

  • Quarterly metro rent index — median rentMin by city/ZIP, year-over-year
  • Concession watch — % of listings carrying rentSpecials by metro
  • New construction lease-up tracker — units coming online filtered by yearBuilt >= current_year - 2
  • Pet-friendliness index — share of inventory accepting cats/dogs by city
  • Amenity-of-the-month reports — which amenities (EV charging, coworking, dog wash) are spreading fastest

Location Intelligence & Site Selection

Retailers, QSR chains, fitness operators, and mobility companies use rental density as a population/demand proxy:

  • Identify high-density rental ZIPs for store/site selection (renter share correlates with foot traffic)
  • Spot emerging neighborhoods by tracking new-construction inventory growth
  • Estimate household formation by counting unique propertyId in lease-up status
  • Inform last-mile / delivery zone design with apartment-cluster maps
  • Layer Walk/Transit scores onto trade-area analyses

Academic & Public-Policy Research

Housing researchers, urban planners, and policy think tanks use the dataset to study:

  • Rent burden trends by metro and submarket
  • Geographic patterns of affordable inventory (filter maxPrice against AMI thresholds)
  • Concession patterns as market-softness indicators
  • Pet-policy and source-of-income discrimination signals across jurisdictions
  • Inventory mix shifts — multifamily vs. SFR vs. condo — over time

CRM Enrichment, Lead Routing & Direct Outreach

B2B vendors selling to multifamily operators (property-management software, IoT, smart locks, payment platforms) enrich their pipelines with:

  • Building-level firmographicsmanagementCompany, unitCount, yearBuilt, location
  • Targeted outbound lists filtered by property size or vintage
  • Account-mapping — group properties by managementCompany to estimate operator portfolio scale
  • Territory planning — geographic clustering by ZIP / metro
  • Trigger-based plays — new properties appearing for the first time = new construction = sales trigger

Sample Queries & Recipes

Recipe 1: Full Manhattan inventory under $4,000/mo, all property types

{
"cities": ["new-york-ny"],
"propertyType": "all",
"maxPrice": 4000,
"scrapeDetails": false,
"maxListings": 0,
"maxPages": 30
}

Recipe 2: 2-bedroom Austin apartments with full detail enrichment

{
"cities": ["austin-tx"],
"propertyType": "apartments",
"minBeds": 2,
"maxPrice": 2500,
"scrapeDetails": true,
"maxListings": 200
}

Recipe 3: Houses for rent across Houston, Dallas, and San Antonio

{
"cities": ["houston-tx", "dallas-tx", "san-antonio-tx"],
"propertyType": "houses",
"minBeds": 3,
"scrapeDetails": true,
"maxListings": 300
}

Recipe 4: Rent-specials-only sweep across top tech metros (concession monitor)

{
"cities": ["san-francisco-ca", "seattle-wa", "austin-tx", "denver-co"],
"rentSpecialsOnly": true,
"scrapeDetails": false,
"maxListings": 500,
"maxPages": 20
}

Recipe 5: Hyper-targeted neighborhood comp pull via search URLs

{
"searchUrls": [
"https://www.apartments.com/brooklyn-ny/williamsburg/",
"https://www.apartments.com/chicago-il/west-loop/",
"https://www.apartments.com/los-angeles-ca/silver-lake/"
],
"scrapeDetails": true,
"maxListings": 150
}

Recipe 6: Affordable inventory under $1,000 across Sun Belt secondary markets

{
"cities": ["el-paso-tx", "lubbock-tx", "tulsa-ok", "memphis-tn", "birmingham-al"],
"maxPrice": 1000,
"scrapeDetails": false,
"maxListings": 400
}

Recipe 7: Sample run — 20 listings to validate schema before a full scrape

{
"cities": ["miami-fl"],
"maxListings": 20,
"maxPages": 1,
"scrapeDetails": true
}

Integration Examples

Google Sheets

Configure an Apify schedule that runs this actor each morning. Add the "Save to Google Sheets" integration on the schedule's outputs tab — every run appends fresh rows. Use a pivot table for medianRent BY city, bedsMin.

Make.com / Zapier / n8n

Use the official Apify connector to trigger on run.succeeded. Common downstream flows:

  • New listing in target ZIP → Slack alert to broker team
  • rentSpecials flipped to true on a target comp → email digest
  • Property dropped below $X price threshold → trigger CRM task
  • Rent decreased vs. last week → push to internal pricing dashboard

Power BI / Tableau / Looker Studio

Connect Apify's REST dataset endpoint directly. Build dashboards covering:

  • Median rent heatmap by ZIP
  • Concession share by metro / submarket
  • New construction lease-up funnel (yearBuilt >= 2024 + availabilityStatus)
  • Floor-plan-level price-per-sqft comparisons
  • Pet-policy distribution by city

Postgres / Snowflake / BigQuery

Use the Apify webhook integration to POST run results to your warehouse ingestion endpoint after every scheduled run. Recommended schema: one table listings, one table floor_plans (one row per floor plan, joined on propertyId).

SELECT zip_code,
AVG(rent_min) AS avg_rent_min,
AVG(rent_max) AS avg_rent_max,
COUNT(*) AS active_listings,
SUM(CASE WHEN rent_specials THEN 1 ELSE 0 END)::float / COUNT(*) AS concession_share
FROM apartments_com_listings
WHERE state = 'TX' AND scraped_at >= CURRENT_DATE - INTERVAL '7 days'
GROUP BY zip_code
ORDER BY active_listings DESC;

Salesforce / HubSpot CRM Enrichment

Nightly Apify run → match managementCompany to your Account records → upsert unitCount, yearBuilt, latest median rent. Trigger Tasks when an Account's portfolio shows new lease-up properties (sales opportunity for property-management software).

Webhooks & Custom Pipelines

Subscribe a webhook to RUN.SUCCEEDED and post the dataset URL to your ETL worker. The actor's deterministic schema makes downstream parsing trivial.


Major US Rental Markets at a Glance

MetroCity SlugWhy it matters
New York, NYnew-york-nyLargest US rental market by unit count; highest median rent
Los Angeles, CAlos-angeles-ca2nd largest renter base; complex submarket geography
Chicago, ILchicago-ilTop-5 multifamily transaction market; deep neighborhood data
Houston, TXhouston-txEnergy-driven rental demand; broad price spectrum
Dallas-Fort Worth, TXdallas-tx, fort-worth-txOne of the hottest US lease-up markets
Austin, TXaustin-txTech-driven; high concession environment in 2024–2026 cycle
Miami, FLmiami-flMigration-driven rent growth; luxury condo rental supply
Seattle, WAseattle-waTech-heavy; high transit-score inventory
Boston, MAboston-maHigher-ed and biotech demand; September lease cycle
Washington, DCwashington-dcGovernment employment base; stable rent
San Francisco, CAsan-francisco-caMost volatile rents post-COVID; rich concession data
Denver, COdenver-coHigh new-construction pipeline; lease-up rich
Atlanta, GAatlanta-gaSun Belt magnet; large SFR rental share
Phoenix, AZphoenix-azBuild-to-rent capital of the US
San Diego, CAsan-diego-caMilitary + biotech demand; supply-constrained
Philadelphia, PAphiladelphia-paAffordable East Coast comp baseline
Minneapolis, MNminneapolis-mnStable rust-belt-adjacent market
Portland, ORportland-orWalk-score-rich; renter-friendly regulations
Nashville, TNnashville-tnHigh in-migration; lease-up heavy
Charlotte, NCcharlotte-ncBanking center; growing multifamily pipeline

The actor works on any Apartments.com city slug — those above are simply the deepest by listing count.


Cost & Performance

MetricValue
EngineHTTP fetch (got-scraping) + Cheerio + JSON-LD parsing
Runtime (city, 100 listings, no detail)~3–6 minutes
Runtime (city, 100 listings, with detail)~15–30 minutes
Data freshnessLive at run time
Auth requiredNone
Proxy requiredYes — Apify Residential strongly recommended
Concurrency12 (CoStar rate-limits aggressively)
Memory footprint256 MB minimum, 1 GB recommended for scrapeDetails: true
Pricing modelPay-per-event — predictable per-record cost
Cost per 100 listings (no detail)varies — typically a few cents
Cost per 100 listings (with detail)varies — significantly higher due to extra page fetches
Output formatsJSON, CSV, Excel (XLSX), HTML, XML, RSS, JSON Lines

  • Public data only. Every field returned by this actor comes from publicly accessible Apartments.com listing pages — the same content visible to any anonymous web visitor.
  • No login, no scraped credentials. The actor does not bypass authentication, cookies, or any access control.
  • No PII. Phone numbers are leasing office numbers published by property owners for marketing purposes — they are not personal numbers.
  • No financial data. No payment processing, application, or tenant data is touched.
  • Respect robots.txt and Apartments.com / CoStar Terms of Service. Consumers of the data are responsible for ensuring their use complies with applicable terms. The actor itself is a general-purpose research tool.
  • GDPR / CCPA. Listings represent business establishments, not individuals; standard PII protections do not apply. Apply standard data-handling practices if you enrich with personal data.
  • Rate considerations. Default settings (requestDelay: 1500, maxConcurrency: 1, residential proxy) are deliberately conservative to minimize impact on the source.

Important: This data must not be used for unlawful purposes including but not limited to source-of-income discrimination, fair-housing violations, scraping for resale at scale in violation of CoStar's terms, or to enable identity fraud. Consult legal counsel before resale or syndication.


Frequently Asked Questions

How fresh is the data?

Live at run time. Apartments.com is updated continuously by property managers, so every run pulls the current snapshot. Schedule the actor hourly, daily, or weekly to maintain a history.

How many listings will I get per run?

Depends entirely on inputs. A single city with maxPages: 20 typically returns 300–500 listings. Major metros (NYC, LA, Chicago) can yield 1,000+ if you raise maxPages and maxListings. Set maxListings: 0 for unlimited.

Do I need an Apartments.com login or API key?

No. The actor uses anonymous HTTP fetches against public search and detail pages. CoStar's commercial API is not required.

Why do I need residential proxies?

CoStar uses Akamai / DataDome anti-bot protection that fingerprints datacenter IP ranges within minutes. Apify Residential proxies present as real US consumer connections and are the most reliable option. Datacenter proxies will get blocked.

Will this work on the Apify Free plan?

Yes for small sample runs. Production-scale crawling (thousands of listings) typically requires a paid Apify plan because of residential proxy traffic costs.

How do I scrape only one neighborhood?

Use searchUrls and paste Apartments.com's neighborhood URL — e.g. https://www.apartments.com/brooklyn-ny/williamsburg/. The cities/propertyType/maxPrice inputs are ignored when searchUrls is set.

Can I scrape houses, condos, and townhomes — not just apartments?

Yes. Set propertyType to houses, condos, or townhomes. Apartments.com lists significant SFR and condo inventory in addition to multifamily.

What's the difference between rentMin and totalMonthlyMin?

rentMin is the headline base rent. totalMonthlyMin includes mandatory fees the property charges every month (amenity fee, trash fee, pest control, technology package, etc.). For underwriting and rent-comp accuracy, use totalMonthlyMin/totalMonthlyMax.

Does the actor return floor-plan-level pricing?

Yes when scrapeDetails: true. The floorPlans array contains one entry per published floor plan with name, beds, baths, sqft, and rent.

Are reviews and ratings included?

rating (0–5) and reviewCount are included when available. Individual review text is not extracted in the default schema to keep records flat — open a feature request if you need it.

Can I get historical rent data?

Not from a single run — Apartments.com only publishes current rents. To build history, schedule this actor daily and archive each dataset run; Apify stores all run datasets indefinitely on most plans.

Does the actor handle pagination automatically?

Yes. It walks /2/, /3/, … up to maxPages per task and auto-stops when it detects a partial / empty page.

Does it work for Canadian or international listings?

No — Apartments.com is US-only. For Canada use the Realtor.ca Scraper or Kijiji Scraper; for Australia use Domain.com.au Scraper; for Europe see the Immoweb and Marktplaats actors.

What if I get blocked (403 / 429) during a run?

The actor retries up to 5 times with exponential backoff on 403/429. If persistent: raise requestDelay to 3000+, drop maxConcurrency to 1, and ensure residential proxies are enabled. Avoid running multiple parallel Apartments.com jobs.

Can I schedule the actor?

Yes — Apify's built-in Scheduler supports any cron expression. Pair with the Save-to-Sheets or webhook integration for a fully automated pipeline.

Can I export to Excel, CSV, or directly to my warehouse?

Yes — JSON, CSV, Excel (XLSX), HTML, XML, RSS, and JSON Lines from the dataset view, plus REST API access for any custom pipeline.

How does this compare to the CoStar / Apartments.com commercial API?

CoStar's commercial product offers contracted data licensing, broader historical coverage, and SLA support — but starts in the high five figures annually. This actor gives you live public listing data at a pay-per-event price point, perfect for ad-hoc research, prototyping, and many production workloads.

Are agent or owner contact emails included?

No. Apartments.com does not publish leasing emails on listings — only the leasing-office phone number (when present) is returned.


If you need rental, real-estate, or marketplace data beyond Apartments.com, these sibling actors cover related sources:


Comparison vs. Alternatives

ApproachSetupFreshnessCost (1,000 listings)Schema normalizationAnti-bot handling
This actor< 5 minutesLivePennies–dollars (pay-per-event)Built-inBuilt-in (proxies + backoff)
Manual copy-pasteHours per cityLiveFree (labor cost)NoneN/A — manual
Custom Python + residential proxies2–4 weeks devLiveProxy + dev + infraDIY (constantly breaks)DIY
CoStar / Apartments.com commercial APIWeeks of contract negotiationLive$$$$ annual contractYesYes
Generic web-scraping SaaSDays to configureLive$$ monthly subscriptionLimitedLimited
Stale third-party rent reportsNoneMonthly–quarterlySubscriptionPre-aggregated onlyN/A

Why Pay-Per-Event Pricing?

  • You only pay when the actor actually runs and produces records
  • Cost scales linearly with how much data you consume — no monthly minimums
  • Transparent line-item billing inside the Apify console
  • Free to evaluate — run a 20-listing sample for pennies before committing
  • Far cheaper than a CoStar enterprise contract for most non-enterprise workloads
  • Predictable for finance — no surprise overage bills based on Compute Units

Changelog

VersionDateNotes
1.0.02026-05Initial public release — HTTP + JSON-LD scrape, city/URL inputs, optional detail-page enrichment, residential proxy support, pay-per-event pricing

Keywords

Apartments.com scraper · Apartments.com data extractor · Apartments.com API · US rental listings API · US apartment data scraper · CoStar rental data alternative · rent comp data · multifamily property data · multifamily rent comp scraper · apartments listings scraper · apartment rental data extractor · Apartments.com rent scraper · NYC apartment scraper · Los Angeles apartment scraper · Chicago apartment scraper · Houston apartment scraper · Miami apartment scraper · Seattle apartment scraper · Austin apartment scraper · Boston apartment scraper · Washington DC apartment scraper · San Francisco apartment scraper · Denver rent comp scraper · Atlanta rent data · Phoenix rental scraper · floor plan rent data · apartment amenities scraper · pet policy rental data · single family rental scraper · SFR rental listings API · condo rental scraper · townhome rental scraper · build-to-rent data · rent specials tracker · concession monitor scraper · multifamily investor research data · prop-tech rental data feed · relocation cost-of-living data · lender multifamily underwriting data · REIT rent comp dataset · brokerage rental inventory API · CoStar Group alternative · Apify real estate actor · US apartment listings JSON


Support

  • Bug reports: Use the Issues tab on the Apify Store actor page
  • Feature requests: Same place — please describe your use case and target metro
  • Direct contact: Through the Apify developer profile

If this actor saves you time or unlocks a project that wasn't possible before, a 5-star rating on the Apify Store helps other multifamily investors, prop-tech teams, brokerages, and researchers discover it. Thank you.