Apartments.com Rental Scraper - Apartments & Houses avatar

Apartments.com Rental Scraper - Apartments & Houses

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Apartments.com Rental Scraper - Apartments & Houses

Apartments.com Rental Scraper - Apartments & Houses

Scrape Apartments.com rentals by US city. Extract apartment, house, condo, and townhome prices, phones, addresses, amenities, floorplans, and units. An Apartments.com API alternative for Excel, CSV, or JSON.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

5

Total users

3

Monthly active users

2 days ago

Last modified

Share

Apartments.com Rental Scraper — apartments, houses & condos. Scrape Apartments.com rental listings by US city, then download structured data as Excel, CSV, or JSON.

This Actor is a practical Apartments.com API alternative for rental market research, investor screening, comps, and lead lists. Enter a city such as Austin, TX, choose apartments / houses / condos / townhomes, and get community rows with rent ranges, phones, addresses, amenities, floorplans, units, fees, and photos when present on the detail page.

  • Pull apartments for rent, houses, condos, and townhomes from Apartments.com
  • Enrich search cards with detail-page fields (JSON-LD, floorplans, units, amenities, fees, schools)
  • Filter by property type — or paste known search / detail URLs
  • Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or MCP
  • Pay per event — Actor start + each Dataset listing; no subscription

Worker URL is config, not code: the Actor reads WORKER_BASE_URL from Actor environment variables (plus optional per-run workerBaseUrl). If you migrate the worker to a new host, update WORKER_BASE_URL (and WORKER_AUTH if the API key changes) in Apify Console — no Actor code change required. Set WORKER_PROVIDES_PROXY=1 when the worker supplies its own PROXY_URL.

