# Forrent Property Search Scraper (`alexist/forrent-property-search-scraper`) Actor

Scrape rental property listings from ForRent.com with detailed data on prices, ratings, photos, videos, and broker info. Ideal for real estate investors, market researchers, and property aggregators seeking structured rental data at scale.

- **URL**: https://apify.com/alexist/forrent-property-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## ForRent Property Search Scraper: Extract Rental Listings & Market Data

***

### What Is ForRent.com?

ForRent.com is one of the largest online rental property marketplaces in the United States, hosting millions of apartment, house, and multi-family listings. Property managers, landlords, and real estate agents use it to market rentals, while tenants browse available units across all major metropolitan areas. The platform provides rich multimedia content, customer reviews, and detailed property information — but extracting and analyzing this data manually is labor-intensive.

The **ForRent Property Search Scraper** automates this process, collecting structured property records directly from search results pages.

***

### Overview

The **ForRent Property Search Scraper** extracts comprehensive property listing data from ForRent.com search results, transforming unstructured web content into clean, machine-readable records. It is ideal for:

- **Real estate investors** tracking rental market trends and competitor pricing
- **Market researchers** analyzing rental availability by region and property type
- **Property aggregators** powering rental search engines and APIs
- **Data analysts** building datasets for affordability and housing studies
- **Property managers** monitoring listings and market positioning

Key features include bulk URL support for batch scraping, configurable item limits, fault tolerance for failed URLs, and comprehensive output spanning 30+ data fields per listing.

***

### Input Format

The scraper accepts a JSON configuration object specifying which pages to scrape:

```json
{
  "urls": [
    "https://www.forrent.com/find/tx/texas-city/page-2"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Type | Description |
|---|---|---|
| `urls` | Array | List of ForRent search result page URLs to scrape (e.g., city/state/page filters) |
| `max_items_per_url` | Integer | Maximum number of property listings to extract per URL (default: 100, max: 200) |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues running if some URLs fail; if `false`, stops on first error |

**Example URLs:**

- `https://www.forrent.com/find/tx/texas-city/page-1` — Texas City, Texas listings
- `https://www.forrent.com/find/ca/los-angeles/page-2` — Los Angeles, California listings

> **Tip:** You can paste multiple URLs covering different cities, states, or price ranges to build comprehensive regional datasets.

***

### Output Format

**Sample output**

```json
{
  "is_profile": false,
  "site_id": "7rxz9wx",
  "listing_key": "7rxz9wx",
  "ad_level": "Premier",
  "name": "36 18th Ave N, Texas City, TX 77590",
  "geography": {
    "street_address": "36 18th Ave N",
    "city_name": "Texas City",
    "state_code": "TX",
    "zip_code": "77590",
    "latitude": 29.4024233,
    "longitude": -94.895175
  },
  "blended_rating": null,
  "last_updated": "2026-07-23T10:08:15.713Z",
  "leads": {
    "email": {
      "required": [],
      "optional": [],
      "is_on_demand": true
    },
    "phone": {
      "formatted": "(832) 280-1696",
      "url": "tel:+18322801696"
    }
  },
  "floor_plan_summary": {
    "square_feet": {
      "low": 1500,
      "high": 1500,
      "formatted": "1,500 sq. ft."
    },
    "bathrooms": {
      "low": 2,
      "high": 2,
      "formatted": "2 Baths"
    },
    "matching": {
      "beds": {
        "low": 4,
        "high": 4,
        "range": "4",
        "formatted": "4 Beds"
      },
      "price": {
        "low": 1850,
        "high": 1850,
        "formatted": "$1,850",
        "call_for_price": false,
        "base_rent_formatted": "$1,850"
      }
    },
    "grouped_pricings": [
      {
        "beds": "4 Beds",
        "price": "$1,850"
      }
    ],
    "has_per_bed_pricing": false
  },
  "media": {
    "main_photo": {
      "source": "https://images1.forrent.com/i2/VrzMnC6PmeNfks8PNiL2nBAfvNsgrzJii2OQe1y_j_Q/{options}/image.jpg",
      "caption": "Building Photo",
      "is_landscape": true
    },
    "image_options": {
      "1880x900": 112,
      "180x140": 104,
      "1400x720": 113,
      "2048x2048": 116,
      "200x_v": 119,
      "430x220": 118,
      "1024x1024": 114,
      "984x658": 102,
      "325x_v": 115,
      "984x558": 110,
      "337x206": 106,
      "1240x844": 111,
      "215x110": 105,
      "650x_v": 117
    },
    "images": [
      {
        "source": "https://images1.forrent.com/i2/VrzMnC6PmeNfks8PNiL2nBAfvNsgrzJii2OQe1y_j_Q/{options}/image.jpg",
        "caption": "Building Photo",
        "is_landscape": true
      }
    ]
  },
  "has_video": false,
  "has_tours": false,
  "image_count": 20,
  "profile_url": "/tx/texas-city/36-18th-ave-n/7rxz9wx",
  "seo_name": "36 18th Ave N",
  "rating_stars": null,
  "property_type": "Condo",
  "property_type_text": "Condo for Rent",
  "site_texts": {},
  "pmc_info": null,
  "is_homes_listing": false,
  "is_multi_family": null,
  "is_monthly_fees_included_in_rent": false,
  "is_in_fee_disclosure_state": false,
  "is_direct_broker": true,
  "property_fee_list": [
    {
      "label": "Base Rent",
      "value": "$1,850"
    },
    {
      "label": "Required Monthly Fees",
      "value": "None"
    }
  ],
  "from_url": "https://www.forrent.com/find/tx/texas-city/page-2"
}
```

Each scraped property listing returns a detailed record with 30+ fields:

#### Listing Identification

| Field | Meaning |
|---|---|
| `site_id` | Unique ForRent.com property identifier |
| `listing_key` | Internal listing key for database integration |
| `is_profile` | Whether the listing is a property profile (vs. individual unit) |
| `is_homes_listing` | Flag indicating if this is a single-family home |
| `is_multi_family` | Flag for multi-family property (apartment complex, duplex, etc.) |

#### Property Information

| Field | Meaning |
|---|---|
| `name` | Official property name or street address |
| `seo_name` | Search-engine-optimized version of property name |
| `property_type` | Numeric property type code (apartment, house, condo, etc.) |
| `property_type_text` | Human-readable property type (e.g., "Apartment", "House") |
| `geography` | Geographic details including city, state, ZIP code, and coordinates |

#### Ratings & Reviews

| Field | Meaning |
|---|---|
| `blended_rating` | Aggregate rating score from tenant reviews |
| `rating_stars` | Number of stars displayed (e.g., 4.5 out of 5) |
| `leads` | Number of inquiries or leads generated by the listing |

#### Media & Visual Content

| Field | Meaning |
|---|---|
| `media` | Array of media objects (images, videos, tours) |
| `has_video` | Boolean flag: property has video walkthrough |
| `has_tours` | Boolean flag: property has virtual 3D or video tours |
| `image_count` | Total number of photos uploaded |

**Example media output:**

```json
{
  "has_video": true,
  "has_tours": true,
  "image_count": 24
}
```

This indicates the property has promotional video, virtual tours, and 24 photos for browsing.

#### Pricing & Fees

| Field | Meaning |
|---|---|
| `floor_plan_summary` | Summary of available unit types and pricing (studios, 1BR, 2BR, etc.) |
| `is_monthly_fees_included_in_rent` | Whether advertised rent includes HOA/maintenance fees |
| `is_in_fee_disclosure_state` | Whether the property is in a state requiring fee transparency |
| `property_fee_list` | Detailed breakdown of fees (utilities, parking, pet fees, etc.) |

#### Management & Broker

| Field | Meaning |
|---|---|
| `pmc_info` | Property management company details |
| `is_direct_broker` | Whether property is managed by the owner directly (vs. third-party broker) |

#### Metadata

| Field | Meaning |
|---|---|
| `ad_level` | Promotion level of the listing (free, standard, premium, VIP, etc.) |
| `profile_url` | Direct URL to the property's profile page on ForRent.com |
| `last_updated` | Timestamp when the listing was last modified |
| `site_texts` | Text blocks (descriptions, amenities, lease terms) |

***

### How to Use

1. **Identify search pages** — Visit ForRent.com and search by city, state, price range, or other filters. Note the result page URLs.
2. **Prepare URLs** — Copy search result URLs into the `urls` array. You can add multiple pages or regions in a single run.
3. **Set limits** — Adjust `max_items_per_url` based on your needs (e.g., 50 for quick sampling, 200 for full dataset).
4. **Enable fault tolerance** — Set `ignore_url_failures: true` for large batch runs to prevent interruption if one URL fails.
5. **Start the scraper** — Trigger the actor and monitor progress in the log.
6. **Export data** — Download results as JSON, CSV, or Excel for analysis, CRM import, or database loading.

**Common use cases:**

- **Bulk rent analysis:** Scrape 5-10 city pages to build a regional pricing database.
- **Competitive intelligence:** Monitor competitor property listings and review ratings.
- **Market snapshots:** Capture available inventory on a specific date for trend analysis.

***

### Use Cases & Business Value

- **Real estate analytics:** Build rental price indexes by city, neighborhood, or property type
- **Investment screening:** Identify high-demand markets and undervalued opportunities
- **Content aggregation:** Feed ForRent data into your own rental search platform or app
- **Academic research:** Study housing affordability, tenant reviews, and market dynamics
- **Lead generation:** Monitor new listings and contact property managers at scale

The scraper delivers clean, consistent data that saves weeks of manual browsing and spreadsheet wrangling — enabling faster market research, better investment decisions, and scalable data pipelines.

***

### Conclusion

The **ForRent Property Search Scraper** provides real estate professionals and researchers with instant, structured access to rental market data. By automating extraction of 30+ fields per listing, it empowers data-driven decision-making in the competitive rental housing market. Start scraping today and unlock insights that would take months to gather manually.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.forrent.com/find/tx/texas-city/page-2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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 = {
    "urls": [
        "https://www.forrent.com/find/tx/texas-city/page-2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/forrent-property-search-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 = {
    "urls": ["https://www.forrent.com/find/tx/texas-city/page-2"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/forrent-property-search-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 '{
  "urls": [
    "https://www.forrent.com/find/tx/texas-city/page-2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/forrent-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alexist/forrent-property-search-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/wbfM3o5Qq7A3ZViob/builds/JrvsJA5qppYiJ9a20/openapi.json
