Apartment List Scraper - US Rentals by City avatar

Apartment List Scraper - US Rentals by City

Pricing

from $2.00 / 1,000 per-run start fees

Go to Apify Store
Apartment List Scraper - US Rentals by City

Apartment List Scraper - US Rentals by City

Scrape rental listings from apartmentlist.com. Rent range, beds, baths, floor plans, square footage, amenities, availability, coordinates and phone for any US city, filtered search or property URL.

Pricing

from $2.00 / 1,000 per-run start fees

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Apartment List Scraper

Rental listings from apartmentlist.com as a clean table. Give it a US city and get back every property on the market there: the name, the full address with ZIP code, the coordinates, the rent range, the bed and bath counts, every floor plan with its square footage and price, the amenities, how many units are open and from when, and the leasing office phone.

It takes a city in either form, tx/austin or Austin, TX, and walks the result pages for you. It also takes a full apartmentlist.com search URL, so if you have already narrowed a search in the browser to two bedrooms under $1,500, paste that URL and the filters in it are respected. Or set the filters here: beds, baths and maxRent are passed straight to the site's own search.

Property pages work too. Paste property URLs into listingUrls (or into the search box; the scraper tells them apart) and each comes back as a richer row with the description, year built, total unit count, pet policy and the property's own website.

What you get per property

  • name, address, street, city, state, zip, neighborhood
  • lat, lng
  • rent_min, rent_max, and rent_by_beds (the range per bedroom count)
  • beds (every count on offer, 0 is a studio), baths, sqft_min, sqft_max
  • floorplans: per plan the name, beds, baths, square feet, rent, units available and earliest move-in date
  • units_available, available_from, has_rent_special
  • amenities, phone, image, url, updated_at
  • search, search_page, result_count, position

Property-page rows add description, year_built, total_units, pets_allowed, pets, rental_type and website. The _type column says listing or property so a mixed run stays sortable.

result_count is the total the search itself matched, which is far larger than any single run returns. Austin reports over two thousand properties on an unfiltered search and 355 with two bedrooms under $1,500, so use the filters to cut a city down to the slice you want before you raise maxItems.

Why scrape Apartment List

Apartment List covers the large multi-family market in the United States: the managed communities with a leasing office, published floor plans and unit-level availability. That is the data a rent analysis needs and the data an individual-landlord site does not have. Every row here carries the rent per floor plan rather than one headline number, so the same property can be compared on a one-bedroom against a one-bedroom across a whole city.

The listings refresh often. updated_at is stamped on every row, most of them within the last day, and available_from is the earliest move-in date the property advertises, so a weekly run tracks concessions, price moves and vacancy without any guesswork.

Input

FieldTypeRequiredNotes
searchlistnoCities as tx/austin or Austin, TX, or full search URLs.
listingUrlslistnoProperty pages, one per line.
bedsintegernoKeep properties with a floor plan of this many bedrooms.
bathsintegernoKeep properties with a floor plan of at least this many bathrooms.
maxRentintegernoKeep properties whose lowest rent is at or under this, USD per month.
maxItemsintegernoAcross all cities, default 50, up to 5,000.
maxPagesintegernoPer city, default 10, up to 100.

Give at least one of search or listingUrls. A run with neither fails with bad_input.

Output

One row per property in the dataset:

{
"_type": "listing",
"listing_id": "p43719",
"name": "SoNa",
"address": "7900 San Felipe blvd, Austin, TX 78729",
"street": "7900 San Felipe blvd",
"city": "Austin",
"state": "TX",
"zip": "78729",
"lat": 30.438271,
"lng": -97.767799,
"rent_min": 875,
"rent_max": 1204,
"rent_by_beds": {"1": {"min": 875, "max": 953}, "2": {"min": 879, "max": 1204}},
"beds": [1, 2],
"baths": [1, 2],
"sqft_min": 550,
"sqft_max": 917,
"units_available": 11,
"available_from": "2026-10-24",
"amenities": ["Dogs allowed", "Pet friendly", "Gym", "Pool", "In unit laundry"],
"floorplans": [
{"name": "A1", "beds": 1, "baths": 1, "sqft": 550, "rent": 875,
"units_available": 3, "available_from": "2026-08-01"}
],
"url": "https://www.apartmentlist.com/tx/austin/sona--2",
"image": "https://cdn.apartmentlist.com/image/upload/f_auto,q_auto,t_web-base/b0965f33a0c81c7983fc759b5bda437d.jpg",
"phone": "(512) 866-8102",
"updated_at": "2026-09-19T14:06:54.402Z",
"search": "tx/austin",
"search_page": 1,
"result_count": 2234,
"position": 1
}

The key-value store holds summary (cities walked, rows returned, how many requests were made and how many were refused) and errors (pages that could not be read, with a code and a short message).

Use cases

Rent benchmarking. Pull a city with beds set and compare rent_by_beds across properties, or go one level down and compare floorplans on square footage. Because every property carries its coordinates, the rows drop straight onto a map or into a distance-to-office calculation.

Vacancy and concession tracking. Run the same cities weekly. units_available, available_from and has_rent_special move before the headline rent does, and updated_at tells you which rows actually changed.

Lead lists for property services. Every row carries the property name, the address and, on nearly every one, the leasing office phone. Property-page rows add the management company's own website.

Relocation and market research. A handful of cities with maxRent set gives a like-for-like picture of what a budget buys in each, with the amenities listed so the comparison is not on price alone.

Pricing

Pay per event: one run_start event per run and one listing event per property returned. Nothing is charged for pages that could not be read.

Limits and gotchas

  • US cities only; that is the site's coverage.
  • beds matches properties that have a plan with that count, so a beds: 2 row can also list one- and three-bedroom plans. Read rent_by_beds for the two-bedroom price.
  • Page one of a search holds twenty properties, later pages sixteen. A property featured at the top of page one is not returned twice.
  • maxItems is applied across all cities in the run, in the order given.
  • Free-plan Apify accounts are capped at ten rows per run.
  • If the site refuses every request, the run fails with a clear status message and summary.refused says how many attempts were made. Rerun a little later.
  • Property pages are fetched one at a time, so a long listingUrls list is slower than the same properties reached through a search.

FAQ

Can I filter by neighbourhood? Not directly. Filter by city and then by the neighborhood column, which the site fills in for the larger metros.

Does it return individual units? Floor plans, with the count of units available per plan and the earliest date. Unit numbers are not returned.

Why is rent_max sometimes far above rent_min? Because the property spans several floor plans. rent_by_beds and floorplans break it down.

Why does result_count say 2,234 but I got 50? result_count is what the search matched; maxItems is what you asked for. Raise maxItems and maxPages to get more.

Can I search by ZIP code? Not yet. Search the city and filter the zip column, or paste a search URL from the site that already has the ZIP applied.