# Realtor Rental Scraper (`silentflow/realtor-rental-scraper`) Actor

Get rental listings from Realtor.com with 70+ fields per property — rent, beds/baths, sqft, amenities, pet policy, lease terms, available units, agent contacts, photos and GPS coordinates. Target any US city or ZIP code. Fast concurrent scraping with automatic detail page enrichment.

- **URL**: https://apify.com/silentflow/realtor-rental-scraper.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$14.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Realtor.com Rental Scraper

Extract rental listings from [Realtor.com](https://www.realtor.com), apartments, houses, condos, and townhomes. Get comprehensive rental data including rent prices, pet policies, utilities included, lease terms, amenities, agent contact info, and photos. Search by location or provide direct listing URLs.

### ✨ Why use this scraper?

- 🏠 **50+ data fields per listing**: rent, beds, baths, pet policy, utilities, amenities, lease terms, agent info, and more
- 🐾 **Rental-specific data**: pet policies (cats/dogs, deposits, fees), utilities included, laundry type, parking details
- ⚡ **Concurrent scraping**: configurable worker pool processes multiple listings in parallel for fast results
- 📍 **Flexible input**: search by city/state location or paste any Realtor.com rental URL directly
- 📊 **Export ready**: download results as JSON, CSV, or Excel for immediate use in any tool

### 🎯 Use cases

| Industry | Use Case |
|----------|----------|
| **Real estate** | Monitor rental inventory, track price changes, analyze market trends |
| **Property management** | Benchmark your rents against comparable listings in any market |
| **Finance & investment** | Analyze rental yields, cap rates, and market saturation by area |
| **Relocation services** | Compile curated rental lists for clients moving to a new city |
| **Tech & startups** | Build rental databases, recommendation engines, or market dashboards |
| **Research** | Study rental market dynamics, affordability, and geographic trends |

### 📥 Input parameters

#### URL Scraping

| Parameter | Type | Description |
|-----------|------|-------------|
| `startUrls` | Array | Realtor.com URLs to scrape. Accepts search pages (`realtor.com/apartments/Austin_TX/`) and individual listing pages (`realtor.com/rentals/details/...`) |

#### Search

| Parameter | Type | Description |
|-----------|------|-------------|
| `location` | String | City and state to search (e.g. `New York, NY` or `Austin, TX`) |

#### Sorting & Filtering

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sort` | String | `newest` | Sort by `newest`, `price_asc`, or `price_desc` |
| `propertyType` | String | all | Filter by `apartment`, `house`, `townhome`, `condo`, or `mobile` |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxItems` | Integer | 100 | Maximum number of listings to save |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDetails` | Boolean | `true` | Visit each listing's detail page for complete data (pet policies, utilities, lease terms, amenities) |
| `proxy` | Object | Residential | Proxy configuration |

### 📊 Output data

Each listing is saved as a structured JSON object:

```json
{
  "propertyId": "M1234567890",
  "listingId": "2945987601",
  "url": "https://www.realtor.com/rentals/details/123-Main-St_New-York_NY_10001_M1234567890",
  "listingType": "apartment",
  "status": "for_rent",
  "address": "123 Main St Apt 4B",
  "city": "New York",
  "state": "New York",
  "stateCode": "NY",
  "zip": "10001",
  "country": "US",
  "lat": 40.7128,
  "lng": -74.006,
  "neighborhood": "Midtown Manhattan",
  "county": "New York County",
  "rent": 3500,
  "rentMin": 3200,
  "rentMax": 4000,
  "beds": 2,
  "baths": 1,
  "sqft": 850,
  "availableDate": "2026-03-01",
  "listingDate": "2026-02-25T10:00:00Z",
  "daysOnMarket": 5,
  "leaseTerm": "12 months",
  "securityDeposit": 3500,
  "applicationFee": 75,
  "petsAllowed": true,
  "catsAllowed": true,
  "dogsAllowed": true,
  "petDeposit": 500,
  "petFee": 50,
  "petPolicy": "Cats and dogs welcome, max 2 pets, deposit required",
  "utilitiesWater": true,
  "utilitiesGas": false,
  "utilitiesElectric": false,
  "utilitiesTrash": true,
  "utilitiesInternet": false,
  "utilitiesCable": false,
  "laundryType": "in-unit",
  "parkingType": "garage",
  "parkingFee": 150,
  "yearBuilt": 1995,
  "stories": 15,
  "unitNumber": "4B",
  "buildingName": "The Grand Tower",
  "amenities": ["Dishwasher", "Central Air", "Elevator"],
  "tags": ["cats", "dogs", "central_air", "laundry_in_unit"],
  "details": [
    { "category": "Interior Features", "text": ["Washer/Dryer In Unit", "Dishwasher"] },
    { "category": "Utilities Included", "text": ["Water", "Trash"] }
  ],
  "agentName": "Jane Smith",
  "agentPhone": "+12125551234",
  "agentEmail": "jane@realty.com",
  "officeName": "NYC Realty Group",
  "photoCount": 12,
  "photos": ["https://ap.rdcpix.com/photo1.jpg", "https://ap.rdcpix.com/photo2.jpg"],
  "description": "Beautiful 2BR apartment in Midtown Manhattan with stunning city views.",
  "openHouses": [],
  "scrapedAt": "2026-02-28T12:00:00Z",
  "dataType": "rental"
}
```

### 🗂️ Data fields

| Category | Fields |
|----------|--------|
| **Identification** | `propertyId`, `listingId`, `url` |
| **Type & Status** | `listingType`, `status` |
| **Location** | `address`, `city`, `state`, `stateCode`, `zip`, `country`, `lat`, `lng`, `neighborhood`, `county` |
| **Pricing** | `rent`, `rentMin`, `rentMax` |
| **Property details** | `beds`, `baths`, `sqft`, `yearBuilt`, `stories`, `unitNumber`, `buildingName` |
| **Availability** | `availableDate`, `listingDate`, `daysOnMarket` |
| **Rental terms** | `leaseTerm`, `securityDeposit`, `applicationFee` |
| **Pet policy** | `petsAllowed`, `catsAllowed`, `dogsAllowed`, `petDeposit`, `petFee`, `petPolicy` |
| **Utilities** | `utilitiesWater`, `utilitiesGas`, `utilitiesElectric`, `utilitiesTrash`, `utilitiesInternet`, `utilitiesCable` |
| **Building features** | `laundryType`, `parkingType`, `parkingFee` |
| **Amenities** | `amenities`, `tags`, `details` |
| **Agent info** | `agentName`, `agentPhone`, `agentEmail`, `officeName` |
| **Media** | `photoCount`, `photos` |
| **Other** | `description`, `openHouses`, `scrapedAt`, `dataType` |

### 🚀 Examples

#### Search by location

```json
{
  "location": "Austin, TX",
  "maxItems": 200,
  "sort": "newest",
  "includeDetails": true
}
```

#### Scrape specific search URL

```json
{
  "startUrls": [
    { "url": "https://www.realtor.com/apartments/Chicago_IL/" }
  ],
  "maxItems": 500,
  "includeDetails": true
}
```

#### Scrape individual listings

```json
{
  "startUrls": [
    { "url": "https://www.realtor.com/rentals/details/123-Main-St_Austin_TX_78701_M1234567890" },
    { "url": "https://www.realtor.com/rentals/details/456-Oak-Ave_Austin_TX_78702_M9876543210" }
  ]
}
```

#### High-volume market research

```json
{
  "startUrls": [
    { "url": "https://www.realtor.com/apartments/Los-Angeles_CA/" },
    { "url": "https://www.realtor.com/apartments/San-Francisco_CA/" },
    { "url": "https://www.realtor.com/apartments/Seattle_WA/" }
  ],
  "maxItems": 1000,
  "sort": "price_asc"
}
```

### 💻 Integrations

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "location": "New York, NY",
    "maxItems": 100,
    "sort": "newest",
    "includeDetails": True,
}

run = client.actor("YOUR_ACTOR_ID").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"${item['rent']}/mo, {item['beds']}BR {item['listingType']} at {item['address']}, {item['city']}")
    if item.get("petsAllowed"):
        print(f"  Pets: cats={item['catsAllowed']}, dogs={item['dogsAllowed']}")
```

#### JavaScript

```javascript
const { ApifyClient } = require('apify-client');

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('YOUR_ACTOR_ID').call({
    location: 'Austin, TX',
    maxItems: 200,
    sort: 'price_asc',
    includeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
    console.log(`$${item.rent}/mo, ${item.beds}BR at ${item.address}`);
});
```

### 📈 Performance & limits

| Metric | Value |
|--------|-------|
| Listings per page | ~42 |
| Detail pages per minute | ~30–60 |
| Typical run (100 listings) | 2–5 minutes |
| Typical run (1,000 listings) | 15–30 minutes |
| Memory usage | 256–512 MB |

### 💡 Tips for best results

- **Use residential proxies**: Realtor.com requires residential proxy for reliable access. The default proxy setting is recommended.
- **Enable detail pages**: `includeDetails: true` adds pet policies, utilities, lease terms, amenities, and agent contact, essential for rental analysis.
- **Use direct search URLs**: Copy a filtered Realtor.com URL from your browser (with price range, beds, etc.) for more precise results.
- **Cover large markets**: Large cities like NYC or LA have thousands of listings. Set `maxItems: 2000+` for comprehensive coverage.
- **Filter by property type**: Use `propertyType` to focus on apartments, houses, or specific unit types and speed up your run.

### ❓ FAQ

**Q: What URL formats does this scraper support?**
A: Search pages like `realtor.com/apartments/Austin_TX/`, `realtor.com/apartments/New-York_NY/pg-2`, and individual detail pages like `realtor.com/rentals/details/{slug}`.

**Q: Why does `includeDetails` matter?**
A: Search pages include basic info (address, rent, beds, baths, photos). Detail pages add pet policies, utilities included, lease terms, amenities, security deposit, and agent contact info. Enable it for complete datasets.

**Q: Can I scrape multiple cities in one run?**
A: Yes, add multiple URLs to `startUrls`, one per city. All results are combined in a single dataset.

**Q: How often does Realtor.com update its listings?**
A: Listings are typically updated in real time or within hours. Re-run the scraper daily for up-to-date market data.

**Q: Is the pet policy data reliable?**
A: Pet policy data comes directly from the listing agent. Availability varies by listing, some listings don't specify pet policy details.

**Q: What's the difference between `rent`, `rentMin`, and `rentMax`?**
A: For single-unit properties, all three are the same. For multi-unit buildings offering various floor plans, `rentMin` and `rentMax` show the price range.

### 📬 Support

For feature requests or custom scraping solutions, reach out via the Apify platform.

# Actor input Schema

## `startUrls` (type: `array`):

Realtor.com rental URLs to scrape. Accepts search pages (e.g. realtor.com/rentals/Austin\_TX/) and individual listing pages (e.g. realtor.com/rentals/details/...).

## `location` (type: `string`):

City and state to search for rentals (e.g. 'New York, NY' or 'Austin, TX'). Leave empty if using Start URLs.

## `sort` (type: `string`):

Sort rental listings by criteria.

## `propertyType` (type: `string`):

Filter by property type. Leave empty for all types.

## `maxItems` (type: `integer`):

Maximum number of rental listings to save.

## `includeDetails` (type: `boolean`):

Visit each listing's detail page to extract full data: pet policies, utilities, lease terms, amenities, and contact info. Disable for faster listing-only scraping.

## `proxy` (type: `object`):

Either use Apify proxy, or provide your own proxy servers.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.realtor.com/rentals/Austin_TX/"
    }
  ],
  "location": "New York, NY",
  "sort": "newest",
  "propertyType": "",
  "maxItems": 100,
  "includeDetails": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Complete rental data including: address, rent, beds, baths, sqft, pet policy, utilities, amenities, agent info, photos, and more.

## `resultsCSV` (type: `string`):

CSV format export for spreadsheet analysis

## `resultsExcel` (type: `string`):

Excel format export

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.realtor.com/rentals/Austin_TX/"
        }
    ],
    "location": "New York, NY",
    "sort": "newest",
    "maxItems": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/realtor-rental-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.realtor.com/rentals/Austin_TX/" }],
    "location": "New York, NY",
    "sort": "newest",
    "maxItems": 100,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("silentflow/realtor-rental-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.realtor.com/rentals/Austin_TX/"
    }
  ],
  "location": "New York, NY",
  "sort": "newest",
  "maxItems": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call silentflow/realtor-rental-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=silentflow/realtor-rental-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/2NAmN6OWSzcaAo6F1/builds/fFOrgoBO8YZggA1QK/openapi.json
