# Rent.Com \[Only $1💰] Scraper (/w EMAILS) (`memo23/rent-com-scraper`) Actor

💰 $1 per 1,000 listings, extract Rent.com property data: pricing, bed/bath ranges, location coordinates, photos, special deals, contact info & availability. Get structured JSON with property details, media galleries & lead information.

- **URL**: https://apify.com/memo23/rent-com-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 36 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## 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

## Rent.com Scraper

**Unlock the Full Power of Rent.com Rental Data** - The only scraper you need to track, analyze, and understand apartment listings on Rent.com with enterprise-grade reliability and precision. Whether you're monitoring rental trends, tracking specific property types, or conducting market research, our scraper delivers comprehensive, real-time insights while saving you time and resources.

*"From studio apartments to luxury rentals, we turn Rent.com's data into your competitive advantage."*

### Overview

The Rent.com Scraper is your go-to tool for extracting rental property data from Rent.com. Ideal for real estate agents, market analysts, and property researchers, it tracks listing details, pricing, and property information across the United States. With easy setup and multiple export formats (JSON, CSV), it's perfect for anyone looking to gather comprehensive rental data from Rent.com.

### What does Rent.com Scraper do?

The Rent.com Scraper is a powerful tool that enables you to:

#### Comprehensive Data Collection

- **Property Data**
  - Extract complete apartment details and specifications
  - Scrape historical listing data and rent changes
  - Gather comprehensive property features and amenities
  - Analyze property types and neighborhood information
  - Download high-quality property images and virtual tours
- **Location Data**
  - Scrape individual neighborhood profiles with complete information
  - Extract location-based metrics and walkability scores
  - Gather area demographics and rental statistics
  - Access transportation details and nearby amenities

#### Advanced Scraping Capabilities

- **Pagination Handling**: Automatically navigates through all search result pages
- **Efficient Processing**: Processes only new or updated listings in subsequent runs
- **Change Detection**: Identifies rent changes, availability updates, and new listings
- **Scheduled Monitoring**: Set up automated runs to keep your rental data current
- **Incremental Data Collection**: Build comprehensive rental datasets over time

#### Flexible Scraping Options

- **Search Results**: Extract apartment listings by search criteria
  - Example: `https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses?source=homepage`
- **Individual Listings**: Target specific properties using direct URLs
  - Example: `https://www.rent.com/apartment/evergreen-tahoe-apartments-south-lake-tahoe-ca-lc6245397`

This tool is ideal for:

- US rental market research and analysis
- Rent pricing analysis and competitive intelligence
- Market trend analysis across various cities and neighborhoods
- Building rental databases for business intelligence
- Tracking rent trends and availability in the US rental market

### Features

- **Comprehensive Data Extraction**: Detailed apartment information, pricing, and specifications
- **Dual Scraping Modes**:
  - **Search Results**: Scrape all apartments from search results
  - **Individual Listings**: Target specific properties using direct URLs
- **Flexible Input**: Supports multiple input formats:
  - Search result URLs
  - Direct property URLs
- **Automatic Pagination**: Handles multi-page results automatically
- **Efficient Processing**: Concurrent scraping with configurable concurrency settings
- **Reliable Performance**: Built-in retry mechanisms and proxy support
- **Structured Data Export**: Download rental data in JSON or CSV format for analysis

### Supported Listing Categories

The Rent.com Scraper can extract data from various types of rental listings:

1. **Apartment Complexes** - Multi-unit residential buildings with various floor plans

   - Example: `https://www.rent.com/california/los-angeles/apartments_townhouses_condos_houses`
   - Fields: `floor_plans`, `amenities`, `rent_range`, `availability`, etc.

2. **Individual Units** - Specific apartment units within complexes

   - Example: `https://www.rent.com/apartment/evergreen-tahoe-apartments-south-lake-tahoe-ca-lc6245397`
   - Fields: `bedrooms`, `bathrooms`, `square_footage`, `rent_price`, etc.

3. **Luxury Apartments** - High-end rental properties with premium amenities
   - Example: `https://www.rent.com/california/los-angeles/luxury-apartments`
   - Fields: `luxury_amenities`, `concierge_services`, `premium_features`, etc.

Each category has its own unique data structure and fields, all of which are fully documented in this README.

### Quick Start

1. **Sign up for Apify**: Create your free account at [apify.com](https://apify.com).
2. **Find the Scraper**: Search for "Rent.com Scraper" in the Apify Store.
3. **Configure Input**: Set up your scraping parameters using the input schema.
4. **Run the Scraper**: Execute the scraper on the Apify platform.
5. **Data Collection**: The scraper will output all available rental data.

### Input Configuration

Here's an example of how to set up the input for the Rent.com Scraper:

```json
{
    "startUrls": [
        {
            "url": "https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"
        },
        {
            "url": "https://www.rent.com/apartment/evergreen-tahoe-apartments-south-lake-tahoe-ca-lc6245397"
        }
    ],
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Input Fields Explanation

- `startUrls`: Array of objects containing one of these formats:
  - Search URL: `{"url": "https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"}`
  - Property URL: `{"url": "https://www.rent.com/apartment/evergreen-tahoe-apartments-south-lake-tahoe-ca-lc6245397"}`
- `maxItems`: Maximum number of items to scrape (default: 1000).
- `monitoringMode`: When enabled, only scrapes new listings compared to previous runs (default: false).
- `maxConcurrency`: Maximum number of pages processed simultaneously (default: 10).
- `minConcurrency`: Minimum number of pages processed simultaneously (default: 1).
- `maxRequestRetries`: Number of retries for failed requests (default: 100).
- `proxyConfiguration`: Proxy settings for enhanced scraping reliability.

### Monitoring Mode

When `monitoringMode` is enabled, the scraper will only collect new listings that haven't been seen in previous runs. This is useful for:

- Tracking new properties as they come on the market
- Building a historical archive of property listings
- Monitoring specific areas for new opportunities without duplicating data

#### How Monitoring Mode Works

1. The scraper maintains a record of previously scraped property IDs
2. On subsequent runs with `monitoringMode: true`, it checks each property against this record
3. Only new properties (those not in the record) are processed and added to the output
4. The record is updated with any new property IDs found

### Output Structure

The scraper provides comprehensive information about Rent.com property listings. The output includes detailed property information, location data, amenities, floor plans, and multimedia content. Here's a breakdown of the main components:

#### Sample JSON Output

```json
{
    "__typename": "Listing",
    "addressFull": "1860 Lake Tahoe Blvd, South Lake Tahoe, CA 96150",
    "address": "1860 Lake Tahoe Blvd",
    "bathRange": {
        "__typename": "Range",
        "max": 2,
        "min": 1
    },
    "bathText": "1–2 Baths",
    "bedRange": {
        "__typename": "Range",
        "max": 3,
        "min": 0
    },
    "bedText": "Studio–3 Beds",
    "categoryBadges": [
        "Income Restricted"
    ],
    "cplEligible": true,
    "deals": [
        {
            "__typename": "Deal",
            "couponCategory": "Special Offer",
            "description": "1 month rent free."
        }
    ],
    "dealTypes": [
        {
            "__typename": "DealType",
            "kind": "FREE_TIME",
            "text": "1 Month Free"
        }
    ],
    "hasHdTour": false,
    "hasTotalCostWithFees": false,
    "hasTotalCostWithFeesMessaging": false,
    "hdTours": [],
    "id": "lc6244368",
    "leadPhoneRequired": true,
    "listingTier": "nonBase",
    "location": {
        "__typename": "Location",
        "lng": -120.00857,
        "lat": 38.910057,
        "city": "South Lake Tahoe",
        "zip": "96150",
        "stateAbbr": "CA"
    },
    "mitsPhone": {
        "__typename": "ListingPhoneNumber",
        "raw": null,
        "formatted": null
    },
    "name": "Sugar Pine Village",
    "NV_RPL": 11,
    "optimizedPhotos": [
        {
            "__typename": "OptimizedPhoto",
            "id": "05c10242dc330942e86dea9a289ea556",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "8f0c812a286538742de26a408395b1f8",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "dfb0a06c033a76c0cc9b5014a4389cf6",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "9feec87389dcfa43db51add96469a9ec",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "3220a37f83e070efa7b4fcedea1c9334",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "d40b9099404297b3523bd6567d88bdbf",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "2fced5513a988880887bbaed0be06f52",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "fa4099cab3d6a8ca149886b26cdd20fa",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "90fcd2a1f88fc9c0973c3ecc820185c4",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "0924c40037af2a2e8b1b24fbd54af03d",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "b212095eafe140d3d29d05a4e706562f",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "4da3a2d7fe137f6622758080589d3588",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "2dbb52867892488507748846d64de78d",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "3ee68e271b39518503383e0e24d655dc",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "882f252e6431da2526178fea4b5af703",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "db62484a9a8827039d9d2ad097d26ac7",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "22c2f77ccca5d8636b6da1c7b7bfd526",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "163f3d1654e71d8cd44436f74e55490b",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "4d68c3cdba294a6b4dca19f33b100aa8",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "bf5f3385b75ca574460129e8598fda46",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "f47764755382fca21f960067e70dacb4",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "ab0a38b0303a596090e520138e637ecd",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "baba657f2ab7231db3b09579cde46d61",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "dfb0a06c033a76c0cc9b5014a4389cf6",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "4d68c3cdba294a6b4dca19f33b100aa8",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "ab0a38b0303a596090e520138e637ecd",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "bf5f3385b75ca574460129e8598fda46",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "163f3d1654e71d8cd44436f74e55490b",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "baba657f2ab7231db3b09579cde46d61",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "22c2f77ccca5d8636b6da1c7b7bfd526",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "f47764755382fca21f960067e70dacb4",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "4d68c3cdba294a6b4dca19f33b100aa8",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "ab0a38b0303a596090e520138e637ecd",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "22c2f77ccca5d8636b6da1c7b7bfd526",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "163f3d1654e71d8cd44436f74e55490b",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "bf5f3385b75ca574460129e8598fda46",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "baba657f2ab7231db3b09579cde46d61",
            "caption": null
        },
        {
            "__typename": "OptimizedPhoto",
            "id": "f47764755382fca21f960067e70dacb4",
            "caption": null
        }
    ],
    "phoneApps": null,
    "phoneAppsText": null,
    "phoneAppsOrganic": "5308099453",
    "phoneAppsPush": "5308756472",
    "phoneAppsSem": "5308756472",
    "priceText": "$1,257+",
    "price": 1257,
    "priceDrops": {
        "__typename": "PriceDrops",
        "byFloorplanId": []
    },
    "propertyType": "APARTMENTS",
    "requestTourOptOut": true,
    "revenue": 11,
    "squareFeetText": "384–1072 Sqft",
    "timeZoneId": null,
    "tplsource": "ZILLOW",
    "unitsAvailableText": "Available Now",
    "unitsAvailable": null,
    "urlPathname": "/apartment/sugar-pine-village-south-lake-tahoe-ca-lc6244368",
    "videos": [],
    "siteId": "lc6244368",
    "profileUrl": "/apartment/sugar-pine-village-south-lake-tahoe-ca-lc6244368",
    "basicInfo": {
        "id": "lc6244368",
        "name": "Sugar Pine Village",
        "address": "1860 Lake Tahoe Blvd, South Lake Tahoe, CA 96150",
        "price": "$1,257+",
        "beds": "Studio–3 Beds",
        "baths": "1–2 Baths",
        "sqft": "384–1072 Sqft",
        "location": {
            "__typename": "Location",
            "lng": -120.00857,
            "lat": 38.910057,
            "city": "South Lake Tahoe",
            "zip": "96150",
            "stateAbbr": "CA"
        }
    }
}
```

### Output Fields Explanation

The scraper returns a rich dataset for each property from Rent.com's GraphQL API. Below is a detailed explanation of the main fields in the JSON output.

#### Core Property Information

- `__typename` (String): GraphQL type identifier, typically "Listing"
- `id` (String): Unique identifier for the property listing (e.g., "lc6244368")
- `name` (String): The name of the property (e.g., "Sugar Pine Village")
- `addressFull` (String): Complete street address with city, state, and zip
- `address` (String): Street address only
- `propertyType` (String): Type of property (e.g., "APARTMENTS")
- `listingTier` (String): The advertising tier level (e.g., "nonBase")
- `urlPathname` (String): URL path to the property's detail page on Rent.com
- `siteId` (String): Alternative identifier for the listing
- `profileUrl` (String): Full URL path to the property profile

#### Pricing Information

- `price` (Number): Starting monthly rent price in dollars
- `priceText` (String): Formatted price display text (e.g., "$1,257+")
- `priceDrops` (Object): Information about recent price reductions
  - `byFloorplanId` (Array): Price drops organized by floor plan

#### Bedroom and Bathroom Information

- `bedRange` (Object): Range of bedroom counts available
  - `min` (Number): Minimum number of bedrooms
  - `max` (Number): Maximum number of bedrooms
- `bedText` (String): Human-readable bedroom range (e.g., "Studio–3 Beds")
- `bathRange` (Object): Range of bathroom counts available
  - `min` (Number): Minimum number of bathrooms
  - `max` (Number): Maximum number of bathrooms
- `bathText` (String): Human-readable bathroom range (e.g., "1–2 Baths")
- `squareFeetText` (String): Range of unit sizes (e.g., "384–1072 Sqft")

#### Location Information

- `location` (Object): Geographic coordinates and address details
  - `lat` (Number): Latitude coordinate
  - `lng` (Number): Longitude coordinate
  - `city` (String): City name
  - `zip` (String): ZIP/postal code
  - `stateAbbr` (String): Two-letter state abbreviation

#### Media and Photos

- `optimizedPhotos` (Array): Collection of property photos optimized for web display
  - Each photo object contains:
    - `id` (String): Unique photo identifier
    - `caption` (String): Photo description (may be null)
- `videos` (Array): Collection of property videos
- `hdTours` (Array): High-definition virtual tour information
- `hasHdTour` (Boolean): Indicates if HD tours are available

#### Special Offers and Deals

- `deals` (Array): Active promotional offers
  - `couponCategory` (String): Type of offer (e.g., "Special Offer")
  - `description` (String): Details of the promotion (e.g., "1 month rent free")
- `dealTypes` (Array): Categorized deal information
  - `kind` (String): Deal category (e.g., "FREE\_TIME")
  - `text` (String): Display text for the deal (e.g., "1 Month Free")
- `categoryBadges` (Array): Special category tags (e.g., "Income Restricted")

#### Contact and Lead Information

- `leadPhoneRequired` (Boolean): Whether phone number is required for leads
- `mitsPhone` (Object): MITS (Multifamily Information & Transaction Standard) phone data
  - `raw` (String): Unformatted phone number
  - `formatted` (String): Formatted phone number
- `phoneApps` (String): General phone apps number
- `phoneAppsText` (String): Display text for phone apps
- `phoneAppsOrganic` (String): Phone number for organic traffic
- `phoneAppsPush` (String): Phone number for push notifications
- `phoneAppsSem` (String): Phone number for SEM (Search Engine Marketing) campaigns

#### Availability and Features

- `unitsAvailable` (Number): Number of currently available units (may be null)
- `unitsAvailableText` (String): Availability status text (e.g., "Available Now")
- `requestTourOptOut` (Boolean): Whether property has opted out of tour requests
- `NV_RPL` (Number): Revenue ranking or priority level
- `revenue` (Number): Revenue classification number
- `cplEligible` (Boolean): Whether property is eligible for Cost Per Lead programs
- `hasTotalCostWithFees` (Boolean): Indicates if total cost including fees is displayed
- `hasTotalCostWithFeesMessaging` (Boolean): Whether messaging about total costs is shown

#### Time and Source Information

- `timeZoneId` (String): Time zone identifier (may be null)
- `tplsource` (String): Third-party listing source (e.g., "ZILLOW")

#### Structured Data for Applications

- `basicInfo` (Object): Consolidated basic information for easy access
  - `id` (String): Property ID
  - `name` (String): Property name
  - `address` (String): Full address
  - `price` (String): Price text
  - `beds` (String): Bedroom range text
  - `baths` (String): Bathroom range text
  - `sqft` (String): Square footage range text
  - `location` (Object): Location coordinates and details

***

### Explore More Scrapers

If you found this Apify Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/B9QxpGHylsP0guHns/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

***

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/rent-com-scraper`).

**Purpose:** Extract US rental property listings from Rent.com — one row per apartment/community with pricing, beds/baths, location, photos, deals and contact phones, from search URLs or direct listing URLs.

**Minimal input:**

```json
{
    "startUrls": ["https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"],
    "maxItems": 50,
    "monitoringMode": false,
    "flattenOutput": false,
    "enrichEmails": false,
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100
}
```

For a single property instead of a search, pass a direct listing URL, e.g. `"https://www.rent.com/apartment/evergreen-tahoe-apartments-south-lake-tahoe-ca-lc6245397"`.

**Output:** one dataset row per listing — id, name, addressFull, address, propertyType, listingTier, urlPathname, siteId, profileUrl, price, priceText, priceDrops, bedRange {min, max}, bedText, bathRange {min, max}, bathText, squareFeetText, location {lat, lng, city, zip, stateAbbr}, optimizedPhotos, videos, hdTours, deals, dealTypes, categoryBadges, phoneAppsOrganic, unitsAvailableText, tplsource, basicInfo.

**Behaviors an agent should know:**

- `startUrls` accepts both search-results URLs and direct `/apartment/` listing URLs, mixed in one run; the URL type is detected automatically.
- Always set `maxItems` (default 1000). An uncapped search run paginates through every result page for the area.
- `monitoringMode: true` skips listings already seen in previous runs (tracked by Rent.com ID in a Key-Value store) and stops paginating once a page yields no new listings — use it for incremental/scheduled runs.
- `flattenOutput: true` flattens nested fields with underscore separators for CSV/Excel.
- `enrichEmails: true` is opt-in and adds `contactEmail`/`contactWebsite` plus an `emailEnrichment` object; billed only per email actually found, never for misses, and works mainly for larger managed communities with their own website.
- Billing: Pay-per-event billing — see the Pricing tab on the actor page.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Rent Group Inc. or any of its subsidiaries or parent companies. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Rent.com rental listing pages — no authenticated endpoints, paid features, or content behind the rent.com login wall. Users are responsible for ensuring their use complies with Rent.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

***

### SEO Keywords

rent.com scraper, scrape rent.com, rent.com API, rent.com listings scraper, Apify rent.com, apartment scraper, rental listings scraper, apartment data extraction, us rental market data, rent price analysis, rental market research, real estate lead generation, property listings export, apartment availability data, rental trends data, us apartments data, real estate data scraper, rental property intelligence

# Actor input Schema

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

URLs to start with. The actor currently supports URLs such as `https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses`.

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

Maximum number of items that will be scraped.

## `monitoringMode` (type: `boolean`):

When enabled, listings already seen in previous runs (tracked by their rent.com ID in a Key-Value store) are skipped, and pagination stops as soon as a page returns no new listings. Use this for incremental/scheduled runs.

## `flattenOutput` (type: `boolean`):

When enabled, nested fields in each dataset item are flattened into a single level using underscores as the separator (e.g. `location.city` becomes `location_city`). Arrays are preserved. Useful when exporting to CSV or feeding into tools that don't handle nested JSON well.

## `enrichEmails` (type: `boolean`):

If enabled, the actor tries to find a contact email for each property by locating the management company's website and reading its contact page (e.g. leasing@, info@). Adds `contactEmail` and `contactWebsite` columns plus a detailed `emailEnrichment` object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses — works mainly for larger managed communities with their own website; individual/owner listings usually have no published email, so use the phone number instead. Adds time per page.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

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

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"
  ],
  "maxItems": 1000,
  "monitoringMode": false,
  "flattenOutput": false,
  "enrichEmails": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100
}
```

# Actor output Schema

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

No description

# 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": [
        "https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/rent-com-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": ["https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/rent-com-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "https://www.rent.com/california/counties/el-dorado/apartments_townhouses_condos_houses"
  ]
}' |
apify call memo23/rent-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/rent-com-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZmHhwmuWTvqhE45hR/builds/dcxQZpcc5bPgAhyxi/openapi.json
