Apartments.com Scraper - Rental Listings, Rents & Contacts
Pricing
from $2.00 / 1,000 per-run start fees
Apartments.com Scraper - Rental Listings, Rents & Contacts
Apartments.com scraper for US rental listings: give it a city or a filtered search URL and get one row per property with name, address, beds, starting rent, amenities, photo count and leasing phone, plus optional coordinates and rent ranges. For renters, landlords and rental market research.
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
2
Monthly active users
20 days ago
Last modified
Categories
Share
Apartments.com Scraper
This Apartments.com scraper turns rental listings from apartments.com into a clean table. Give it a city or a filtered search URL and get back matching properties up to the requested limits: the building name, the full address, the bed range, the starting rent, the amenities, how many photos the listing has, and the leasing office's phone number.
It handles two ways of asking. Locations takes apartments.com's own slug,
like new-york-ny or austin-tx, and walks the result pages for you. It also
takes a full search URL, so if you have already narrowed a search in the
browser to one bedroom under $2,000 with parking, paste that URL and the actor
respects every filter in it. Specific properties takes property page links
instead, which is the mode for re-checking the same buildings on a schedule.
What the Apartments.com Scraper is used for
- Rental market research. Pull every listing in a city or zip-code search and compare starting rents by bed count, neighbourhood or amenity.
- Landlords and property managers. Watch the competing buildings around your own and see who advertises a move-in special, how they price a one-bedroom and what amenities they lead with.
- Relocation and renters. Turn a long search into a spreadsheet you can sort by rent, filter on pets allowed or in-unit laundry, and share.
- Lead lists for rental services. Movers, furniture rental, internet providers and cleaning companies use the leasing phone number and address of each building.
- Tracking over time. Run the same search or the same property links weekly and keep the history of rents, specials and floor plans.
Rent is reported the way the site reports it
This matters more than it sounds. Most listings show a rent like $5,075+,
which means "from", because the building has several floor plans at different
prices. Flattening that to 5074 turns a starting price into a price, and
nobody notices until a rent comparison is quietly wrong.
So every row carries three fields instead of one:
rent_textis exactly what the site displays, plus sign and allrent_fromis that number, for sorting and filteringrent_is_fromis true when the displayed figure is a starting price
Turn on Follow each listing and you also get rent_min and rent_max, the
real range across that building's units, plus its coordinates and the names of
the floor plans on offer. That costs one extra request per listing, so a
hundred-listing run takes noticeably longer, but it is the difference between
"from $5,075" and "$5,075 to $6,483".
Input
| Field | Default | What it does |
|---|---|---|
search (Locations) | ["new-york-ny"] in the form | Location slugs such as austin-tx, or full apartments.com search URLs with filters |
propertyUrls (Specific properties) | empty | Property page links to read directly |
maxItems (Maximum listings) | 100 | Overall cap on rows across every location and property |
maxPages (Maximum pages per location) | 10 | Stops one large city from consuming the whole run |
includeDetail (Follow each listing) | false | Opens each returned property for coordinates, floor plans and the rent range |
Use search for location slugs or full filtered search URLs. The default maxItems is
100 across all locations, while maxPages defaults to 10 per location. Set includeDetail
to true to follow returned properties for coordinates, floor plans and rent ranges.
Specific property links belong in propertyUrls; use an empty search list when you only
want these links. Locations are processed first, then specific properties until the overall
listing limit is reached. Supplying multiple locations does not guarantee rows from each
when an earlier location has already filled that limit.
A run with every option looks like this:
{"search": ["boise-id"],"propertyUrls": ["https://www.apartments.com/10-halletts-point-astoria-ny/1j2c5h6/"],"maxItems": 45,"maxPages": 1,"includeDetail": true}
Output: what a row looks like
listing_id,url,name— the propertyaddress,street_address,country_code,unit_number— where it isbeds— the bed range as displayed,Studiothrough4 Bedsrent_text,rent_from,rent_is_fromamenities— what the card advertises, such as pets allowed, pool, in-unit laundryhas_specials— whether a move-in offer is being advertisedphone— the leasing numberphoto_count— how many photos the listing carriesis_featured— whether apartments.com is promoting the listingsearch,search_page,position— where in the run it came from
With Follow each listing on, each row also gains latitude, longitude,
rent_min, rent_max, unit_models, unit_count, and two flags saying
whether that property publishes a fees section and a nearby-schools section.
Rows also carry a few general fields (currency, price, street, lat, lng,
listing_type, fetched_at and similar) that share one shape with our other real
estate scrapers, so you can combine their datasets.
This is a real row from a run with the input above (Boise, property page followed):
{"listing_id": "8ypmek2","url": "https://www.apartments.com/tauri-boise-id/8ypmek2/","name": "Tauri","address": "12673 W Ashcreek St, Boise, ID 83713","street_address": "12673 W Ashcreek St","country_code": "US","unit_number": null,"is_featured": true,"beds": "1 Bed","rent_text": "$1,600+","rent_from": 1600,"rent_is_from": true,"amenities": ["Pets Allowed", "Lounge", "Package Service"],"has_specials": true,"phone": "2083302627","photo_count": 80,"search": "boise-id","search_page": 1,"detail_fetched": true,"latitude": 43.6562,"longitude": -116.33935,"rent_min": 1600,"rent_max": 2400,"unit_models": ["Flat 1 bed", "Flat 2 bed", "Rowhome"],"unit_count": 53,"has_fees_section": true,"has_schools_section": true,"position": 1,"source": "apartments-scraper","platform": "apartments","listing_type": "for_rent","currency": "USD","query": "boise-id","street": "12673 W Ashcreek St","lat": 43.6562,"lng": -116.33935,"price": 1600,"fetched_at": "2026-10-04T17:15:38.293Z"}
Some fields are legitimately empty. A card with no advertised amenities has none, and a small handful of promoted placards carry no price at all. Those come back null rather than being filled in with a guess.
Results are delivered to the default dataset, which you can download as JSON, CSV, Excel
or HTML, or read through the Apify API. The summary record reports input counts,
listings, successful detail requests, published rents and amenities, elapsed time and errors.
The errors record appears when a page could not be read. Missing source values remain
null or absent rather than being estimated.
How to scrape Apartments.com without code
- Open the actor and type one or more cities in Locations, for example
austin-tx, or paste a search URL from your browser with the filters you want. - Set Maximum listings to the number of rows you need.
- Turn on Follow each listing if you need coordinates, floor plans and the rent range.
- Start the run and export the dataset as CSV or Excel when it finishes.
To run it on a schedule, save the input as a task and add a schedule in Apify Console.
Run sizes and paging
Result pages hold forty listings each and a busy city has well over a hundred pages, so two inputs keep a run bounded. Maximum listings is the overall cap across every location. Maximum pages per location is the safety rail that stops one enormous city from consuming the whole run.
Because listings arrive forty at a time, asking for 50 fetches two pages and trims. Asking for 45 costs exactly the same as asking for 80.
A hundred listings without following detail pages takes a few seconds. The same run with Follow each listing on takes a few minutes, because it is a hundred more page loads. Default memory of 1 GB is comfortable either way.
When something cannot be read
A location or page that fails becomes an entry in the errors record rather
than a missing row:
| Code | Meaning |
|---|---|
bad_input | No location or property URL was supplied |
no_results | The location was read and genuinely has no listings |
fetch_failed | A result page could not be read after several attempts |
detail_failed | A property page could not be read |
no_results and fetch_failed are deliberately different. An empty city and a
page that would not load look identical if you only count rows, and telling
them apart is the difference between "nothing to rent there" and "we do not
know".
If a run suddenly returns fetch_failed across the board where it worked last week,
the site has most likely changed. Re-run once, and if it persists, open an issue on
the actor page and it will be looked at rather than patched around.
Apartments.com Scraper compared with other options
| Option | What you get | Fits when |
|---|---|---|
| This actor | Search results and property pages as rows, with rent text, rent range, amenities and leasing phone | You want renter-facing listing data for a city or a set of buildings |
| The Apartments.com API | A listing feed for property managers who publish their own units | You manage properties and send listings to the site, not when you want to read the market |
| Copying by hand or a browser extension | One page at a time | You need a handful of listings once |
| Your own scraper | Full control | You have time to keep up with page changes |
Most tools in this space give you one price per listing. This actor keeps the displayed text, the number and the "from" flag apart, and with Follow each listing gives the true rent range, which is what rental data comparisons usually need.
Pricing
The existing prices are $0.002 per valid run, $0.0004 per delivered listing, and $0.0015
per successful optional property follow-up. Specific property links alone do not incur
the optional detail event. When searches and specific properties are combined with
includeDetail, the optional follow-up covers both kinds of returned rows. Failed detail
requests do not incur that event. Users without a paid Apify plan receive at most ten rows;
listing and detail events apply only to delivered rows. Invalid empty input has no start fee.
A genuine search with no listings succeeds with an empty dataset and no listing or detail
events. The published Apify pricing panel remains the reference for current charges.
As an example, 1,000 listings without detail cost about $0.40 plus the run fee; with Follow each listing on they cost about $1.90.
Related actors
For other US rental sites, use Apartment List Scraper. For the UK rental and sale market, use Rightmove Scraper. For US listings for sale rather than rent, use Zillow Scraper or Redfin Scraper.
Apartments.com Scraper FAQ
Can I keep filters from a browser search?
Yes. Paste the full Apartments.com search URL into search. Its filters remain part of
the search as the actor follows result pages. The overall listing and page limits still apply.
Does every listing have a price, photo count and amenities?
No. Fields reflect what the returned source publishes. Rent is kept as both displayed text and a number, with a separate flag for starting prices. An unpublished field remains empty.
Do specific properties require a location?
No. Set search to an empty list and supply propertyUrls. Each successfully read property
produces one dataset row with the property heading and its published detail fields.
What happens if optional details cannot be read?
The search row remains in the dataset, the failure appears in errors, and that failed
optional follow-up is free. Successfully read rows and their charges remain available.
Is there an official Apartments.com API for listing data?
The Apartments.com API is meant for property managers who send their own listings to the site. It does not hand out the market's listings. This actor reads the public search and property pages instead.
Can I export Apartments.com 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.
Which areas does it cover?
Anything apartments.com lists under a location slug or search URL. Each row carries a
country_code, and phone numbers and addresses come back as the site shows them.