Apartments Scraper (Cheap) avatar

Apartments Scraper (Cheap)

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Apartments Scraper (Cheap)

Apartments Scraper (Cheap)

Pulls apartment listings from Apartments.com. Point it at a city or neighborhood search URL and it returns prices, floor plans, amenities, and contact details as a structured dataset.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Data API

Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Apartments.com Rental Scraper

Apartments.com Rental Scraper

Pulling rental data off Apartments.com by hand is slow work: every city has hundreds of result pages, the rent only shows up on the card, and the floor plans and amenities sit one click deeper. This scraper does the clicking for you. Point it at a city page, a filtered search, or a single property, and it returns each rental as one clean row with the name, monthly rent, address, phone, amenities, and photos. Pagination is handled on its own, so a single URL can turn into a full city dataset.

What you get

Every rental comes back as one row with a steady set of columns. When a value is missing it returns as null rather than disappearing, so the data stays rectangular for a spreadsheet or database load. The fields fall into a few groups:

  • Property and locationpropertyName, fullAddress, streetName, cityName, stateCode, postalCode, plus map lat / lng
  • Rent and unitsrentMin, rentMax, bedroomPricing, and floorPlans (beds, baths, square footage, rent range, availability)
  • Amenities and flagsamenityList plus quick booleans petsAllowed, parkingAvailable, poolAvailable, gymAvailable
  • Contact and mediacontactPhone, propertyWebsite, coverPhoto, photoLinks
  • ReputationstarRating, reviewsTotal, and the full listingDescription

Quick start

  1. Open the actor and go to the input form.
  2. Paste one or more Apartments.com URLs into Apartments.com URLs.
  3. Flip on Open each rental page if you want coordinates, floor plans, full amenities, and all photos.
  4. Set a Results limit to cap the run, then press Start and export as JSON, CSV, Excel, or XML.

How it works

The scraper accepts:

  • City pages: https://www.apartments.com/austin-tx/
  • Filtered searches: https://www.apartments.com/seattle-wa/2-bedrooms/
  • Single property pages: https://www.apartments.com/the-name-city-st/xyz789/

Use cases

  • Rent tracking — watch how asking rents move month to month across a city or neighborhood and re-run on a schedule
  • Real estate analysis — compare price-per-sqft, bedroom mix, and amenity profiles across several markets before site visits
  • Lead lists — gather leasing phone numbers and property websites for a target city, then export to CSV for outreach
  • Market research — break down average rent by bedroom count, pet policy, or ZIP code and join it to census data
  • Competitive watch — follow a rival community's pricing and the floor plans it still has available over time

Input

FieldTypeRequiredDescription
listingUrlsarray of stringsYesApartments.com search or property URLs to scrape. City pages, filtered searches, and single property pages all work.
fetchDetailPagesbooleanNoOpen each property page for coordinates, floor plan sqft, full amenities, all photos, rating, and description. Costs one extra credit per rental. Default false.
withFloorPlansbooleanNoWith detail pages on, attach per-unit floor plan rows. Default false.
withAmenitiesbooleanNoWith detail pages on, attach the full amenity list per rental. Default false.
resultsLimitintegerNoStop after this many rentals (up to 1000). Default 40.
timeoutSecondsintegerNoSeconds to wait on a single request before giving up. Default 75.

Example input

{
"listingUrls": [
"https://www.apartments.com/austin-tx/",
"https://www.apartments.com/seattle-wa/2-bedrooms/"
],
"fetchDetailPages": true,
"withFloorPlans": true,
"withAmenities": true,
"resultsLimit": 40,
"timeoutSeconds": 75
}

Output

Each rental becomes one row, and every field is always present — values the page does not expose come back as null so your dataset stays rectangular.

Example output