Free Apify plan limits (set by this Actor's developer)

LimitFree Apify planPaid Apify plan
Runs of this Actor10 totalUnlimited
Results per runUp to 200 (maxItems)Up to schema max (200)

These caps are enforced in Actor code (not by Apify Console). Hitting the run limit finishes with a clear status message — it is not a platform bug.


Need a dedicated scraper for one website?

This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.

I confirm the tier before you pay. The clock starts after that confirmation.

Start here: Submit a custom scraper request

Starter $50Dedicated $100Hard target $200–999
Site1 simple anti-bot public site1 medium anti-bot public siteCloudflare / aggressive anti-bot / custom parser
ScopeFull listing + detail fieldsListing + detail + pagination, your field listAgreed fields, repeatable runs
DeliveryCSV/JSON · Apify Actor or standalone runnable client (script/CLI)Same, plus a sample run and short instructionsFeasibility first, then build
Time24 hours after we confirm the URL is in scope48 hours after confirmationQuoted after feasibility
Fixes30 days for small public-layout changes30 daysScoped in the quote

Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.

Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.


What does the Apartments.com Rental Scraper do?

It turns a US city rental search on Apartments.com into a clean Apify Dataset of rental communities and listings.

Under the hood, the Actor:

  1. Builds the Apartments.com search URL for your city and property type
  2. Collects listing cards from search results pages (SRP)
  3. Optionally opens detail pages (LDP) for JSON-LD, floorplans, units, amenities, and fees
  4. Writes normalized records you can download or push into automations

US residential egress is required for Akamai. When Actor env WORKER_PROVIDES_PROXY=1, the Cloud Run worker uses its own PROXY_URL; otherwise the Actor mints Apify RESIDENTIAL (US, prefilled). Fetching uses a slim Camoufox-only browser stack — plain HTTP is not used (Akamai 403).


What data can you extract from Apartments.com?

Data pointIncluded
Property / community name
Address, city, state
Rent / price range (price, lowPrice, highPrice)
Bed / rent summary
Phone
GPS coordinates
Listing URL & images
Amenities
Floorplans / units (when details enabled)
Fees / schools / Walk Score text

Every Dataset row also includes scrapedAt and source = apartments.com. A RUN_SUMMARY record in the key-value store reports counts and warnings.


Lead & contact fields

Every Dataset row carries a normalized lead block (phones, emails, address, geo, person, org, web, leadSource, leadReveal, leadAbsences) in addition to the listing fields above. These keys are always present; a missing lead is reported explicitly via leadAbsences rather than silently omitted.

FieldTypeMeaning on Apartments.com
phones[{value, type}]Leasing-office phone for an apartment community. On apartment LDPs the number is already visible (DOM plaintext + tel: href + JSON-LD telephone, e.g. +1-832-730-2535). On condo unit LDPs the JSON-LD telephone is an empty +1- and no DOM phone exists — see leadAbsences.
emails[{value, type}]Per-listing contact email. Apartments.com exposes no recipient email on listing pages (mailto: links are share links, not contact addresses); contact happens via "Send Message" / "Request Tour" lead-form modals. Always [] for per-listing rows.
address{street, unit, locality, region, postalCode, country, full}Listing address. street = street line (e.g. 11901 Burnet Rd); unit = 门牌 / unit number (e.g. 1201 on condo units, null on community pages); locality = city; region = state; full = assembled full address. Already visible via JSON-LD PostalAddress + DOM.
geo{lat, lng}GPS coordinates from JSON-LD GeoCoordinates / hasMap URL on apartment community LDPs (e.g. 30.40504, -97.71511). May be absent on condo unit pages (see leadAbsences).
person{name, role?}Individual agent / landlord / leasing contact name. Apartments.com does not surface a named individual per listing — the contact is the community leasing office. Always null for per-listing rows.
org{name, id?}Management / property company. Not exposed as a structured field on listing pages; the management company may appear in description prose but is not reliably parseable. null unless a structured source is found.
web{website, socials[]}Per-listing website and social links. Apartments.com does not link to a property's own website or socials from listing pages. website = null, socials = [].
leadSourceenumWhich surface produced the lead: search (SRP card), detail (LDP), entity / contact / reveal-xhr (not currently emitted for Apartments.com).
leadRevealenumHow the lead was obtained: visible (already on page, no interaction), click / xhr (after a reveal click — not used here), gated (behind login / lead form), image (image-only), absent (no lead and no gate).
leadAbsencesobject/mapReason each missing sub-field is absent: 本站无 (site never provides it), 闸门锁 (lead-form / login wall), 未验证 (not confirmed during research).

Reveal cost

Apartments.com does not use click-to-reveal phone/email controls. The leasing-office phone, address, and GPS on apartment community LDPs are already visible on page load (JSON-LD + DOM), so leadReveal = visible with zero extra clicks or XHR round-trips. There is no per-listing email to reveal — contact is a gated lead-form modal, so emails is always [] with leadAbsences.emails = 闸门锁. Detail pages are fetched one at a time (concurrency 1) for Akamai stability, which is the only cost driver; reveal itself adds no latency or proxy budget.

Honest limitations

The following lead sub-fields are not available from Apartments.com listing pages and are reported in leadAbsences — do not expect non-null values:

Sub-fieldReasonleadAbsences value
emails (per-listing)No recipient email on listing pages; contact is a "Send Message" / "Request Tour" lead-form modal behind Akamai.闸门锁
person (agent/landlord name)Apartments.com surfaces a community leasing office, not a named individual.本站无
org (management company)No structured management-company field on listing pages; may appear in description prose but is not reliably parseable.未验证
web.website / web.socialsNo per-listing website or social links on Apartments.com.本站无
phones (condo unit LDPs)JSON-LD telephone is an empty +1- and the DOM has no phone; only the lead form is offered.闸门锁
geo (condo unit LDPs)GeoCoordinates may be absent on condo unit detail pages.未验证

Platform-level contacts on apartments.com/grow/about/contact (e.g. support@apartments.com, CoStar Group address) are not used as per-listing lead values — they are corporate contacts, not listing leads.


What you can do with it

1. Scrape apartments for rent in a metro

Enter a city like Austin, TX, keep property type Apartments, and get structured community rows with rent ranges, phones, addresses, and listing URLs.

2. Cover houses, condos, and townhomes

Set propertyType to houses, condos, townhomes, or all to target other Apartments.com rental verticals.

3. Enrich known Apartments.com URLs

Paste search or detail URLs into Start URLs to override location/property type or fetch specific listing detail pages directly.

4. Pull floorplans and unit grids

Keep Scrape detail pages and Include unit/floorplan details enabled to extract JSON-LD floorplans plus DOM unit grids when present.

5. Feed rental data into automations

Schedule the Actor and send the Dataset to Sheets, Slack, CRM, Make, n8n, Zapier, or an AI agent via Apify MCP / API.


More Actors like this

Looking for another housing / property portal, or a scraper outside Apartments.com? Use a specialized Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for Apartments.com rentals (apartments, houses, condos, townhomes) with optional detail and floorplan enrichment.

Similar real estate Actors

Prefer another specialized scraper?

Jobs & Freelance

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape Apartments.com (no code required)

  1. Click Try for free
  2. Enter a location (Austin, TX)
  3. Choose property type (default: Apartments)
  4. Optionally set max listings / max search pages and detail enrichment
  5. Keep Apify RESIDENTIAL proxy enabled (US)
  6. Click Start — open the Dataset tab when the run finishes

Start with maxItems: 5–10 to verify the market, then scale up.


Pricing — how much does it cost to scrape Apartments.com?

Pay per event. No subscription.

EventPriceWhen charged
apify-actor-start$0.005When a normal run starts (scaled by allocated memory GB)
apify-default-dataset-item (result)$2.50 / 1,000 ($0.0025 each)Each listing written to the default Dataset

User pays platform usage costs: Yes — compute, residential proxy, and other platform usage are billed to the user in addition to event charges.

Example product charges (events only):

ScenarioApprox. event charge
Canary: 10 listings$0.005 + 10 × $0.0025 = $0.030
City scan: 100 listings$0.005 + $0.25 = $0.255
1,000 listings$0.005 + $2.50 = $2.505

Platform usage (especially residential proxy + browser warmup) is separate and depends on run duration and memory.


Input

FieldDescription
locationCity and state, e.g. Austin, TX
propertyTypeapartments, houses, condos, townhomes, or all
startUrlsOptional search or detail URLs
maxItems1–200 (default 1); free users capped at 200/run
maxPagesMax SRP pages (~40 cards/page), 1–18
scrapeDetailsEnrich from detail pages (default true)
includeUnitsParse DOM floorplan/unit grids (default true)
requestDelayMillisPoliteness delay between navigations
proxyConfigurationApify RESIDENTIAL / US when Actor mints proxy
workerBaseUrlOptional per-run worker origin override (Advanced)

Open the Input tab in Console for the full form and tooltips.


Output example

You can download the Dataset as JSON, CSV, Excel, or HTML.

{
"listingId": "abc123",
"propertyName": "Example Apartments",
"listingUrl": "https://www.apartments.com/example-apartments-austin-tx/",
"city": "Austin",
"state": "TX",
"price": 1450,
"lowPrice": 1450,
"highPrice": 2100,
"telephone": "(512) 555-0100",
"floorplanCount": 8,
"source": "apartments.com",
"scrapedAt": "2026-07-17T00:00:00+00:00"
}

Core fields include address/price/phone/GPS, listingUrl, images, amenities, plus detail extras such as jsonLdFloorplans, domFloorplans, unitCount, feesText, and schoolsText when enrichment is enabled.


Live View endpoints

When Standby / Live View is enabled, the Actor exposes a small OpenAPI surface for readiness and discovery:

EndpointPurpose
GET /Readiness / service info
GET /healthHealth check
GET /input-exampleLow-cost example input
GET /openapi.jsonDeployed OpenAPI document

Scraping still runs through a normal Actor run — Live View does not scrape Apartments.com by itself.


Connect from code

Actor ID: lentic_clockss/apartments-com-rental-scraper

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("lentic_clockss/apartments-com-rental-scraper").call(
run_input={
"location": "Austin, TX",
"propertyType": "apartments",
"maxItems": 10,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US",
},
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("propertyName"), item.get("price"), item.get("listingUrl"))

Use the same Actor ID in Make, n8n, Zapier, or Apify MCP for AI-agent workflows.


FAQ

Why did my free-plan run stop after 10 runs?

Free Apify plan users get 10 runs of this Actor and up to 200 results per run. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.

Is there a free Apartments.com API?

Apartments.com does not offer a simple public rental API for bulk third-party export. This Actor gives you structured rental community data through Apify runs, Dataset exports, and integrations.

Why is a US residential proxy required?

Apartments.com is protected by Akamai and returns 403 Access Denied for many datacenter and direct IPs. Reliable runs need US residential egress (worker PROXY_URL when WORKER_PROVIDES_PROXY=1, otherwise Apify RESIDENTIAL / US).

Can I scrape houses and condos as well as apartments?

Yes. Set propertyType to houses, condos, townhomes, or all.

Why are detail pages fetched one at a time?

Detail fetches are always serialized (concurrency 1) for Akamai stability.

What happens when a detail page fails?

Failed detail fetches still emit the SRP row with a detailError field. If scrapeDetails is enabled and the detail failure rate exceeds maxDetailFailRatio (default 0.5) after at least two attempts, the run fails instead of looking like a clean success.

Can I schedule daily Apartments.com scrapes?

Yes. Create an Apify schedule with the same input and send the Dataset to Sheets, Slack, a CRM, or your pipeline.

Use this Actor for legitimate research and analysis only. Respect Apartments.com terms of use and applicable law. Results may include publicly displayed listing information; do not use personal data without a lawful basis.


All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss