# Realtor.com Properties Scraper 🏡 \[US] — $1/1K 💰 (`viralanalyzer/realtor-properties-scraper-pro`) Actor

Extract Realtor.com real estate listings in bulk across the United States: prices, addresses, beds, baths, sqft, agent contacts, and photos. Only $1/1K properties.

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

## Pricing

from $0.70 / 1,000 property scrapeds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## US Properties Scraper 🏡 Redfin Data

> 🔗 [View on Apify Store](https://apify.com/viralanalyzer/realtor-properties-scraper-pro) | 🇺🇸 English | [🇧🇷 Português](#português)
> Published as *Realtor Properties Scraper Pro*.

***

### 🇺🇸 English

#### 🔎 Where the data comes from — read this first

Listings come from **Redfin's public `stingray/api/gis` endpoint**, not from Realtor.com. Every row
carries `dataSource: "redfin-gis"` and `listingUrl` points at the Redfin listing. If your workflow
requires Realtor.com as the source of record, this actor is not it.

#### Overview

Extract active for-sale listings — price, address, bedrooms, bathrooms, square footage, property
type and brokerage — for eight verified US metros.

#### Supported cities

`tampa` · `new york` (`nyc`) · `san francisco` · `austin` · `dallas` · `seattle` · `atlanta`

Each region id was verified one by one on 2026-08-26 by querying it and checking which city came
back. Regions that resolved somewhere else were removed rather than guessed at. **A city outside
this list returns an unbilled diagnostic row** — the previous silent fallback, which returned New
York homes labelled with whatever city you typed, is gone.

#### Input Example

```json
{
  "location": "Austin, TX",
  "status": "for_sale",
  "maxProperties": 20
}
```

#### Output Example

```json
{
  "propertyId": "12345678",
  "listingStatus": "for_sale",
  "price": "$650,000",
  "priceValue": 650000,
  "address": "1420 Sample St, Austin, TX 78701",
  "city": "Austin",
  "state": "TX",
  "zipCode": "78701",
  "bedrooms": 2,
  "bathrooms": 2,
  "sqft": 1150,
  "propertyType": "Condo / Co-op",
  "agentName": "Sample Brokerage LLC",
  "listingUrl": "https://www.redfin.com/TX/Austin/...",
  "dataSource": "redfin-gis",
  "scrapedAt": "2026-08-27T21:00:00.000Z"
}
```

Any attribute the source does not state comes back as `null`. Nothing is filled in.

#### Input Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `location` | string | One of the supported cities above — **required** |
| `status` | string | `for_sale` only |
| `maxProperties` | number | Max listings to return (default 20) |
| `proxyConfiguration` | object | Apify Proxy options |

### ✅ Capabilities & Limits

Stated up front, so you do not pay a run to find out.

**Built here:** the source query is pinned to Redfin's active for-sale status. `listingStatus` in the
output is therefore the constant `"for_sale"` — it is not a filter you can move.

| Input / feature | Supported | Notes |
|---|---|---|
| City search | ⚠️ | eight verified metros only; anything else is an unbilled diagnostic |
| ZIP code search | ❌ | region ids are per-metro; a ZIP is not resolvable to one |
| For-sale listings | ✅ | this is the only status the source query returns |
| Rentals | ❌ | not available through this endpoint |
| Recently sold | ❌ | not available through this endpoint |
| Bedrooms / bathrooms / sqft | ⚠️ | passed through when present, `null` when the source omits them |
| Agent name | ⚠️ | brokerage name when present, `null` otherwise — not an individual agent's contact |
| Result volume | ⚠️ | single page per run, capped by `maxProperties` |
| Source | ⚠️ | Redfin, not Realtor.com |

#### FAQ

**Q: Does it cover rentals and sales?**
A: For-sale only. The underlying query is pinned to active for-sale listings.

**Q: Why does my city return a diagnostic instead of listings?**
A: It is not one of the eight verified metros. Returning a diagnostic is deliberate — the alternative
would be listings from a different state labelled with your city, which is what the previous version did.

**Q: Is this Realtor.com data?**
A: No. It is Redfin data. See the note at the top.

***

### 🇧🇷 Português

#### 🔎 De onde vêm os dados — leia antes

Os anúncios vêm do endpoint público **`stingray/api/gis` do Redfin**, não do Realtor.com. Toda linha
traz `dataSource: "redfin-gis"` e `listingUrl` aponta para o anúncio no Redfin.

#### Visão Geral

Extraia anúncios ativos de venda — preço, endereço, quartos, banheiros, metragem, tipo de imóvel e
imobiliária — em oito metrópoles americanas verificadas.

#### Cidades suportadas

`tampa` · `new york` (`nyc`) · `san francisco` · `austin` · `dallas` · `seattle` · `atlanta`

Cada identificador de região foi conferido um a um em 2026-08-26. **Cidade fora dessa lista devolve
uma linha de diagnóstico não cobrada** — o fallback silencioso anterior, que devolvia imóveis de
Nova York rotulados com a cidade digitada, foi removido.

#### Exemplo de Entrada

```json
{
  "location": "Austin, TX",
  "status": "for_sale",
  "maxProperties": 20
}
```

#### Parâmetros de Entrada

| Parâmetro | Tipo | Descrição |
|-----------|------|-----------|
| `location` | string | Uma das cidades suportadas — **obrigatório** |
| `status` | string | Apenas `for_sale` |
| `maxProperties` | number | Máximo de anúncios (padrão 20) |
| `proxyConfiguration` | object | Opções de proxy da Apify |

#### Limites

- Somente venda — locação e vendidos recentemente não estão disponíveis por esta via
- Busca por CEP não é suportada; a região é por metrópole
- Atributo ausente na fonte volta como `null`, nunca preenchido

#### Perguntas Frequentes

**P: Cobre venda e aluguel?**
R: Apenas venda. A consulta na origem é fixada em anúncios ativos de venda.

**P: É dado do Realtor.com?**
R: Não. É dado do Redfin. Veja a nota no topo.

***

### 💰 Pricing

This actor uses **Pay Per Event (PPE)** pricing — you pay only per **item scraped** (`property-scraped`). Platform usage is included. See the current price on the **Pricing** panel of this actor's Apify Store page.

***

### 🔗 Related Actors

- [Reclame Aqui Scraper](https://apify.com/viralanalyzer/reclameaqui-scraper)
- [iFood Restaurant Intelligence](https://apify.com/viralanalyzer/ifood-restaurant-intelligence)
- [Instagram Reels Scraper](https://apify.com/viralanalyzer/instagram-reels-scraper)
- [TikTok Viral Scanner](https://apify.com/viralanalyzer/tiktok-viral-scanner)
- [Google Maps BR Scraper](https://apify.com/viralanalyzer/google-maps-br-scraper)
- [Mercado Livre Scraper](https://apify.com/viralanalyzer/mercadolivre-scraper)

***

### 📝 Changelog

- **v2.0.0** (2026-08-27) — Data-integrity rewrite: verified region map (5 of 12 previous entries resolved to the wrong city and were removed), silent fallback to Miami removed, invented bedroom/bathroom/sqft/agent defaults removed, `realtorUrl` renamed to `listingUrl`, README now states Redfin as the source and drops the rental/ZIP claims the code never supported
- **v1.0.0** (2026-08-20) — Initial release

***

### License

ISC © 2026 Viral Analyzer Platform

***

💡 **Need AI analysis on top of this data — sentiment, trend detection and a dashboard, with no API keys to manage?**\
[ViralAnalyzer](https://viralanalyzer.com.br) runs this actor + 42 more data sources with built-in AI. JSON + insights in one call.

# Actor input Schema

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

City to search. Only verified metros are supported: tampa, new york, nyc, san francisco, austin, dallas, seattle, atlanta. Any other value returns an unbilled diagnostic row instead of listings from the wrong place.

## `status` (type: `string`):

Listing type. Only active for-sale listings are available from this source.

## `maxProperties` (type: `integer`):

Maximum number of properties to extract.

## `proxyConfiguration` (type: `object`):

Apify Proxy options.

## Actor input object example

```json
{
  "location": "Tampa, FL",
  "status": "for_sale",
  "maxProperties": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `properties` (type: `string`):

Dataset output for Realtor Properties Scraper Pro Output

# 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": "Tampa, FL"
};

// Run the Actor and wait for it to finish
const run = await client.actor("viralanalyzer/realtor-properties-scraper-pro").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": "Tampa, FL" }

# Run the Actor and wait for it to finish
run = client.actor("viralanalyzer/realtor-properties-scraper-pro").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 '{
  "location": "Tampa, FL"
}' |
apify call viralanalyzer/realtor-properties-scraper-pro --silent --output-dataset

```

## MCP server setup

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

```

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/AtejdidpcLusTNqs0/builds/lmzb8QHuANLEQNhdR/openapi.json
