Apartments.com API & Scraper — US Rentals + Walk Score avatar

Apartments.com API & Scraper — US Rentals + Walk Score

Pricing

from $3.00 / 1,000 property extracteds

Go to Apify Store
Apartments.com API & Scraper — US Rentals + Walk Score

Apartments.com API & Scraper — US Rentals + Walk Score

🏢 The Apartments.com API + Apartments.com scraper for PropTech. Search US rentals by location, zip, coordinates, or URL. Built-in market-rent KPIs (median, $/bed, distribution) + walk score API, schools, pet policy in one event.

Pricing

from $3.00 / 1,000 property extracteds

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

5 hours ago

Last modified

Share

Apartments.com API & Scraper — US Rentals + Walk Score 🚀

SIÁN Agency Store SIÁN Realtor Property Scraper SIÁN Redfin Property Scraper SIÁN Zillow Property Scraper

🎉 The Apartments.com API your PropTech stack has been missing — 45+ fields per listing, median rent + $/bed + walk score API built into every run

Apartments.com scraper for PropTech engineers, multifamily underwriters, and rental-concierge tools across all 50 US states.

Independent tool — not affiliated with CoStar Group, Inc. Apartments.com® is a registered trademark of CoStar Group, Inc.; this actor is an independent data utility that reads only publicly published listings.


📋 Overview

Need apartments.com data without building (and maintaining) your own apartments.com scraper? This is the only apartments.com API on the Apify store that ships built-in market-rent KPIs and a walk score API in a single run.

Why thousands of rental-data professionals choose us:

  • 50-state US coverage: every active rental on apartments.com, including studios, multi-family, and corporate units
  • Direct apartments.com API — not a fragile browser scraper. 45+ structured fields per listing, faster runs, no anti-bot risk
  • 🎯 Built-in market-rent KPIs: median rent, $/bed, and rent-distribution percentiles per query — no post-processing required
  • 💰 Best price on the market: 6-tier auto-ladder from $0.005 BRONZE down to $0.003 GOLD per listing. Fully enriched (walk score + schools + pet policy + lease terms) charged as ONE event — competitors split this into 5–7 separate charges
  • 💎 BigInt-safe JSONamenitiesBitmap and 64-bit identifiers preserved as strings (most apartments.com data extractors silently corrupt these)
  • NEW: One-click enrichment bundle bundling walk score API, schools, pet policy, lease terms, rental costs, and per-unit availability in a single parallel fetch

✨ Features

  • 🔍 5 search modes — by location, by zip, by coordinates (radial), by URL, or bulk-location batches (PAID)
  • 🏷️ 45+ structured fields per listing — pricing range, bed range, manager, contact, geo, media, market signals
  • 📊 Built-in Market Rent KPIs — median midpoint rent, median rent per bed, distribution percentiles, inventory tally by city and zip
  • One-click enrichment bundle — walk score API + transit + bike + schools + pet policy + lease terms + rental costs in parallel, charged as ONE enrichment-fetched event
  • 🗺️ Radial search — lat/lng + miles radius for hyperlocal rent comps
  • 📋 Bulk-location mode — batch dozens of US markets in one PAID run
  • 🎨 HTML KPI report — KPI cards, distribution stats, methodology block saved to key-value store, ready for client decks
  • 🛡️ BigInt precision — apartments.com data preserved 1:1 (no silent integer corruption)
  • 💸 Pay-per-result — zero charge for empty runs or failed lookups

🎬 Quick Start

Run the actor with one curl command — get apartments.com data flowing into your stack in under 60 seconds.

curl -X POST https://api.apify.com/v2/acts/sian.agency~apartments-com-property-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"searchMode": "byZip", "zip": "10001", "maxResults": 25}'

🚀 Getting Started (3 Simple Steps)

Step 1: Pick a search mode

Choose By Location for free-text city/neighborhood, By Zip for precise 5-digit US targeting, By Coordinates for hyperlocal radial search, or By URL to paste any apartments.com page.

Step 2: (Optional) Toggle the enrichment bundle

PAID-tier users: flip Include enrichment bundle ON to add walk score, schools, pet policy, lease terms, and rental costs to every listing — charged as ONE event per listing.

Step 3: Run it

Hit Start. You'll see real-time progress, a structured JSON dataset, and an HTML KPI report saved to the key-value store the moment the run finishes.

That's it! In under 2 minutes, you'll have:

  • A clean dataset of fully structured apartments.com rental listings
  • Market-rent KPIs (median, $/bed, distribution) per query
  • A shareable HTML report ready for client decks

📥 Input Configuration

FieldTypeRequiredDescription
searchModestringYesbyLocation, byZip, byCoordinates, byUrl, or bulkLocations
maxResultsintegerNoHard cap per query (1–1000; FREE auto-capped at 25). Default 100
locationstringNo*Free-text city/neighborhood — used in byLocation mode
zipstringNo*5-digit US zip — used in byZip mode
latitudenumberNo*Center latitude — used in byCoordinates mode
longitudenumberNo*Center longitude — used in byCoordinates mode
radiusintegerNoSearch radius in miles (1–50). Default 5
urlstringNo*apartments.com region/city URL — used in byUrl mode
locationsarrayNo*Array of US locations — used in bulkLocations mode (PAID)
includeEnrichmentbooleanNoToggle the 7-fetch enrichment bundle. Default false

*Required for the matching search mode.

Example:

{
"searchMode": "byZip",
"zip": "10001",
"maxResults": 25,
"includeEnrichment": false
}

Bulk Processing (PAID):

{
"searchMode": "bulkLocations",
"locations": ["Brooklyn, NY", "Austin, TX", "Seattle, WA"],
"maxResults": 50,
"includeEnrichment": true
}

📤 Output

Results are saved to the Apify dataset with 45+ structured fields including:

FieldTypeDescription
listingKeystringUnique apartments.com property identifier
listingTitlestringBuilding/property name or formatted address
addressobjectStreet, city, state, postal code, full one-line address
pricingobjectrentRange + parsed rentMin/rentMax/rentMidpoint
specsobjectbedRange, parsed bedsMin/bedsMax, isMultifamily, isFurnished
locationobjectLatitude + longitude (decimal degrees)
marketobjectavailabilityText, hasAvailabilities, rentDeals, building rating
mediaobjectPrimary image, multimedia URL, 3D scan URL
propertyManagerobjectManager name + apartments.com company ID
contactobjectPhone number + lead-email availability flag
amenitiesBitmapstringBigInt-encoded amenity flags (string-preserved)
detailsobject(Enriched, PAID) description + amenities + fees + leaseTerms + photos
infoobject(Enriched, PAID) yearBuilt, unitCount, storyCount, apartmentStyle
walkScoresobject(Enriched, PAID) walk score API + transit + bike scores
schoolsarray(Enriched, PAID) Nearby schools grouped by category
petPoliciesarray(Enriched, PAID) Per-pet-type fees, deposits, weight limits
rentalCostsobject(Enriched, PAID) Per-unit rent breakdown + monthly costs
availabilitiesarray(Enriched, PAID) Per-floorplan availability detail
scrapedAtstringISO timestamp of when this record was extracted

Example:

{
"listingKey": "0smfmv0",
"listingTitle": "The Eugene",
"address": {
"street": "435 W 31st St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"full": "435 W 31st St, New York, NY 10001"
},
"pricing": { "rentRange": "$4,500 - 10,000", "rentMin": 4500, "rentMax": 10000, "rentMidpoint": 7250 },
"specs": { "bedRange": "Studio - 1 Bed", "bedsMin": 0, "bedsMax": 1, "isMultifamily": true },
"location": { "lat": 40.7517, "lng": -73.9985 },
"amenitiesBitmap": "1660381037712900511",
"walkScores": { "walk": 98, "transit": 100, "bike": 89 },
"scrapedAt": "2026-05-15T09:30:00.000Z"
}

💼 Use Cases & Examples

1. PropTech rental-tool builders

Stop maintaining a fragile apartments.com scraper — use the apartments.com API directly.

Input: Target markets as locations (bulk mode). Output: Fully structured listings + walk score API + schools — ready to power a tenant-search product. Use: Drop into your backend; replace 800 lines of scraping code with one webhook call.

2. Multifamily underwriting & rent-comp research

Pull median rent and $/bed for any zip in seconds.

Input: byZip for each comp zip in your underwriting model. Output: Inventory count, median midpoint rent, and distribution percentiles per zip. Use: Drop the KPI block into your DCF model; sanity-check sponsor rent assumptions.

3. Rental concierges prospecting buildings

One run returns contact, manager, amenities, pet policy, lease terms, and walk score.

Input: byCoordinates for a 2-mile radius around your client's office. Output: Every active building with manager contact, lead-email flag, pet rules, and lease terms. Use: Build curated shortlists for relocation clients in under 30 minutes.

4. Multi-market portfolio analysts

Compare 30 US markets in one PAID run.

Input: bulkLocations with 30 city/state pairs. Output: Side-by-side market KPIs — median rent, $/bed, inventory by zip. Use: Identify under-priced markets for cross-market portfolio expansion.

5. Tenant-facing apps and AI chatbots

Get apartments.com data into your LLM context window in clean JSON, not HTML.

Input: User query → byLocation or byZip lookup. Output: Clean structured JSON, ready to feed an LLM or display in a chat UI. Use: Power "find me a 2-bed under $3000 in Brooklyn" conversational search.

6. Academic researchers studying rental markets

Reliable, structured apartments.com data — without writing a scraper.

Input: Time-series runs across the same zips, scheduled weekly. Output: Longitudinal rent dataset with timestamps and market signals. Use: Track rent growth, vacancy proxies, and inventory shifts over time.

7. Real-estate market-intelligence agencies

Deliver client reports with apartments.com data underneath.

Input: Client market list as bulk locations. Output: HTML KPI report saved to key-value store + structured dataset. Use: White-label the HTML report or pipe the dataset into your client's BI stack.


