Apartments.com Scraper — Rentals, Property Managers & Phones avatar

Apartments.com Scraper — Rentals, Property Managers & Phones

Pricing

from $3.50 / 1,000 listing scrapeds

Go to Apify Store
Apartments.com Scraper — Rentals, Property Managers & Phones

Apartments.com Scraper — Rentals, Property Managers & Phones

Apartments.com scraper for US rentals — rent by bed count, concessions, availability, leasing phone and the property management company. Enrich for 66 fields: amenities, floor plans, units, schools, transit, walk scores, fees, photos. Managers mode returns a company directory.

Pricing

from $3.50 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Jura Moshkov

Jura Moshkov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Apartments.com scraper for US rental data. Pull rental listings by ZIP code, city, or map radius with rent by bed count, fees, current concessions, availability, the leasing phone, and the property management company behind each building. Turn on enrichment and every building comes back as a 66-field record — amenities, floor plans, individually available units, schools, transit, walk scores, pet and parking policies, office hours, and the full photo gallery. Switch to managers mode and the same run returns a deduplicated company directory instead of a listing feed.

What This Apartments.com Scraper Does

  • Scrape Apartments.com rental listings by ZIP code, City, ST, or a latitude/longitude radius.
  • Return rent bands per bed count, unit sizes, availability counts, and first-available dates.
  • Surface concessions: the percentage a building is currently discounting, so you can see who is soft on price.
  • Capture the leasing phone number for every building.
  • Capture the property management company, with a stable company id you can group on.
  • Enrich each building with the complete record: amenities, floor plans with rents, the actual available units and their apartment numbers, assigned schools with ratings, transit distances, five walk/transit/bike/car/quiet scores, itemised one-time costs and recurring fees, pet and parking policies, office hours, up to 77 photos, year built, unit count, storeys, and lease-term range.
  • Roll everything up into a property manager directory: portfolio size, cities, phones, rent range, and how many of its buildings are discounting.
  • Filter by beds, baths, rent, size, and pet policy before you pay for a single row.

Full Building Records — What Enrichment Adds

Set enrich to true and each row grows from 30 fields to 66. This is one extra upstream request per building, billed as LISTING_ENRICHED rather than LISTING_SCRAPED, so you pay for depth only where you asked for it.

BlockWhat comes back
amenitiesFlat list of every amenity across community and interior categories — typically 60+ per building
floorPlansEvery plan with beds, baths, area, rent range, and a floor-plan image
availableUnitsThe actual vacant units: apartment number, plan, beds, baths, area, rent
schoolsAssigned and nearby schools with 1–10 rating, grades, enrolment, district
transitAirports, rail and bus stops with distance, drive time, walk time
walkScorequietScoreFive separate scores: walk, transit, bike, car, and quiet
oneTimeCosts / recurringFeesItemised and deduplicated — application fees, deposits, admin fees, monthly charges
petPoliciesPer pet type: deposit, monthly rent, fee, limit, restrictions
parkingPolicies, officeHoursParking rules; leasing-office hours per day
photosFull gallery with type and caption
yearBuilt, unitCount, storyCount, leaseTerms, submarket, descriptionBuilding fundamentals
listingUrl, propertyWebsiteUrlCanonical Apartments.com page and the property's own site

Property Manager Directory — The Mode Worth Running First

Every Apartments.com scraper returns listings. This one also answers the question a listing feed cannot: who owns the leasing decisions in this market?

Set mode to managers and the Actor reads the buildings for your locations, groups them by management company, and returns one row per company:

FieldWhat it tells you
propertyManagerCompany name, e.g. Greystar
propertyCountHow many buildings it runs in your search area
cities / statesIts geographic footprint within the search
phonesEvery leasing number tied to it
minRent / maxRentThe rent range it operates across
totalUnitsAvailableLive vacancy across the portfolio
propertiesDiscountingHow many of its buildings are running concessions
avgRatingAverage resident rating across its buildings

One downtown Austin ZIP returns 17 companies, the largest running 5 buildings and 236 available units. Rows are sorted biggest portfolio first, which is the order a prospecting list should be worked in.

This is the difference between "here are 500 apartments" and "here are the 17 companies that control them, with phone numbers."

Use Cases

  • B2B prospecting — property management companies are buyers of software, insurance, maintenance, cleaning, and renovation services. This is a sourced, deduplicated list of them with phones.
  • Rent comparables — rent bands by bed count per building, timestamped, for a ZIP or a whole city.
  • Concession trackingtopDealPct flags who is discounting. Run it weekly and you have a market-softness time series nobody publishes.
  • Vacancy monitoringtotalUnitsAvailable and availabilityText per building.
  • Rental site and app content — listings with photos, tours, ratings, and geocoordinates.
  • Market entry research — which operators dominate a metro, and at what price points.

Input

Pick a mode:

  • locations — one row per rental building for each ZIP or City, ST you pass.
  • radius — the same, around a map point.
  • managers — one row per property management company, rolled up from the buildings it operates.

Search by ZIP code:

{
"mode": "locations",
"locations": ["78701", "78704"],
"maxResults": 100,
"minBeds": 1,
"maxRent": 2500
}

Property manager directory for a city:

{
"mode": "managers",
"locations": ["Austin, TX"],
"maxResults": 300
}

Only buildings currently discounting rent:

{
"mode": "locations",
"locations": ["78701"],
"onlyDiscounted": true,
"maxResults": 50
}

Full records for every building:

{
"mode": "locations",
"locations": ["78701"],
"enrich": true,
"maxResults": 50
}

Map radius:

{
"mode": "radius",
"geoPoint": "30.2672, -97.7431",
"radiusMiles": 5,
"maxResults": 100
}

Filters available on every mode: minBeds, maxBeds, minBaths, minRent, maxRent, minSqft, maxSqft, pets (none, dog, cat, dog_and_cat), and sort (default, lowest_rent, highest_rent, newest, recently_updated, has_video). Filters are applied upstream, so a narrow search costs fewer rows.

Output

Listing rows (locations and radius modes):

  • listingKey, name
  • streetAddress, city, state, zipcode, country
  • latitude, longitude
  • phone — leasing office number
  • propertyManager, propertyManagerId
  • minRent, maxRent, minBeds, maxBeds
  • minFees, maxFees
  • topDealPct — best current concession, null when nothing is discounted
  • totalUnitsAvailable, hasAvailabilities, availabilityText
  • unitSummaries[] — per bed count: beds, minBaths, maxBaths, minRent, maxRent, minSize, maxSize, availabilityCount, firstAvailable, topDealPct
  • rating, imageUrl, photoCount, tourUrl
  • searchLocation, resolvedLocation, scrapedAt

Example listing row:

{
"listingKey": "wkkr1zj",
"name": "Placemakr Downtown Austin",
"streetAddress": "710 E 3rd St, Austin, TX 78701",
"city": "Austin",
"state": "TX",
"zipcode": "78701",
"phone": "(737) 204-4980",
"propertyManager": "Placemakr",
"minRent": 1517,
"maxRent": 1924,
"minBeds": 0,
"maxBeds": 2,
"topDealPct": null,
"totalUnitsAvailable": 10,
"rating": 5,
"resolvedLocation": "78701, Austin, TX"
}

Manager rows (managers mode) carry propertyManager, propertyManagerId, propertyCount, cities, states, phones, minRent, maxRent, avgRating, totalUnitsAvailable, propertiesDiscounting, sampleProperties, searchLocation, scrapedAt.

Pricing

Pay per result. A tiny apify-actor-start charge ($0.00005) covers the first five seconds of run time, which is most of a typical run — then three result events, because the three outputs are not the same product:

  • LISTING_SCRAPED — one rental building, 30 fields.
  • LISTING_ENRICHED — one rental building, 66 fields, when enrich is on.
  • MANAGER_PROFILED — one management company, aggregated from every building it runs in your search.

Every event is discounted by Apify plan, down to 40% off on the top plans. A managers run bills only per company, never per building it read on the way. If an enrichment call fails, the building is still delivered and billed at the base rate, never the enriched one. Empty results and error rows are never charged.

Scheduling and Integrations

Rent and concession data is only interesting as a time series — a single snapshot cannot tell you whether a market is softening.

  • Use Apify Schedules to run weekly. Every row carries scrapedAt, so history is queryable with no extra bookkeeping.
  • Export to CSV, JSON, or Excel, or push to Google Sheets, S3, or a webhook through Apify integrations.
  • Call the Actor from the Apify API to feed an existing CRM or rent-comp dashboard.

FAQ

Does this Apartments.com scraper return contact details?

Yes — a leasing phone number for every building, plus the property management company name. Rental listings do not expose agent email addresses the way for-sale listings do, so no email field is promised here.

How do I get a list of property management companies?

Set mode to managers and pass one or more ZIP codes or cities. Each row is one company with its portfolio size, footprint, phones, and rent range, sorted biggest first.

Can I find apartments that are offering a discount?

Yes. topDealPct carries the current concession percentage, and onlyDiscounted: true filters the run down to buildings that have one.

How many listings does one run return?

As many as maxResults. The upstream provider pages 50 buildings at a time and the Actor pages through automatically; a single downtown ZIP typically has several hundred buildings.

Do I need an API key?

No. Run it as-is. If you have your own provider subscription you can pass rapidApiKey to use it instead.

Can I search by map area instead of ZIP?

Yes. Use radius mode with geoPoint — paste coordinates in the 30.2672, -97.7431 form Google Maps copies — and set radiusMiles.

Are duplicate buildings billed twice?

No. Listings are deduplicated by listingKey across pages and overlapping radius searches before anything is charged.

Does it cover rentals outside the US?

No — Apartments.com is US inventory. For Canadian real estate see the Realtor.ca scraper; for US for-sale listings see the Realtor.com and Redfin scrapers.

Is there a per-unit floor plan feed?

Yes, with enrich on: floorPlans lists every plan with rent and a floor-plan image, and availableUnits lists the actual vacant apartments with their unit numbers. Without enrichment you get unitSummaries, one entry per bed count.

What does enrichment cost me?

One extra upstream request per building, billed as LISTING_ENRICHED. Leave it off for a cheap sweep of a market, turn it on for the buildings you actually care about — a two-pass workflow (sweep wide, then enrich a filtered shortlist) is the cheapest way to work a large area.

Do I get walk scores?

Yes, with enrichment — five of them: walk, transit, bike, car, and quiet. Quiet legitimately comes back as 0 for the noisiest locations; that is a real score, not a missing value.

Notes

  • locations accepts ZIP codes and City, ST. The provider resolves the value server-side and echoes the match back in resolvedLocation, so you can confirm what was actually searched.
  • amenities is validated upstream: an unknown slug fails the whole request. Leave it empty unless you know the exact value.
  • topDealPct is null rather than 0 when a building has no concession — absence and a zero-percent deal are different facts.
  • Base rows carry listingKey; the canonical listingUrl arrives with enrichment, straight from the source rather than constructed.
  • This Actor returns public listing data. It does not estimate rents or provide tenant information.