# RentEst Rent Estimate Scraper (`crawlerbros/rentest-rent-estimate-scraper`) Actor

Get free instant rent estimates and comparable rentals from RentEst.ai for US addresses or ZIP codes - estimated rent, percentile rents, confidence score, and nearby comps.

- **URL**: https://apify.com/crawlerbros/rentest-rent-estimate-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## RentEst Rent Estimate Scraper

Get free instant rent estimates and comparable rentals from [RentEst.ai](https://rentest.ai) for any US address or ZIP code — estimated monthly rent, percentile rent range, confidence score, and up to 10 nearby comparable rentals per location. No login, no API key, no proxy required.

### What this actor does

- Submits each input address or ZIP code to RentEst's free, no-signup rent-estimate tool
- Returns an estimated monthly rent, average rent, median (50th percentile), 25th/75th percentile rents, and a confidence score
- Returns up to 10 nearby comparable rental properties used to build the estimate — address, rent, distance, beds/baths, square footage, similarity score, and last-seen date
- Filters comparables by property type (apartment/condo or single-family house), bedroom count, bathroom count, and optional square footage
- Empty fields are omitted from every record

### Output per location

- `queryAddress` — the address or ZIP you submitted
- `latitude`, `longitude` — resolved coordinates
- `estimatedRent` — the headline monthly rent estimate (USD)
- `averageRent`, `medianRent` — mean and 50th-percentile rent among matched comparables
- `percentile25Rent`, `percentile75Rent` — rent range bounds
- `confidencePercent` — RentEst's confidence score for the estimate (0–100)
- `matchedPropertiesCount` — how many comparable rentals were used
- `searchRadiusMiles` — the radius searched to find comparables
- `modelUsed` — the pricing model RentEst used internally
- `dataSources` — underlying listing sources (e.g. Zillow, Apartments.com)
- `bedrooms`, `bathrooms`, `propertyType`, `sqft` — the filters used for this estimate
- `comparables[]` — up to 10 nearby rentals, each with `address`, `rent`, `distanceKm`, `bedrooms`, `bathrooms`, `sqft`, `similarityPercent`, `lastSeenDate`, `latitude`, `longitude`
- `currency` — always `USD`
- `sourceUrl`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `locations` | array | *(required)* | US addresses or 5-digit ZIP codes to get a rent estimate for |
| `propertyType` | select | `apartment` | `apartment` (Apartment/Condo) or `house` (Single-Family) |
| `bedrooms` | select | `2` | `0` (studio) through `5` |
| `bathrooms` | select | `1` | `1`, `1.5`, `2`, `2.5`, `3`, `3.5`, `4` |
| `sqft` | integer | – | Optional interior square footage (100–10000) to narrow the comparable match |
| `maxItems` | integer | `20` | Hard cap on how many locations to process (1–100) |

#### Example: rent estimate for a list of ZIP codes

```json
{
  "locations": ["10001", "90210", "60614"],
  "propertyType": "apartment",
  "bedrooms": "2",
  "bathrooms": "1"
}
```

#### Example: single-family house estimate for a street address

```json
{
  "locations": ["123 Main St, Austin, TX"],
  "propertyType": "house",
  "bedrooms": "4",
  "bathrooms": "2.5",
  "sqft": 2200
}
```

### Use cases

- **Landlords & property managers** — sanity-check asking rent against comparable listings before renewing or listing a unit
- **Real estate investors** — screen prospective rental properties for cash-flow potential across multiple ZIP codes at once
- **Relocation & apartment hunting** — get a fair-market rent baseline for neighborhoods before touring
- **PropTech & market research** — build rent-trend datasets across metros
- **Section 8 / affordable housing analysis** — compare market rent estimates against subsidy payment standards

### FAQ

**What's RentEst?** A free rent-estimate and comparables tool at [rentest.ai](https://rentest.ai) that surfaces recent nearby rental listings and computes a rent estimate, similar to Zillow's Rent Zestimate or Rentometer.

**Do I need an account or API key?** No — the actor uses the same free, no-signup endpoint RentEst's own website uses for its public "Rent Estimate by Address" tool.

**Why did a location return no result?** RentEst needs enough nearby comparable rentals of the requested property type/bed/bath combination to produce a confident estimate. Very rural ZIP codes or unusual property types may return no comparables — try a nearby address or a broader bed/bath filter.

**What does `confidencePercent` mean?** RentEst's internal confidence score based on how many, how similar, and how recent the matched comparable rentals are. Higher is more reliable.

**What's the difference between `averageRent` and `medianRent`?** `averageRent` is the mean rent across matched comparables; `medianRent` is the 50th-percentile (middle) rent — less skewed by outliers.

**Can I filter to houses only?** Yes — set `propertyType` to `house` to restrict comparables to single-family homes.

**How many comparables are returned per location?** Up to 10 — the same set RentEst's own estimate is calculated from.

# Actor input Schema

## `locations` (type: `array`):

US street addresses or 5-digit ZIP codes to get a rent estimate for. Each is geocoded and priced automatically by RentEst's free rent-estimate tool.

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

Restrict comparable rentals to a building type.

## `bedrooms` (type: `string`):

Number of bedrooms to filter comparable rentals by.

## `bathrooms` (type: `string`):

Number of bathrooms to filter comparable rentals by.

## `sqft` (type: `integer`):

Optional interior square footage to narrow the comparable-rentals match. Leave blank to let RentEst estimate without a size filter.

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

Hard cap on how many locations to process (one output record per successfully resolved location).

## Actor input object example

```json
{
  "locations": [
    "10001",
    "90210",
    "60614"
  ],
  "propertyType": "apartment",
  "bedrooms": "2",
  "bathrooms": "1",
  "maxItems": 20
}
```

# Actor output Schema

## `rentEstimates` (type: `string`):

Dataset containing all scraped rent estimates.

# 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 = {
    "locations": [
        "10001",
        "90210",
        "60614"
    ],
    "propertyType": "apartment",
    "bedrooms": "2",
    "bathrooms": "1",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/rentest-rent-estimate-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 = {
    "locations": [
        "10001",
        "90210",
        "60614",
    ],
    "propertyType": "apartment",
    "bedrooms": "2",
    "bathrooms": "1",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/rentest-rent-estimate-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 '{
  "locations": [
    "10001",
    "90210",
    "60614"
  ],
  "propertyType": "apartment",
  "bedrooms": "2",
  "bathrooms": "1",
  "maxItems": 20
}' |
apify call crawlerbros/rentest-rent-estimate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/rentest-rent-estimate-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/JqdkxQcuv2Nj7XK91/builds/2U2ntDN1zOeSxWEud/openapi.json