🔗 Integration Examples

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/apartments-com-property-scraper').call({
searchMode: 'byZip',
zip: '10001',
maxResults: 25,
includeEnrichment: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} listings — median rent:`, items[0].pricing.rentMidpoint);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/apartments-com-property-scraper').call(
run_input={
'searchMode': 'byLocation',
'location': 'Austin, TX',
'maxResults': 100,
'includeEnrichment': False
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['listingTitle'], item['pricing']['rentMidpoint'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~apartments-com-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"searchMode": "byLocation", "location": "Brooklyn, NY", "includeEnrichment": true}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: Schedule (weekly market refresh) or webhook (on-demand client request)
  2. HTTP Request: Call the actor's run endpoint with your search input
  3. Process: Parse JSON results — every listing has a consistent 45+ field schema
  4. Action: Save to Airtable / Google Sheets, ping Slack with KPI summary, or pipe into your BI

📊 Performance & Pricing

FREE Tier (Try It Now)

  • Up to 25 listings per run — full feature access, same 45+ field schema as PAID
  • No credit card required
  • Perfect for testing, prototyping, and small validation projects
  • Unlimited listings per run (up to your maxResults cap)
  • Enrichment bundle unlocked — walk score API, schools, pet policy, lease terms in one charge
  • Bulk-location mode for multi-market batches
  • Pay-per-result — zero charge for failed lookups or empty results

6-Tier Pricing Ladder (auto-scales with your monthly volume)

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
Run start (one-time)$0.12$0.012$0.012$0.012$0.012$0.012
Per listing extracted (headline)$0.030$0.005$0.004$0.003$0.003$0.003
Enrichment bundle (per listing)$0.030$0.008$0.006$0.005$0.004$0.004

💰 Best price on the market — at GOLD tier and up, you pay $0.008 per fully enriched listing (rent + walk score + schools + pet policy + lease terms + rental costs). Competitors charge $0.005+ for raw listings alone and fragment enrichment into 5–7 separate $0.001+ events.

🔗 View current pricing


❓ Frequently Asked Questions

Q: What does the apartments.com API actually return? A: 45+ structured fields per listing — pricing range, bed range, address, manager, contact, geo, media, market signals — plus an optional enrichment bundle (walk score API + schools + pet policy + lease terms + rental costs). All in clean JSON.

Q: How is this different from other apartments.com scrapers on Apify? A: We're the only one that ships built-in market-rent KPIs (median, $/bed, distribution per city/zip) and bundles walk score + schools + pet policy into a single enrichment event. Competitors fragment those into 5–7 separate charges and never compute KPIs. We also BigInt-preserve amenitiesBitmap so your downstream stack gets 1:1 fidelity.

Q: How many listings can I process? A: FREE tier: 25 listings per run. PAID tier: unlimited (subject to your maxResults cap; default 100, max 1000).

Q: Does this work with private or login-walled apartments.com data? A: No — only publicly accessible apartments.com data is supported. Personal contact details appear only when the listing itself publishes them.

Q: What output formats are available? A: JSON (default), CSV, Excel — export directly from the Apify dataset console. The HTML KPI report is saved separately to the key-value store.

Q: Can I get the walk score API without the rest of the enrichment bundle? A: Today, walk score is part of the bundled enrichment-fetched event (alongside schools, pet policy, lease terms, and rental costs). Granular per-fetch toggles are on the v0.2 roadmap — open an issue with your use case.

Q: How fresh is apartments.com data? A: Listings are fetched live at run time. Every record carries a scrapedAt ISO timestamp so you know exactly when the data was current.

Q: Is this a rental property API I can build a product on? A: Yes — stable schema, pay-per-result pricing, 50-state coverage, direct API. PropTech teams, rental concierges, and multifamily underwriters use it in production.


🐛 Troubleshooting

Search returned 0 listings

  • For byLocation: use a more specific form like "Brooklyn, NY" instead of just "Brooklyn"
  • For byZip: verify the zip is 5 digits and a valid US zip
  • For byCoordinates: increase the radius (try 10 miles)

Enrichment fields are empty on FREE tier

  • The enrichment bundle is PAID-only. Upgrade your Apify plan or set includeEnrichment: false.

Walk score / schools missing on some listings

  • Apartments.com does not publish walk score or school data for every listing. The actor still returns the listing record; the optional enrichment fields are simply absent for those rows.

Bulk-location mode says "PAID tier required"

  • Bulk processing requires the PAID tier. Use byLocation or byZip in single-mode for FREE-tier runs.

amenitiesBitmap looks like a string instead of a number

  • That's intentional — amenitiesBitmap is a 64-bit unsigned integer that loses precision when parsed as a JS Number. We preserve it as a string for 1:1 fidelity. Parse with BigInt() if you need numeric ops.

⚖️ Trademarks & Compliance

Independent tool — not affiliated with CoStar Group, Inc. Apartments.com® is a registered trademark of CoStar Group, Inc. We use the name only to identify the public data source this independent tool reads from. There is no affiliation, endorsement, or business relationship.


Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools