# Realtor Property Scraper (`agentx/realtor-property-scraper`) Actor

Scrape property listings from Realtor.com across all 50 US states. Extract MLS data, pricing, AVM valuations, agent contacts, photos, and open houses for 7 listing types.

- **URL**: https://apify.com/agentx/realtor-property-scraper.md
- **Developed by:** [AgentX](https://apify.com/agentx) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 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.
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 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

## Realtor Property Scraper - US Real Estate Data API for MLS, Agent Contacts & AVM Valuations

**Extract 10,000+ US property listings from Realtor.com in one API call.** This real estate scraper delivers 50+ data fields per property including MLS details, agent contacts, automated valuation model (AVM) estimates, photos, and open house schedules. Covers all 50 states across 7 listing types — for sale, for rent, sold, pending, and more.

[![For Sale](https://img.shields.io/badge/For_Sale-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/realtor-property-scraper?fpr=aiagentapi) [![For Rent](https://img.shields.io/badge/For_Rent-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/realtor-property-scraper?fpr=aiagentapi) [![Sold](https://img.shields.io/badge/Sold-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/realtor-property-scraper?fpr=aiagentapi) [![All 50 States](https://img.shields.io/badge/All_50_States-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/realtor-property-scraper?fpr=aiagentapi) [![50+ Fields](https://img.shields.io/badge/50+_Fields-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/realtor-property-scraper?fpr=aiagentapi)

---

### Why Choose This Real Estate Scraper API

#### The Most Complete US Property Data Extraction Solution

**🏠 7 Listing Types in One API Call**
Extract for_sale, for_rent, sold, pending, off_market, new_community, and ready_to_build listings simultaneously. No need to run multiple queries or manage separate tools per status.

**💰 Full Pricing Intelligence**
Access list price, sold price, price per sqft, HOA fees, and AVM valuations (estimated value, high, and low) for every property. Essential for comps analysis, investment underwriting, and market benchmarking.

**🧑‍💼 Agent Contact Data**
Each listing includes agent name, email, phone, office, and broker — plus co-agent details when available. Ready for CRM import, lead generation, and outreach automation.

**📍 Flexible Location Search**
Query by ZIP code, city, city+state, full address, neighborhood, county, or full state name. Covers all 50 US states with no geographic restrictions.

**🤖 AI-Ready JSON Output**
Structured data optimized for LangChain, CrewAI, and custom AI workflows. Ideal for property recommendation engines, automated valuation models, and real estate intelligence platforms.

**📊 50+ Data Fields Per Property**
Extract comprehensive property intelligence including:

- Listing metadata (MLS ID, status, dates, flags)
- Pricing (list, sold, AVM estimate range, $/sqft, HOA)
- Physical details (beds, baths, sqft, lot, year built, garage, stories)
- Location (address, city, state, ZIP, county, FIPS, coordinates, neighborhoods)
- Agent & co-agent contacts (name, email, phone, office, broker)
- Media (primary photo, full photo gallery, open house schedule)
- Extended details (room dimensions, appliances, utilities, construction)

---

### Quick Start Guide

#### How to Extract Property Data in 3 Steps

##### Step 1: Configure Your Search

Set your target location, listing type, and result volume. Use `listed_since` to filter by recency and `property_type` to narrow by property style.

##### Step 2: Run the Actor

Click **▷ Start** and the scraper will extract all matching listings from Realtor.com with full field coverage.

##### Step 3: Download Your Data

Export results in JSON or CSV, or access via the Apify API. Each record includes all 50+ fields.

---

### Input Parameters

#### Required Configuration Fields

| Parameter      | Type    | Description                            | Example Values                       |
| -------------- | ------- | -------------------------------------- | ------------------------------------ |
| `location`     | string  | US location to search                  | `"Austin, TX"`, `"10001"`, `"Texas"` |
| `listing_type` | string  | Listing status to target               | `"for_sale"`, `"sold"`, `"for_rent"` |
| `max_results`  | integer | Maximum number of properties to return | `100`, `1000`, `10000`               |

#### Optional Configuration Fields

| Parameter       | Type   | Description                                    | Example Values                          |
| --------------- | ------ | ---------------------------------------------- | --------------------------------------- |
| `listed_since`  | string | Filter by listing or sale date                 | `"30 days"`, `"1 year"`, `"2024-01-01"` |
| `property_type` | array  | Filter by property style (leave empty for all) | `["single_family", "condos"]`           |

#### Location Format Options

**ZIP Code**:

- `"10001"` — Manhattan, New York
- `"90210"` — Beverly Hills, California

**City / City + State**:

- `"Austin"` — all Austin metro listings
- `"Austin, TX"` — city with state code
- `"Austin, Texas"` — city with full state name

**Full Address** (single property lookup):

- `"350 5th Ave, New York, NY 10118"`

**Neighborhood / County / State**:

- `"South Beach"` — neighborhood search
- `"Cook County"` — county-level search
- `"Texas"` — full state (use full name, not `TX`)

#### Listing Type Options

| Value            | Description                             |
| ---------------- | --------------------------------------- |
| `for_sale`       | Active listings currently on the market |
| `for_rent`       | Active rental listings                  |
| `sold`           | Recently closed transactions            |
| `pending`        | Under contract, awaiting closing        |
| `off_market`     | Not actively listed                     |
| `new_community`  | New construction communities            |
| `ready_to_build` | Lots and land ready for development     |

#### Date Format Options

**Relative Timeframes** (Recommended):

- `"7 days"` — listed in the last week
- `"30 days"` — listed in the last month
- `"1 year"` — listed in the last year

**Absolute Dates** (YYYY-MM-DD):

- `"2024-06-01"` — listed since June 1, 2024

#### Property Type Options

`single_family`, `multi_family`, `apartment`, `condos`, `condo_townhome`, `condo_townhome_rowhome_coop`, `townhomes`, `duplex_triplex`, `farm`, `land`, `mobile`

#### Example Input Configuration

```json
{
  "location": "Austin, TX",
  "listing_type": "for_sale",
  "max_results": 1000,
  "listed_since": "90 days",
  "property_type": ["single_family", "condos", "townhomes"]
}
````

***

### Output Data Schema

#### Complete Property Data Structure

Each extracted property contains 50+ fields organized into these categories:

#### Listing Metadata

| Field                 | Type    | Description                                      |
| --------------------- | ------- | ------------------------------------------------ |
| `processor`           | string  | Apify actor URL that processed this record       |
| `processed_at`        | string  | ISO 8601 UTC timestamp when scraped              |
| `property_url`        | string  | Full URL to the listing on Realtor.com           |
| `property_id`         | string  | Unique property identifier                       |
| `listing_id`          | string  | Unique listing event identifier                  |
| `mls_id`              | string  | MLS board code (e.g. NWMLS, CRMLS)               |
| `mls_listing_id`      | string  | Listing ID within the MLS board                  |
| `status`              | string  | Listing status: for\_sale, for\_rent, sold, etc.   |
| `mls_status`          | string  | Exact MLS status string as reported by the board |
| `is_new_construction` | boolean | True if newly built and never occupied           |
| `is_contingent`       | boolean | True if under contract with contingencies        |
| `is_pending`          | boolean | True if under contract pending closing           |

#### Dates

| Field                 | Type   | Description                         |
| --------------------- | ------ | ----------------------------------- |
| `date_listed`         | string | Date first listed on the market     |
| `date_pending`        | string | Date offer was accepted             |
| `date_sold`           | string | Date sale was closed and recorded   |
| `date_updated`        | string | Date listing data was last modified |
| `date_status_changed` | string | Date and time of last status change |

#### Pricing & Valuation

| Field             | Type   | Description                                     |
| ----------------- | ------ | ----------------------------------------------- |
| `list_price`      | number | Current asking price in USD                     |
| `list_price_min`  | number | Minimum price for range-priced listings         |
| `list_price_max`  | number | Maximum price for range-priced listings         |
| `sold_price`      | number | Final recorded sale price in USD                |
| `price_per_sqft`  | number | Listing price divided by living area (USD/sqft) |
| `hoa_fee`         | number | Monthly HOA fee in USD                          |
| `estimated_value` | number | AVM best estimate in USD                        |
| `estimated_high`  | number | Upper bound of the AVM estimate range           |
| `estimated_low`   | number | Lower bound of the AVM estimate range           |

#### Property Details

| Field           | Type    | Description                              |
| --------------- | ------- | ---------------------------------------- |
| `property_type` | string  | Style: single\_family, condos, land, etc. |
| `beds`          | integer | Number of bedrooms                       |
| `baths_full`    | integer | Number of full bathrooms                 |
| `baths_half`    | integer | Number of half bathrooms                 |
| `sqft`          | integer | Interior living area in square feet      |
| `lot_sqft`      | integer | Total lot area in square feet            |
| `year_built`    | integer | Year originally constructed              |
| `garage_spaces` | integer | Enclosed garage parking spaces           |
| `stories`       | integer | Number of above-ground floors            |

#### Location

| Field           | Type   | Description                       |
| --------------- | ------ | --------------------------------- |
| `address`       | string | Street address line               |
| `unit`          | string | Apartment or unit number          |
| `city`          | string | City or municipality              |
| `state`         | string | Two-letter US state code          |
| `zip_code`      | string | Five-digit US postal ZIP code     |
| `county`        | string | County or parish name             |
| `fips_code`     | string | Federal FIPS county code          |
| `latitude`      | number | WGS 84 decimal latitude           |
| `longitude`     | number | WGS 84 decimal longitude          |
| `neighborhoods` | array  | Neighborhood or subdivision names |

#### Agent & Contact Data

| Field            | Type   | Description                          |
| ---------------- | ------ | ------------------------------------ |
| `agent_name`     | string | Full name of the listing agent       |
| `agent_email`    | string | Contact email for the listing agent  |
| `agent_phone`    | string | Contact phone for the listing agent  |
| `agent_office`   | string | Real estate office or brokerage name |
| `agent_broker`   | string | Managing broker name                 |
| `co_agent_name`  | string | Co-listing agent full name           |
| `co_agent_phone` | string | Co-listing agent phone               |

#### Media & Extended Data

| Field           | Type    | Description                                      |
| --------------- | ------- | ------------------------------------------------ |
| `primary_photo` | string  | Cover photo URL from the listing gallery         |
| `photos`        | array   | All photo URLs from the listing gallery          |
| `open_houses`   | array   | Scheduled open house events with dates and times |
| `details`       | array   | Full property attributes grouped by category     |
| `description`   | string  | Full marketing description text                  |
| `tags`          | array   | Amenity and feature tags                         |
| `pets_dogs`     | boolean | True if dogs are permitted                       |
| `pets_cats`     | boolean | True if cats are permitted                       |
| `tax_record_id` | string  | Public tax record identifier                     |

#### Example JSON Output

```json
{
  "processor": "https://apify.com/agentx/realtor-property-scraper",
  "processed_at": "2026-04-07T10:30:00+00:00",
  "property_url": "https://www.realtor.com/realestateandhomes-detail/123-Main-St_Austin_TX_78701",
  "property_id": "M9234718495",
  "listing_id": "2961478523",
  "mls_id": "ABOR",
  "mls_listing_id": "H6298471",
  "status": "for_sale",
  "mls_status": "Active",
  "is_new_construction": false,
  "is_contingent": false,
  "is_pending": false,
  "date_listed": "2026-01-15",
  "date_sold": null,
  "list_price": 875000,
  "sold_price": null,
  "price_per_sqft": 412,
  "hoa_fee": 250,
  "estimated_value": 860000,
  "estimated_high": 920000,
  "estimated_low": 800000,
  "property_type": "single_family",
  "beds": 4,
  "baths_full": 3,
  "baths_half": 1,
  "sqft": 2124,
  "lot_sqft": 7200,
  "year_built": 2019,
  "garage_spaces": 2,
  "stories": 2,
  "address": "123 Main St",
  "unit": null,
  "city": "Austin",
  "state": "TX",
  "zip_code": "78701",
  "county": "Travis",
  "fips_code": "48453",
  "latitude": 30.2672,
  "longitude": -97.7431,
  "neighborhoods": ["Downtown Austin", "Rainey Street"],
  "agent_name": "Sarah Chen",
  "agent_email": "sarah.chen@austinrealty.com",
  "agent_phone": "(512) 555-0198",
  "agent_office": "Austin Premier Realty",
  "agent_broker": "Texas Realty Group",
  "co_agent_name": null,
  "co_agent_phone": null,
  "primary_photo": "https://photos.rdc.com/property/M9234718495/cover.jpg",
  "photos": ["https://photos.rdc.com/property/M9234718495/1.jpg"],
  "open_houses": [
    { "start_date": "2026-04-12T13:00:00", "end_date": "2026-04-12T15:00:00" }
  ],
  "tax_record_id": "48453-123-0042"
}
```

***

### Integration Examples

#### Python Integration

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run_input = {
    "location": "Austin, TX",
    "listing_type": "for_sale",
    "max_results": 1000,
    "listed_since": "90 days",
    "property_type": ["single_family", "condos"]
}

run = client.actor("agentx/realtor-property-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### JavaScript/Node.js Integration

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

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const input = {
  location: "Austin, TX",
  listing_type: "for_sale",
  max_results: 1000,
  listed_since: "90 days",
  property_type: ["single_family", "condos"],
};

const run = await client.actor("agentx/realtor-property-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

items.forEach((item) => console.log(item));
```

#### Make.com Integration (No-Code)

1. **Add Module**: "Run an Actor"
2. **Enable Map**: Turn on 'Map' next to 'Actor'
3. **Enter**: `agentx/realtor-property-scraper`
4. **Refresh**: Click '⟳ Refresh'
5. **Configure Input**: Set location, listing\_type, max\_results
6. **Set Synchronous**: "Run synchronously" = YES
7. **Add Output Module**: "Get Dataset Items" → select `defaultDatasetId`

#### n8n Integration

1. **Add Node**: 'Run an Actor and get dataset' from Apify node
2. **Select By ID**: Actor → By ID
3. **Enter**: `agentx/realtor-property-scraper`
4. **Configure Input**: Set your search parameters

***

### Pricing & Cost Calculator

#### Transparent Pay-Per-Use Model

| Event Type      | Price    | Description                                                                 |
| --------------- | -------- | --------------------------------------------------------------------------- |
| **Actor Usage** | $0.00001 | Charged for Actor runtime based on resource consumption                     |
| **Property**    | $0.00189 | Charged per property returned — price, address, status, and listing details |

#### Cost Examples

**Small Scale** (100 properties):

- Property Data: 100 × $0.00189 = $0.19
- Actor Usage: ~$0.01
- **Total**: ~$0.20

**Medium Scale** (1,000 properties):

- Property Data: 1,000 × $0.00189 = $1.89
- Actor Usage: ~$0.03
- **Total**: ~$1.92

**Large Scale** (10,000 properties):

- Property Data: 10,000 × $0.00189 = $18.90
- Actor Usage: ~$0.15
- **Total**: ~$19.05

***

### Use Cases & Applications

#### Real Estate Investment & Analysis

**Market Comps & Valuation**
Pull sold listings and AVM estimates to build automated comparable sales analysis. Benchmark properties by $/sqft, year built, and lot size across any US market.

**Investment Pipeline Screening**
Filter off-market, pending, and new construction listings across multiple markets in bulk. Combine price data with agent contacts for direct outreach to listing agents.

**Rental Market Intelligence**
Extract for\_rent listings across cities and neighborhoods to map rental rates by property type, bedroom count, and zip code. Identify undersupplied markets for investment targeting.

#### AI & Proptech Applications

**Automated Valuation Models (AVM)**
Train or validate AVM models using real-time list price, sold price, and Realtor.com AVM estimates. Structure training data by property type, location, and physical attributes.

**Property Recommendation Engines**
Build AI-powered search tools that match buyers and renters to properties based on structured preference data. JSON output is compatible with LangChain, CrewAI, and vector databases.

**Market Trend Forecasting**
Aggregate listing velocity, price changes, and days-on-market across zip codes to build predictive models for price appreciation, inventory shifts, and market timing.

#### Lead Generation & CRM

**Agent & Broker Lead Lists**
Every listing includes agent name, email, phone, office, and broker. Export directly to CRM for mortgage, title, insurance, and proptech outreach campaigns.

**Open House Prospecting**
Filter upcoming open house events by geography and property type for targeted door-knocking, direct mail, and digital ad campaigns.

#### Data & Research

**Academic & Policy Research**
Compile housing market datasets for neighborhood affordability studies, zoning impact analysis, and housing supply research. FIPS codes and coordinates enable GIS integration.

**Journalism & Reporting**
Pull real-time market snapshots for housing affordability stories, neighborhood price trend reports, and regional market comparisons.

***

### FAQ

#### General Questions

##### What data source does this scraper use?

This actor extracts data from **Realtor.com**, one of the largest US real estate listing platforms, covering all 50 states and thousands of MLS boards.

##### How many properties can I scrape at once?

Up to **10,000 properties** per run. For larger datasets, run multiple queries with different locations or listing types.

##### Does it cover all 50 US states?

Yes. Any valid US location — ZIP code, city, county, or state — is supported across all 50 states.

##### What listing types are available?

Seven types: `for_sale`, `for_rent`, `sold`, `pending`, `off_market`, `new_community`, `ready_to_build`.

#### Data Questions

##### Why are some agent email fields empty?

Agent email disclosure is optional. Many agents list only a phone number. Email availability varies by MLS board and agent preference.

##### What is the AVM estimate?

The `estimated_value` field is Realtor.com's automated valuation model (AVM) — a machine learning estimate of the property's current market value. `estimated_high` and `estimated_low` define the confidence range.

##### Why are some fields null?

Fields like `sold_price`, `date_sold`, and `hoa_fee` are only populated when applicable to the listing. For example, `sold_price` is null for active for\_sale listings.

##### How fresh is the data?

Data is fetched live from Realtor.com at the time of each run. Use `listed_since` to filter by recency.

#### Troubleshooting

##### No properties found — what should I check?

- Verify the location format (city + state is most reliable)
- Try a broader location (state instead of neighborhood)
- Expand or remove the `listed_since` date filter
- Try a different `listing_type` — some markets have few active `for_sale` but many `sold` records

##### The result count is lower than `max_results` — why?

Realtor.com may have fewer active listings than your cap for the given location and listing type. The scraper returns all available results up to the limit.

***

### Related Tools

#### Real Estate & Business Intelligence

- **[Realtor Property Scraper](https://apify.com/agentx/realtor-property-scraper?fpr=aiagentapi)** - US Real Estate Data API (This Tool)
- **[Google Maps Store Scraper](https://apify.com/agentx/google-maps-store-scraper?fpr=aiagentapi)** - Business Location Intelligence & Local Market Data
- **[All Jobs Scraper](https://apify.com/agentx/all-jobs-scraper?fpr=aiagentapi)** - Multi-Platform Job Data Extraction API

#### Professional Intelligence Tools

- **[X Info Scraper](https://apify.com/agentx/x-info-scraper?fpr=aiagentapi)** - X/Twitter Profile Intelligence & User Analytics
- **[Telegram Info Scraper](https://apify.com/agentx/telegram-info-scraper?fpr=aiagentapi)** - Telegram Profile Intelligence & Contact Discovery
- **[SubReddit Post Scraper](https://apify.com/agentx/subreddit-post-scraper?fpr=aiagentapi)** - Reddit Community Data & Engagement Analytics

#### Content Intelligence Tools

- **[YouTube Transcript](https://apify.com/agentx/youtube-transcript?fpr=aiagentapi)** - YouTube Speech Transcription & Content Analysis
- **[All Video Scraper](https://apify.com/agentx/all-video-scraper?fpr=aiagentapi)** - Multi-Platform Video Download & Metadata Extraction

***

### Support & Community

- **👥 Community**: [@Apify\_Actor](https://t.me/Apify_Actor)
- **👤 Contact Team**: [@AiAgentApi](https://t.me/AiAgentApi)

***

**Version**: 1.0.0 | **Coverage**: All 50 US States | **Listing Types**: 7 | **Fields Per Property**: 50+

# Actor input Schema

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

US location to search. Accepted formats:

- ZIP code: "10001"

- City: "Austin"

- City + state: "Austin, TX" or "Austin, Texas"

- Full address: "350 5th Ave, New York, NY 10118"

- Neighborhood: "South Beach"

- County: "Cook County"

- Full state name: "Texas" (use full name, not "TX")

## `listing_type` (type: `string`):

Choose one listing status to search: for\_sale, for\_rent, sold, pending, off\_market, new\_community, other, ready\_to\_build

## `listed_since` (type: `string`):

Filter properties listed or sold within this timeframe

## `property_type` (type: `array`):

Filter by property style. Leave empty to include all property types

## `max_results` (type: `integer`):

Maximum number of properties to return

## Actor input object example

```json
{
  "location": "Austin, TX",
  "listing_type": "for_sale",
  "listed_since": "1 year",
  "property_type": [
    "single_family",
    "multi_family",
    "condos",
    "condo_townhome",
    "townhomes",
    "duplex_triplex",
    "farm",
    "land",
    "mobile"
  ],
  "max_results": 100
}
```

# Actor output Schema

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

All scraped property listings with full metadata including price, location, specs, and agent details

# 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 = {
    "location": "Austin, TX",
    "listing_type": "for_sale",
    "listed_since": "1 year",
    "property_type": [
        "single_family",
        "multi_family",
        "condos",
        "condo_townhome",
        "townhomes",
        "duplex_triplex",
        "farm",
        "land",
        "mobile"
    ],
    "max_results": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentx/realtor-property-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 = {
    "location": "Austin, TX",
    "listing_type": "for_sale",
    "listed_since": "1 year",
    "property_type": [
        "single_family",
        "multi_family",
        "condos",
        "condo_townhome",
        "townhomes",
        "duplex_triplex",
        "farm",
        "land",
        "mobile",
    ],
    "max_results": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("agentx/realtor-property-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 '{
  "location": "Austin, TX",
  "listing_type": "for_sale",
  "listed_since": "1 year",
  "property_type": [
    "single_family",
    "multi_family",
    "condos",
    "condo_townhome",
    "townhomes",
    "duplex_triplex",
    "farm",
    "land",
    "mobile"
  ],
  "max_results": 100
}' |
apify call agentx/realtor-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Realtor Property Scraper",
        "description": "Scrape property listings from Realtor.com across all 50 US states. Extract MLS data, pricing, AVM valuations, agent contacts, photos, and open houses for 7 listing types.",
        "version": "0.0",
        "x-build-id": "G4TfJ9ASQCVPDNyR2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/agentx~realtor-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-agentx-realtor-property-scraper",
                "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/agentx~realtor-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-agentx-realtor-property-scraper",
                "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/agentx~realtor-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-agentx-realtor-property-scraper",
                "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",
                "required": [
                    "location",
                    "listing_type",
                    "max_results"
                ],
                "properties": {
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "US location to search. Accepted formats:\n\n- ZIP code: \"10001\"\n\n- City: \"Austin\"\n\n- City + state: \"Austin, TX\" or \"Austin, Texas\"\n\n- Full address: \"350 5th Ave, New York, NY 10118\"\n\n- Neighborhood: \"South Beach\"\n\n- County: \"Cook County\"\n\n- Full state name: \"Texas\" (use full name, not \"TX\")"
                    },
                    "listing_type": {
                        "title": "🏠 Listing Type",
                        "enum": [
                            "for_sale",
                            "for_rent",
                            "sold",
                            "pending",
                            "off_market",
                            "new_community",
                            "other",
                            "ready_to_build"
                        ],
                        "type": "string",
                        "description": "Choose one listing status to search: for_sale, for_rent, sold, pending, off_market, new_community, other, ready_to_build"
                    },
                    "listed_since": {
                        "title": "📅 Listed Since",
                        "type": "string",
                        "description": "Filter properties listed or sold within this timeframe"
                    },
                    "property_type": {
                        "title": "🏡 Property Type",
                        "type": "array",
                        "description": "Filter by property style. Leave empty to include all property types",
                        "items": {
                            "type": "string",
                            "enum": [
                                "single_family",
                                "multi_family",
                                "apartment",
                                "condos",
                                "condo_townhome",
                                "condo_townhome_rowhome_coop",
                                "townhomes",
                                "duplex_triplex",
                                "farm",
                                "land",
                                "mobile"
                            ]
                        }
                    },
                    "max_results": {
                        "title": "📊 Max Results",
                        "minimum": 100,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of properties to return"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
