Apartment List Scraper - US Rentals by City
Pricing
from $2.00 / 1,000 per-run start fees
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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,neighborhoodlat,lngrent_min,rent_max, andrent_by_beds(the range per bedroom count)beds(every count on offer,0is a studio),baths,sqft_min,sqft_maxfloorplans: per plan the name, beds, baths, square feet, rent, units available and earliest move-in dateunits_available,available_from,has_rent_specialamenities,phone,image,url,updated_atsearch,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
| Field | Type | Required | Notes |
|---|---|---|---|
search | list | no | Cities as tx/austin or Austin, TX, or full search URLs. |
listingUrls | list | no | Property pages, one per line. |
beds | integer | no | Keep properties with a floor plan of this many bedrooms. |
baths | integer | no | Keep properties with a floor plan of at least this many bathrooms. |
maxRent | integer | no | Keep properties whose lowest rent is at or under this, USD per month. |
maxItems | integer | no | Across all cities, default 50, up to 5,000. |
maxPages | integer | no | Per 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.
bedsmatches properties that have a plan with that count, so abeds: 2row can also list one- and three-bedroom plans. Readrent_by_bedsfor 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.
maxItemsis 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.refusedsays how many attempts were made. Rerun a little later. - Property pages are fetched one at a time, so a long
listingUrlslist 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.