Real Estate Aggregator — Multi-Platform Property Search avatar

Real Estate Aggregator — Multi-Platform Property Search

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Real Estate Aggregator — Multi-Platform Property Search

Real Estate Aggregator — Multi-Platform Property Search

Under maintenance

Search Zillow, Redfin, Realtor.com, and Apartments.com in one run. Deduplicates listings by address, unifies property data, and computes market analytics including median price, price per sqft, and days on market.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Search Zillow, Redfin, Realtor.com, and Apartments.com in a single run. This premium actor aggregates listings from all four platforms, deduplicates them by normalized address, and outputs unified property data with cross-platform price comparison and market analytics.

Why use an aggregator?

Each real estate platform has different listings, different prices, and different data quality. Searching them one by one is slow and you miss overlaps. This actor:

  • Searches all 4 platforms simultaneously — one input, one run, one dataset
  • Deduplicates by address — the same property listed on Zillow and Redfin becomes one record with data from both
  • Compares prices across platforms — see if Zillow shows a different price than Redfin for the same property
  • Computes market analytics — median price, price per sqft, days on market, and more
  • Saves hours of manual work — no more opening 4 tabs and cross-referencing

Use Cases

Home Buyers

Search once, see every listing across all major platforms. Compare prices and find listings that only appear on one platform (hidden gems).

Real Estate Investors

Get comprehensive market data for any US location. Median price, price per sqft, and property type distribution help you evaluate markets quickly.

Real Estate Agents

Monitor competing listings across all platforms. See which properties are listed where and at what price.

Market Analysts

Pull structured data from 4 platforms into one clean dataset. Use the market analytics summary for reports and comparisons.

Property Managers

Find rental listings across Apartments.com and the other platforms. Compare rental rates in your target area.

Input Parameters

ParameterTypeRequiredDescription
locationstringYesCity and state (e.g., "Miami, FL"), ZIP code, or neighborhood
listingTypeenumNofor_sale (default), for_rent, or recently_sold
minPriceintegerNoMinimum price filter
maxPriceintegerNoMaximum price filter
minBedsintegerNoMinimum bedrooms
minBathsintegerNoMinimum bathrooms
propertyTypeenumNoany (default), house, condo, townhouse, apartment, land
maxResultsintegerNoMax deduplicated results (default: 200)
proxyConfigurationobjectNoApify proxy config (residential recommended)

Output Schema

Each property record includes:

Core Fields

  • normalizedAddress — Deduplicated address key
  • fullAddress — Complete street address
  • bestPrice / priceFormatted — Lowest price found across platforms
  • beds, baths, sqft — Property dimensions
  • lotSize, yearBuilt — Lot and building info
  • propertyType — House, Condo, Townhouse, etc.
  • listingType — For sale, for rent, recently sold

Cross-Platform Data

  • zillowUrl, redfinUrl, realtorUrl, apartmentsUrl — Direct links per platform
  • zillowPrice, redfinPrice, realtorPrice, apartmentsPrice — Price on each platform
  • sources — Which platforms listed this property
  • sourcesCount — Number of platforms (higher = more visibility)

Platform-Specific

  • zestimate — Zillow's automated valuation
  • redfinEstimate — Redfin's automated valuation
  • daysOnZillow, daysOnRedfin — Days on market per platform
  • hoaFee — HOA dues (from Redfin)

Enrichment

  • description — Property description
  • agentName, agentPhone, brokerName — Listing agent info
  • photos — Aggregated photo URLs from all platforms
  • priceHistory — Combined price history from all platforms

Market Analytics (first record in dataset)

The first record in the output has _type: "market_analytics" and includes:

  • medianPrice, averagePrice, minPrice, maxPrice
  • medianPricePerSqft, averagePricePerSqft
  • averageBeds, averageBaths, averageSqft
  • averageDaysOnMarket, medianDaysOnMarket
  • propertyTypeDistribution — Count per property type
  • propertiesOnMultiplePlatforms — How many properties appear on 2+ platforms
  • platformBreakdown — Raw count per platform before dedup
  • duplicatesRemoved — How many duplicates were merged