{
"listingUrl": "https://www.apartments.com/the-quarry-austin-tx/xyz789/",
"listingId": "xyz789",
"propertyName": "The Quarry",
"fullAddress": "2400 E Riverside Dr, Austin, TX 78741",
"streetName": "2400 E Riverside Dr",
"cityName": "Austin",
"stateCode": "TX",
"postalCode": "78741",
"lat": 30.23456,
"lng": -97.72103,
"contactPhone": "(512) 555-0142",
"propertyWebsite": "https://www.thequarryaustin.com/",
"listingDescription": "Modern one and two bedroom apartments minutes from downtown Austin...",
"starRating": 4.2,
"reviewsTotal": 58,
"rentMin": 1395,
"rentMax": 2480,
"bedroomPricing": [
{ "beds": "Studio", "priceFrom": "$1,395+", "priceFromInt": 1395 },
{ "beds": "1 Bed", "priceFrom": "$1,650+", "priceFromInt": 1650 },
{ "beds": "2 Beds", "priceFrom": "$2,100+", "priceFromInt": 2100 }
],
"floorPlans": [
{
"name": "Studio",
"beds": "Studio",
"baths": "1",
"sqftMin": 480,
"sqftMax": 520,
"priceMin": 1395,
"priceMax": 1480,
"available": true
},
{
"name": "2 Bedroom",
"beds": "2",
"baths": "2",
"sqftMin": 980,
"sqftMax": 1100,
"priceMin": 2100,
"priceMax": 2480,
"available": true
}
],
"amenityList": [
"Pool",
"Fitness Center",
"In Unit Washer & Dryer",
"Covered Parking",
"Pet Friendly"
],
"coverPhoto": "https://images1.apartments.com/i2/abcd1234/primary-photo.jpg",
"photoLinks": [
"https://images1.apartments.com/i2/abcd1234/primary-photo.jpg",
"https://images1.apartments.com/i2/efgh5678/building-photo.jpg"
],
"petsAllowed": true,
"parkingAvailable": true,
"poolAvailable": true,
"gymAvailable": true,
"collectedAt": "2026-06-29T12:00:00.000000+00:00",
"errorMessage": null
}

Output fields

FieldTypeDescription
listingUrlstringDirect link to the Apartments.com rental page
listingIdstringThe identifier Apartments.com assigns to the rental
propertyNamestringName of the apartment community or building
fullAddressstringComplete address line shown on the rental
streetNamestringStreet part of the property address
cityNamestringCity the property sits in
stateCodestringTwo-letter US state abbreviation
postalCodestringPostal code for the property
latnumberMap latitude for the property
lngnumberMap longitude for the property
contactPhonestringLeasing contact phone for the property
propertyWebsitestringOutside website link for the property when one is published
listingDescriptionstringFull write-up text taken from the rental page
starRatingnumberAverage renter score from 1 to 5 stars
reviewsTotalintegerHow many renter reviews the property has
rentMinintegerCheapest monthly rent across the available units
rentMaxintegerPriciest monthly rent across the available units
bedroomPricingarrayStarting rent for each bedroom type from the search card
floorPlansarrayPer-unit floor plan rows, populated when detail pages are opened
coverPhotostringLead property photo URL grabbed from the search card
amenityListarrayAmenity labels found on the rental, such as pool, gym, or parking
photoLinksarrayCollection of property photo URLs
petsAllowedbooleanTrue when the rental notes that pets are welcome
parkingAvailablebooleanTrue when parking shows up in the amenities
poolAvailablebooleanTrue when a pool shows up in the amenities
gymAvailablebooleanTrue when a fitness center or gym shows up in the amenities
collectedAtstringISO 8601 timestamp for when the row was captured
errorMessagestringWhy a rental failed; null on success

Tips for best results

  • Try a few URLs first. Run 10 rentals before committing to a whole city. URL-format and limit issues show up in the first rows.
  • Keep detail pages off for a quick pass. Search-card data already gives you name, rent, address, phone, and amenity tags. Turn on Open each rental page only when you need coordinates, floor plans, or all photos, since it costs an extra credit per rental.
  • Use resultsLimit to control spend. Big cities run to hundreds of result pages at roughly 40 rentals each, so set a cap while you tune your pipeline.
  • Expect some null rents. When a property only shows a contact form, rentMin and rentMax come back null. That is a data limit, not an error.
  • Raise timeoutSeconds if you see timeout errors on large or slow pages.

How can I use Apartments.com rental data?

How can I use the Apartments.com Rental Scraper to build a rent dataset for a city? Paste a city page such as https://www.apartments.com/austin-tx/ and the scraper walks every result page, returning each rental's name, monthly rent range, address, and amenities as one row. Group by ZIP code or bedroom count to chart asking rents and supply, then re-run on a schedule to track how the market moves.

How can I scrape Apartments.com floor plans and amenities for a property? Drop a single property URL into listingUrls and turn on Open each rental page with withFloorPlans and withAmenities. You get per-unit beds, baths, square footage, and rent ranges in floorPlans, the complete amenityList, plus coordinates and every photo — the full picture for one community in a single row.

How can I pull leasing contact details from Apartments.com for outreach? Run a city or filtered search and the scraper returns contactPhone and propertyWebsite for each rental alongside the property name and address. Export to CSV, filter for the rentals that fit your criteria, and you have a ready outreach list without copying numbers off pages by hand.

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Support

Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.