Apartments.com Rental Scraper - Apartments & Houses
Pricing
from $2.20 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
5
Total users
3
Monthly active users
2 days ago
Last modified
Categories
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_URLfrom Actor environment variables (plus optional per-runworkerBaseUrl). If you migrate the worker to a new host, updateWORKER_BASE_URL(andWORKER_AUTHif the API key changes) in Apify Console — no Actor code change required. SetWORKER_PROVIDES_PROXY=1when the worker supplies its ownPROXY_URL.
Free Apify plan limits (set by this Actor's developer)
| Limit | Free Apify plan | Paid Apify plan |
|---|---|---|
| Runs of this Actor | 10 total | Unlimited |
| Results per run | Up 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 $50 | Dedicated $100 | Hard target $200–999 | |
|---|---|---|---|
| Site | 1 simple anti-bot public site | 1 medium anti-bot public site | Cloudflare / aggressive anti-bot / custom parser |
| Scope | Full listing + detail fields | Listing + detail + pagination, your field list | Agreed fields, repeatable runs |
| Delivery | CSV/JSON · Apify Actor or standalone runnable client (script/CLI) | Same, plus a sample run and short instructions | Feasibility first, then build |
| Time | 24 hours after we confirm the URL is in scope | 48 hours after confirmation | Quoted after feasibility |
| Fixes | 30 days for small public-layout changes | 30 days | Scoped 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:
- Builds the Apartments.com search URL for your city and property type
- Collects listing cards from search results pages (SRP)
- Optionally opens detail pages (LDP) for JSON-LD, floorplans, units, amenities, and fees
- 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 point | Included |
|---|---|
| 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.
| Field | Type | Meaning 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 = []. |
leadSource | enum | Which surface produced the lead: search (SRP card), detail (LDP), entity / contact / reveal-xhr (not currently emitted for Apartments.com). |
leadReveal | enum | How 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). |
leadAbsences | object/map | Reason 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-field | Reason | leadAbsences 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.socials | No 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
- Zillow & Zumper Scraper
- Realtor.com Scraper
- Realtor.com Agents Scraper
- Zillow Group Scraper
- Craigslist Housing Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- Idealista Scraper
- ImmoScout24 Scraper
- realestate.com.au Scraper
- Bayut Scraper
- Property Finder Scraper
- Funda Scraper
- 99.co Scraper
Prefer another specialized scraper?
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
E-commerce
- Walmart Product Scraper
- Amazon Search Scraper
- Shopee Search Scraper
- Etsy Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Target Product Scraper
- Allegro Scraper
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)
- Click Try for free
- Enter a location (
Austin, TX) - Choose property type (default: Apartments)
- Optionally set max listings / max search pages and detail enrichment
- Keep Apify RESIDENTIAL proxy enabled (US)
- 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.
| Event | Price | When charged |
|---|---|---|
apify-actor-start | $0.005 | When 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):
| Scenario | Approx. 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
| Field | Description |
|---|---|
location | City and state, e.g. Austin, TX |
propertyType | apartments, houses, condos, townhomes, or all |
startUrls | Optional search or detail URLs |
maxItems | 1–200 (default 1); free users capped at 200/run |
maxPages | Max SRP pages (~40 cards/page), 1–18 |
scrapeDetails | Enrich from detail pages (default true) |
includeUnits | Parse DOM floorplan/unit grids (default true) |
requestDelayMillis | Politeness delay between navigations |
proxyConfiguration | Apify RESIDENTIAL / US when Actor mints proxy |
workerBaseUrl | Optional 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:
| Endpoint | Purpose |
|---|---|
GET / | Readiness / service info |
GET /health | Health check |
GET /input-example | Low-cost example input |
GET /openapi.json | Deployed 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 ApifyClientclient = 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.
Is it legal to scrape Apartments.com?
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.
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss