# Real Estate Investment Analyzer — Deal Score, Cap Rate & NOI (`andrew_avina/real-estate-intelligence-mcp`) Actor

Underwrite rental properties — cap rate, GRM, monthly cash flow, DSCR, Deal Score (1-10). Filter by price, beds, cash flow, cap rate, days on market. Part of Real Estate Intelligence Suite. MCP-native: 'Best cash flow deals under $200K in Cleveland.'

- **URL**: https://apify.com/andrew\_avina/real-estate-intelligence-mcp.md
- **Developed by:** [Andrew Avina](https://apify.com/andrew_avina) (community)
- **Categories:** MCP servers, Business
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Real Estate Investment Intelligence MCP

The only Apify actor that combines **live property listings** with **investment-grade financial analysis** — cap rate, GRM, cash flow, cash-on-cash return, and a proprietary **Deal Score (1-10)** — all in a single API call.

Powered by Redfin property data + HUD Fair Market Rents + FEMA flood zone risk + investment metric engine. No API key required for core functionality.

---

### Why this actor?

Every other property scraper gives you raw listing data. This one tells you whether the deal is **worth your money**.

| What it calculates | Why it matters |
|--------------------|----------------|
| Cap Rate | Core yield metric used by every institutional investor |
| GRM (Gross Rent Multiplier) | Quick filter — GRM < 12 = worth underwriting |
| Cash Flow (monthly, post-debt) | The number that actually hits your bank account |
| Cash-on-Cash Return | ROI on deployed capital, apples-to-apples vs. stocks |
| Rent-to-Price Ratio | The "1% rule" metric — highest correlation with cash flow |
| Deal Score 1-10 | Proprietary weighted composite of all four factors |

---

### Inputs

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `location` | string | `"78701"` | ZIP code, city/state ("Austin, TX"), or address fragment |
| `price_min` | integer | `0` | Minimum list price filter |
| `price_max` | integer | — | Maximum list price filter |
| `beds_min` | integer | `0` | Minimum bedrooms |
| `baths_min` | number | `0` | Minimum bathrooms |
| `listing_type` | string | `"for_sale"` | `for_sale` or `for_rent` |
| `days_on_market_max` | integer | — | Max days on market (use 60+ to find motivated sellers) |
| `deal_score_min` | integer | `0` | Minimum deal score filter (1-10; use 7+ for strong cash flow) |
| `limit` | integer | `20` | Max properties to return (up to 100) |

---

### Outputs (50+ fields per property)

#### Property Details
| Field | Type | Description |
|-------|------|-------------|
| `zpid` | string | Property identifier |
| `address` | string | Street address |
| `city` | string | City |
| `state` | string | State abbreviation |
| `zip` | string | ZIP code |
| `neighborhood` | string | Neighborhood name |
| `latitude` | float | Latitude |
| `longitude` | float | Longitude |
| `price` | float | List price (USD) |
| `beds` | integer | Bedrooms |
| `baths` | float | Bathrooms |
| `sqft` | float | Interior square footage |
| `lot_size_sqft` | float | Lot size in sqft |
| `year_built` | integer | Year built |
| `property_type` | string | SFR / Condo / Townhouse / MFR / Land |
| `listing_type` | string | `for_sale` or `for_rent` |
| `days_on_market` | integer | Calendar days listed |
| `price_per_sqft` | float | Price ÷ sqft |
| `listing_url` | string | Link to full listing |
| `photos_count` | integer | Number of listing photos |

#### Valuation
| Field | Type | Description |
|-------|------|-------------|
| `zestimate` | float | Zillow Zestimate (if available) |
| `rent_zestimate` | float | Zillow Rent Zestimate (if available) |
| `price_vs_zestimate_pct` | float | `(price - zestimate) / zestimate × 100` — negative = below market |
| `hud_fmr_2br` | integer | HUD 2024 Fair Market Rent for 2BR in this market (USD/mo) |

#### Risk Assessment
| Field | Type | Description |
|-------|------|-------------|
| `fema_flood_zone` | string | FEMA flood zone designation (X=minimal, AE=high, V=coastal) |
| `flood_risk_category` | string | `Minimal` / `Moderate` / `High` / `Very High (Coastal)` |

#### Walkability
| Field | Type | Description |
|-------|------|-------------|
| `walk_score` | integer | Walk Score 0-100 |
| `transit_score` | integer | Transit Score 0-100 |
| `bike_score` | integer | Bike Score 0-100 |

#### Schools
| Field | Type | Description |
|-------|------|-------------|
| `elementary_school` | string | Assigned elementary school |
| `middle_school` | string | Assigned middle school |
| `high_school` | string | Assigned high school |
| `school_rating` | integer | School rating 1-10 |

#### Demographics
| Field | Type | Description |
|-------|------|-------------|
| `median_household_income` | integer | Median HH income (Census ACS) |
| `poverty_rate` | float | Poverty rate % |
| `population` | integer | ZIP population |

#### Investment Metrics ⭐
| Field | Type | Description |
|-------|------|-------------|
| `estimated_monthly_rent` | integer | Projected monthly rent (rent Zestimate → HUD FMR → 0.7% rule) |
| `annual_gross_rent` | integer | Annual gross rental income |
| `annual_operating_expenses` | integer | 45% of gross rent (vacancy+maint+mgmt+tax+ins) |
| `annual_noi` | integer | Net Operating Income |
| `cap_rate` | float | Cap rate % — NOI ÷ price |
| `grm` | float | Gross Rent Multiplier — price ÷ annual gross rent |
| `monthly_mortgage_piti` | integer | Principal+Interest on 80% LTV, 7.5% 30yr fixed |
| `monthly_tax_insurance_est` | integer | Property tax + insurance estimate |
| `total_monthly_payment_est` | integer | All-in monthly carrying cost |
| `monthly_cash_flow_est` | integer | Monthly cash flow (rent − opex − mortgage) |
| `annual_cash_flow_est` | integer | Annualized cash flow |
| `cash_on_cash_return_pct` | float | Annual cash flow ÷ 20% down payment × 100 |
| `rent_to_price_ratio_pct` | float | Monthly rent ÷ price × 100 (1% rule benchmark) |
| `deal_score` | integer | **1-10 Deal Score** (see algorithm below) |
| `deal_score_breakdown` | string | JSON breakdown of score components |

---

### Deal Score Algorithm

The Deal Score is a **0–10 composite** based on four independently scored components:

| Component | Max Points | Thresholds |
|-----------|-----------|-----------|
| **Rent-to-Price Ratio** | 3 | ≥0.9% = 3pts, ≥0.7% = 2pts, ≥0.5% = 1pt |
| **Cap Rate** | 3 | ≥8% = 3pts, ≥6% = 2pts, ≥4% = 1pt |
| **Days on Market** | 2 | ≥60 = 2pts (motivated seller), ≥30 = 1pt |
| **Monthly Cash Flow** | 2 (min -2) | ≥$500 = 2pts, ≥$200 = 1pt, ≥$0 = 0pts, negative = penalty |

**Score guide:**
- 8-10: Strong cash-flow deal — underwrite immediately
- 6-7: Solid — worth deeper analysis
- 4-5: Marginal — appreciation play or needs value-add
- 1-3: Cash-flow negative — only viable for speculation or 1031 exchange

---

### Example Use Cases

#### Find motivated sellers with cash flow potential
```json
{
  "location": "44103",
  "price_max": 200000,
  "beds_min": 3,
  "days_on_market_max": 45,
  "deal_score_min": 7,
  "limit": 20
}
````

#### Screen multi-family properties in a market

```json
{
  "location": "Kansas City, MO",
  "price_min": 150000,
  "price_max": 500000,
  "beds_min": 4,
  "deal_score_min": 6,
  "limit": 50
}
```

#### Scan a metro for SFRs near the 1% rule

```json
{
  "location": "Memphis, TN",
  "price_max": 250000,
  "beds_min": 3,
  "deal_score_min": 7,
  "limit": 30
}
```

***

### Market Intelligence It Provides

**Cash flow markets** (high deal scores, lower appreciation): Cleveland OH, Indianapolis IN, Memphis TN, Kansas City MO, Birmingham AL, Detroit MI

**Appreciation markets** (lower deal scores, high growth): Austin TX, Denver CO, Seattle WA, Sacramento CA

**Balanced markets**: Charlotte NC, Nashville TN, Columbus OH, Raleigh NC, Tampa FL

***

### Pricing

| Volume | Price per 1,000 properties |
|--------|---------------------------|
| 1–99 properties | **$8.00/1,000** |
| 100–999 properties | **$5.00/1,000** |
| 1,000+ properties | **$3.00/1,000** |

Each property record counts as one event. Investment metrics are included at no additional cost.

***

### Data Sources

| Source | Data Provided | Authentication |
|--------|---------------|----------------|
| Redfin | Live listings, price, beds/baths, sqft, DOM | None required |
| HUD FMR 2024 | Fair Market Rents by state & bedroom count | Built-in |
| Investment Engine | Cap rate, GRM, cash flow, deal score | Calculated |
| FEMA NFIP | Flood zone designation | None required |
| Census ACS | Neighborhood demographics | Built-in |

### Fallback Data

If live APIs are unreachable, returns 15 curated investment property records spanning 15 US markets (Cleveland OH, Indianapolis IN, Memphis TN, Birmingham AL, Charlotte NC, Austin TX, Scottsdale AZ, Kansas City MO, Cape Coral FL, Columbus OH, Greensboro NC, Sacramento CA, Atlanta GA, Nashville TN, Denver CO) — with all 50+ fields and pre-calculated investment metrics.

## Actor input object example

```json
{}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("andrew_avina/real-estate-intelligence-mcp").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("andrew_avina/real-estate-intelligence-mcp").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 '{}' |
apify call andrew_avina/real-estate-intelligence-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=andrew_avina/real-estate-intelligence-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Real Estate Investment Analyzer — Deal Score, Cap Rate & NOI",
        "description": "Underwrite rental properties — cap rate, GRM, monthly cash flow, DSCR, Deal Score (1-10). Filter by price, beds, cash flow, cap rate, days on market. Part of Real Estate Intelligence Suite. MCP-native: 'Best cash flow deals under $200K in Cleveland.'",
        "version": "0.0",
        "x-build-id": "8Nw8eBj2sKfTxdSDy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/andrew_avina~real-estate-intelligence-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-andrew_avina-real-estate-intelligence-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/andrew_avina~real-estate-intelligence-mcp/runs": {
            "post": {
                "operationId": "runs-sync-andrew_avina-real-estate-intelligence-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/andrew_avina~real-estate-intelligence-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-andrew_avina-real-estate-intelligence-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {}
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
