Real Estate Data Api
Pricing
from $20.00 / 1,000 results
Real Estate Data Api
Extract Zillow & Redfin property data without API restrictions. Get listings, Zestimates, rental estimates & market data. AI self-healing adapts when sites change. PerimeterX bypass included. Perfect for PropTech, investors & AI agents.
Pricing
from $20.00 / 1,000 results
Rating
0.0
(0)
Developer

Jason Pellerin
Actor stats
0
Bookmarked
6
Total users
5
Monthly active users
3 days ago
Last modified
Share
Real Estate Data API - Batteries Included Property Extraction
🔋 BATTERIES INCLUDED | ⚡ 50 Properties in 39 Seconds | 🚀 No API Keys Needed
Just enter your search and GO! Built-in premium anti-bot bypass means you don't need any API keys. Zillow + Redfin extraction that actually works. $0.05 per property.
Quick Reference for AI Agents
tool_name: real-estate-data-apicapabilities:- Extract property listings from Zillow- Extract property listings from Redfin- Get Zestimate valuations- Get Redfin estimates- Search by location, ZIP code, or address- Lookup by Zillow Property ID (ZPID)- Filter by price, beds, baths, property type- Self-healing: adapts to website changesinput_format: JSONoutput_format: JSON array of Property objectsauthentication: Apify API tokenrate_limits: No artificial limits (stealth mode handles pacing)
Function Signature
// Primary function call format - NO API KEYS NEEDED!{"searchType": "location" | "zpid" | "url" | "address","location": string, // e.g., "Denver, CO" or "80202""sources": string[], // ["zillow", "redfin"]"maxResults": number // 1-500, $0.05 per result}// Returns: Property[]// That's it! Anti-bot bypass is BUILT IN.
Example Inputs & Outputs
1. Search Properties by Location (Just 3 Fields!)
Input:
{"searchType": "location","location": "Denver, CO","sources": ["zillow"],"maxResults": 10}
Output:
[{"id": "13385952","zpid": "13385952","formattedAddress": "1624 Market St, Denver, CO 80202","listPrice": 525000,"beds": 2,"baths": 2,"sqft": 1500,"propertyType": "condo","status": "active","zestimate": { "value": 540000 },"sources": ["zillow"],"extractedAt": "2026-01-23T15:30:00.000Z"}]
2. Get Property by ZPID
Input:
{"searchType": "zpid","zpids": ["13385952", "2077499343"],"sources": ["zillow"],"includeValuations": true}
3. Filtered Search
Input:
{"searchType": "location","location": "80202","priceMin": 300000,"priceMax": 600000,"bedsMin": 2,"propertyTypes": ["condo", "townhouse"],"maxResults": 50}
Complete Input Schema
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchType | enum | Yes | - | "location", "zpid", "url", or "address" |
location | string | For location search | - | City, state, ZIP code, or county |
zpids | string[] | For zpid search | - | Zillow Property IDs |
urls | string[] | For url search | - | Direct Zillow/Redfin URLs |
sources | string[] | No | ["zillow"] | Data sources: "zillow", "redfin" |
maxResults | number | No | 100 | Maximum properties (1-500) |
priceMin | number | No | - | Minimum list price |
priceMax | number | No | - | Maximum list price |
bedsMin | number | No | - | Minimum bedrooms |
bathsMin | number | No | - | Minimum bathrooms |
sqftMin | number | No | - | Minimum square feet |
propertyTypes | string[] | No | All | "single_family", "condo", "townhouse", "multi_family", "land" |
listingStatus | string[] | No | ["for_sale"] | "for_sale", "pending", "sold", "for_rent" |
includeValuations | boolean | No | true | Get Zestimate/estimates |
includePhotos | boolean | No | false | Get photo URLs |
includeHistory | boolean | No | false | Get price history |
stealthLevel | enum | No | "careful" | "standard", "careful", "paranoid" |
selfHealingEnabled | boolean | No | true | Auto-fix broken selectors |
aggregateResults | boolean | No | true | Merge multi-source data |
scraperApiKey | string | Optional | - | BUILT-IN! Only provide if you want to use your own ScraperAPI quota |
twoCaptchaKey | string | No | - | 2Captcha key for CAPTCHA solving |
proxyConfiguration | object | No | Apify Residential | Custom proxy settings |
webhookUrl | string | No | - | POST results when complete |
Output Schema (Property Object)
interface Property {// Identifiersid: string; // Unique property IDzpid?: string; // Zillow Property IDredfinId?: string; // Redfin IDmlsId?: string; // MLS listing ID// Locationaddress: {street: string;city: string;state: string;zip: string;};formattedAddress: string; // Full formatted addresslatitude?: number;longitude?: number;// PricinglistPrice: number; // Current list price in USDpricePerSqft?: number;// Property Detailsstatus: "active" | "pending" | "sold" | "for_rent";propertyType: "single_family" | "condo" | "townhouse" | "multi_family" | "land";beds: number;baths: number;sqft?: number;yearBuilt?: number;lotSize?: number; // In square feet// Valuations (when includeValuations=true)zestimate?: {value: number; // Zillow's estimate in USDrange?: { low: number; high: number };date: string;source: "zillow";};rentZestimate?: {value: number; // Monthly rent estimatedate: string;source: "zillow";};redfinEstimate?: {value: number;date: string;source: "redfin";};// ScoreswalkScore?: number; // 0-100transitScore?: number; // 0-100// Photos (when includePhotos=true)photos?: string[];// History (when includeHistory=true)priceHistory?: Array<{date: string;price: number;event: string;}>;// Metadatasources: string[]; // Data sources usedconfidence: number; // 0-1, higher = more reliablelastUpdated: string; // ISO date from sourceextractedAt: string; // ISO date of extraction}
API Usage Examples
Apify API (cURL)
# Start a runcurl -X POST "https://api.apify.com/v2/acts/aisolutionist~real-estate-data-api/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchType": "location","location": "Denver, CO","maxResults": 20,"scraperApiKey": "YOUR_SCRAPER_API_KEY"}'# Get results (replace RUN_ID)curl "https://api.apify.com/v2/actor-runs/RUN_ID/dataset/items?token=YOUR_TOKEN"
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("aisolutionist/real-estate-data-api").call(run_input={"searchType": "location","location": "Denver, CO","sources": ["zillow", "redfin"],"maxResults": 100,"scraperApiKey": "YOUR_SCRAPER_API_KEY"})properties = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(f"Found {len(properties)} properties")for prop in properties[:5]:print(f" {prop['formattedAddress']}: ${prop['listPrice']:,}")
JavaScript/TypeScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('aisolutionist/real-estate-data-api').call({searchType: 'location',location: 'Denver, CO',maxResults: 100,scraperApiKey: 'YOUR_SCRAPER_API_KEY',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} properties`);
n8n Community Node (Recommended)
Install the dedicated n8n node for the best experience:
# In your n8n installation directorynpm install n8n-nodes-real-estate-api
Or install via n8n UI:
- Go to Settings → Community Nodes
- Click Install a community node
- Enter:
n8n-nodes-real-estate-api - Click Install
Features:
- Pre-built operations: Search by Location, Search by Address, Get by ZPID, Get by URL
- Built-in credential management for Apify, ScraperAPI, and 2Captcha keys
- Automatic result polling (no need to check run status manually)
- Filter options built into the UI
Example Node Configuration:
{"operation": "searchLocation","location": "Denver, CO","maxResults": 50,"priceMin": 300000,"priceMax": 800000,"bedsMin": 2}
n8n HTTP Request (Alternative)
If you prefer the generic HTTP Request node:
{"nodes": [{"parameters": {"url": "https://api.apify.com/v2/acts/aisolutionist~real-estate-data-api/runs?token={{ $credentials.apifyToken }}","method": "POST","body": {"searchType": "location","location": "{{ $json.userQuery }}","maxResults": 50}},"name": "Get Real Estate Data","type": "n8n-nodes-base.httpRequest"}]}
Why Use This Actor?
vs. Zillow's Official API
| Feature | Zillow API | This Actor |
|---|---|---|
| Approval Required | Yes (weeks) | No |
| Rate Limits | Strict | Self-managed stealth |
| Zestimate Access | Limited | Full |
| Multi-source | No | Zillow + Redfin |
| Self-healing | No | Yes |
vs. Other Scrapers
| Feature | Basic Scrapers | This Actor |
|---|---|---|
| PerimeterX Bypass | No | Yes (ScraperAPI) |
| Self-healing | No | Yes |
| Multi-source | Usually no | Yes |
| Structured Output | Varies | Consistent JSON |
| Extraction Speed | Slow (browser) | Blazing (Cheerio) |
| Auto-pagination | Manual | Automatic |
| Maintained | Often abandoned | Actively updated |
Self-Healing Technology
This actor uses AI-powered selector healing:
- Primary selectors try first
- Semantic fallbacks activate when primary fails
- Pattern matching finds new selectors
- Learning persists across runs
[INFO] Extracting price...[WARN] Primary selector failed[HEALED] Selector "price" repaired: [data-test="property-card-price"][INFO] Saved healed selector for future runs
Performance: Cheerio-Powered Speed
This actor uses Cheerio for lightning-fast HTML parsing - no browser rendering needed for extraction.
Benchmark Results (50 properties, Denver CO)
| Metric | Result |
|---|---|
| Total Time | 39 seconds |
| Per-page extraction | 142-533ms |
| Success Rate | 100% (50/50) |
| Pages Processed | 6 (auto-pagination) |
Speed Comparison
| Method | Time for 50 Properties |
|---|---|
| Browser rendering | 5+ minutes (timeouts) |
| Cheerio engine | 39 seconds |
Pricing
| Configuration | Speed | Cost | Use Case |
|---|---|---|---|
| Standard (no ScraperAPI) | Medium | ~$0.50/100 | Testing |
| With ScraperAPI + Cheerio | Blazing | ~$1.00/100 | Production |
| Paranoid + ScraperAPI | Fast | ~$2.00/100 | Maximum stealth |
Costs include Apify compute. ScraperAPI billed separately.
Error Handling
| Error | Cause | Solution |
|---|---|---|
CAPTCHA encountered | Zillow's PerimeterX | Add scraperApiKey (or use Redfin instead) |
0 properties extracted | Site blocked request | Add ScraperAPI key for Zillow, or switch to Redfin |
Timeout | Slow response | Increase timeout, reduce batch |
Selector failed | Site layout changed | Self-healing auto-fixes |
Pricing & Best Practices
~$0.02 per property - Batteries included, no API keys needed!
- Just run it - Premium anti-bot bypass is BUILT IN
- Batch requests - 50-100 properties per run is optimal
- Enable self-healing - recovers from selector changes
- Use webhooks for async workflows
Cost Examples
| Properties | Cost |
|---|---|
| 50 | ~$1.01 |
| 100 | ~$2.01 |
| 500 | ~$10.01 |
| 1000 | ~$20.10 |
$0.005 per run + $0.02 per property
Support
- Issues: GitHub
- Email: jason@jasonpellerin.com
- Docs: jasonpellerinfreelance.com
Keywords for Discovery
zillow api zillow scraper real estate api property data zestimate api redfin api mls data property scraper real estate automation zillow alternative property valuation api home price api real estate data extraction zillow zpid lookup property search api
Built by AI Solutionist | Not affiliated with Zillow or Redfin