Apartments.com Scraper - Rental Listings, Rents & Contacts avatar

Apartments.com Scraper - Rental Listings, Rents & Contacts

Pricing

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

Go to Apify Store
Apartments.com Scraper - Rental Listings, Rents & Contacts

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

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

20 days ago

Last modified

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_text is exactly what the site displays, plus sign and all
  • rent_from is that number, for sorting and filtering
  • rent_is_from is 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

FieldDefaultWhat it does
search (Locations)["new-york-ny"] in the formLocation slugs such as austin-tx, or full apartments.com search URLs with filters
propertyUrls (Specific properties)emptyProperty page links to read directly
maxItems (Maximum listings)100Overall cap on rows across every location and property
maxPages (Maximum pages per location)10Stops one large city from consuming the whole run
includeDetail (Follow each listing)falseOpens 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 property
  • address, street_address, country_code, unit_number — where it is
  • beds — the bed range as displayed, Studio through 4 Beds
  • rent_text, rent_from, rent_is_from
  • amenities — what the card advertises, such as pets allowed, pool, in-unit laundry
  • has_specials — whether a move-in offer is being advertised
  • phone — the leasing number
  • photo_count — how many photos the listing carries
  • is_featured — whether apartments.com is promoting the listing
  • search, 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

  1. 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.
  2. Set Maximum listings to the number of rows you need.
  3. Turn on Follow each listing if you need coordinates, floor plans and the rent range.
  4. 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:

CodeMeaning
bad_inputNo location or property URL was supplied
no_resultsThe location was read and genuinely has no listings
fetch_failedA result page could not be read after several attempts
detail_failedA 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

OptionWhat you getFits when
This actorSearch results and property pages as rows, with rent text, rent range, amenities and leasing phoneYou want renter-facing listing data for a city or a set of buildings
The Apartments.com APIA listing feed for property managers who publish their own unitsYou manage properties and send listings to the site, not when you want to read the market
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

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.

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

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.