Apartment List Scraper - US Rentals, Rents & Floor Plans avatar

Apartment List Scraper - US Rentals, Rents & Floor Plans

Pricing

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

Go to Apify Store
Apartment List Scraper - US Rentals, Rents & Floor Plans

Apartment List Scraper - US Rentals, Rents & Floor Plans

Apartment List scraper for US rental listings: give it a city slug, City ST notation or filtered search URL and get one row per property with rent range, beds, baths, floor plans, amenities, coordinates and leasing phone. For renters, landlords and rental market research.

Pricing

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

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

18 days ago

Last modified

Share

Apartment List Scraper

The Apartment List Scraper turns rental listings from apartmentlist.com into 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 the Apartment List Scraper returns

One row per property in the dataset:

  • 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.

Every row also carries shared field names used across our real-estate scrapers (source, platform, listing_type, currency, country_code, query, postal_code, price, property_type, image_url, fetched_at), so datasets from this actor can be combined with the others without a field-name translation.

This is a real property-page row from a run on https://www.apartmentlist.com/tx/austin/sona--2 (2026-10-06):

{
"_type": "property",
"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": 883,
"rent_max": 1301,
"rent_by_beds": {"1": {"min": 883, "max": 934}, "2": {"min": 1089, "max": 1301}},
"beds": [1, 2],
"units_available": 9,
"available_from": "2026-09-18",
"year_built": 1985,
"total_units": 164,
"pets_allowed": true,
"pets": ["cats", "dogs"],
"rental_type": "apartment",
"website": "https://www.sonaapts.com/?utm_knock=al",
"amenities": ["In unit laundry", "Patio / balcony", "Granite counters", "Pet friendly", "Parking", "Recently renovated", "Dogs allowed", "Dog park", "Gym", "Pool"],
"phone": "(512) 866-8102",
"url": "https://www.apartmentlist.com/tx/austin/sona--2",
"updated_at": "2026-10-06T14:23:41.586Z",
"search": "https://www.apartmentlist.com/tx/austin/sona--2",
"position": 1,
"source": "apartmentlist-scraper",
"platform": "apartmentlist",
"listing_type": "for_rent",
"currency": "USD",
"country_code": "US"
}

Search rows carry the same core fields; result_count is what the search itself matched (Austin reports over two thousand properties on an unfiltered search), and address parts can be empty when the site serves a thin result card — paste the property URL to fill them.

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).

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.
bedsintegernoQuery filter sent to the site (?beds=N); 0 or empty means no filter.
bathsintegernoQuery filter sent to the site (?baths=N); 0 or empty means no filter.
maxRentintegernoQuery filter sent to the site (?price_max=N); 0 or empty means no filter.
maxItemsintegernoAcross all cities, default 50, up to 5,000.
maxPagesintegernoPer city, default 10, up to 100.
cursorstringnoResume from next_cursor; leave the rest of the input unchanged.

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

beds, baths and maxRent are query filters sent to the site itself, not client-side filters: a property that offers both one- and two-bedroom floor plans stays in the result when you ask for beds: 2. Read rent_by_beds for the two-bedroom price.

A run with every option looks like this:

{
"search": ["tx/austin"],
"listingUrls": ["https://www.apartmentlist.com/tx/austin/sona--2"],
"beds": 1,
"maxRent": 1500,
"maxItems": 40,
"maxPages": 3
}

Output

Each dataset row is a property. The dataset downloads as JSON, CSV, Excel or HTML, can be pulled through the Apify API, and can be pushed to Google Sheets or a warehouse with an integration. result_count is the total the search matched, which is far larger than any single run returns — use the filters to cut a city down to the slice you want before you raise maxItems.

Soft failures behave like the source being empty: a city with no listings, or a page the site refused, still produces a SUCCEEDED run with an empty dataset and an errors entry that names the URL and the reason.

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.

Apartment List Scraper compared with other options

OptionWhat you getFits when
This actorSearch results and property pages as rows, with rent range per bedroom, floor plans, amenities and leasing phoneYou want renter-facing listing data for a US city or a set of buildings on apartmentlist.com
Apartments.com Scraper (s-r)Search results and property pages from apartments.com, with rent text, rent range, amenities and leasing phoneYour market lives on apartments.com rather than Apartment List
Zillow Scraper / Redfin Scraper (s-r)For-sale and sold homes, with price, beds, baths, sqft and MLS fieldsYou are analyzing the sale market, not the rental multi-family market
The official Apartment List research reportsNational and metro rent estimates as published tablesYou want a published benchmark, not row-level listings you can filter
Copying by hand or a browser extensionOne page at a timeYou need a handful of listings once
Your own scraperFull controlYou have time to keep up with page changes

The official Apartment List research feed publishes rent estimates; it does not hand out the market's individual listings with floor plans and leasing contacts. This actor reads the public search and property pages instead.

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, and a search that matches nothing still succeeds with an empty dataset. Users without a paid Apify plan receive at most ten rows; the listing event applies only to delivered rows. The published Apify pricing panel remains the reference for current charges.

As an example, 1,000 listings cost about $0.30 plus the run fee. A fifty-row default run costs about $0.017.

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 still exits 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.
  • Large searches resume with a cursor: when the request budget is reached the actor returns next_cursor, and resending the same input with that cursor continues where it stopped.

Apartment List Scraper 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.

Is there an official Apartment List API for listing data?

Apartment List publishes national and metro rent estimates as research reports. It does not offer a public listing API for individual properties with floor plans and leasing contacts. This actor reads the public search and property pages instead.

Can I export Apartment List listings to Excel or CSV?

Yes. Every run stores its rows in a dataset that downloads as CSV, Excel, JSON or HTML, and can be pulled through the API or sent to Google Sheets with an integration.