Example Output

{
"normalizedAddress": "123 main st miami fl 33101",
"fullAddress": "123 Main St, Miami, FL 33101",
"bestPrice": "$450,000",
"beds": 3,
"baths": 2,
"sqft": 1850,
"lotSize": "5000 sqft",
"yearBuilt": 1995,
"propertyType": "House",
"listingType": "for_sale",
"zillowUrl": "https://www.zillow.com/homedetails/123-main-st/12345_zpid/",
"redfinUrl": "https://www.redfin.com/FL/Miami/123-Main-St/home/67890",
"realtorUrl": "https://www.realtor.com/realestateandhomes-detail/123-Main-St_Miami_FL_33101",
"zillowPrice": "$450,000",
"redfinPrice": "$449,000",
"realtorPrice": "$450,000",
"zestimate": 465000,
"redfinEstimate": 458000,
"sources": "zillow, redfin, realtor",
"sourcesCount": 3,
"photos": ["https://photos.zillowstatic.com/...", "https://ssl.cdn-redfin.com/..."],
"priceHistory": [
{"date": "2025-06-15", "price": 475000, "event": "Listed for sale", "source": "zillow"},
{"date": "2025-07-01", "price": 450000, "event": "Price reduced", "source": "redfin"}
]
}

Extraction Strategies

The actor uses multiple extraction strategies per platform, falling through to the next if one fails:

PlatformStrategy 1Strategy 2Strategy 3Strategy 4
Zillow__NEXT_DATA__ JSONApollo preloaded dataDOM selectors
RedfinStingray API JSONDOM selectorsCSV endpoint
Realtor.com__NEXT_DATA__ JSONJSON-LD (Schema.org)Script state objectsDOM selectors
Apartments.comJSON-LD__PRELOADED_STATE__DOM selectors

Pricing

This actor uses Pay Per Event pricing:

  • $0.01 per unique property found (after deduplication)
  • You only pay for deduplicated results, not raw platform hits
  • A property found on all 4 platforms still costs only $0.01
  • Market analytics record is included free

Example costs:

  • 50 properties in a small town: $0.50
  • 200 properties in a city: $2.00
  • 500 properties in a metro area: $5.00

Tips for Best Results

  1. Use residential proxies — All four platforms have anti-bot measures. Datacenter IPs will get blocked quickly.
  2. Start with a specific location — "Miami Beach, FL" works better than just "Miami" (fewer results, faster run).
  3. Set price filters — Narrower searches return more accurate results from each platform.
  4. Check the analytics record — The first record in your dataset has market statistics. Use it for quick market evaluation.
  5. Look at sourcesCount — Properties listed on 3-4 platforms are typically "real" active listings, not stale data.

Limitations

  • US locations only (all four platforms are US-focused)
  • Apartments.com only has rental listings — it won't contribute data for "for_sale" searches
  • Some platforms may block requests even with proxies; the actor will log warnings and continue with available data
  • Price history depth varies by platform (Zillow tends to have the most historical data)
  • Results depend on what each platform returns for your search — not all properties appear on all platforms

Changelog

v1.0 (2026-03-02)

  • Initial release
  • 4-platform aggregation: Zillow, Redfin, Realtor.com, Apartments.com
  • Address normalization and deduplication engine
  • Market analytics computation
  • PPE pricing at $0.01 per unique property

Integration — Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("sovereigntaylor/real-estate-aggregator").call(run_input={
"searchTerm": "example query",
"maxResults": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item.get('title', item.get('name', 'N/A'))}")

Integration — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sovereigntaylor/real-estate-aggregator').call({
searchTerm: 'example query',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.title || item.name || 'N/A'));