Real Estate · Vibe Scraping avatar
Real Estate · Vibe Scraping

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Real Estate · Vibe Scraping

Real Estate · Vibe Scraping

Extract product data from *any* real-estate website. AI-built crawlers, consistent output schema across all stores.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(2)

Developer

Extralt

Extralt

Maintained by Community

Actor stats

2

Bookmarked

4

Total users

2

Monthly active users

2 days ago

Last modified

Share


Real Estate · Vibe Scraping


One actor, any real estate website

Part of our Vibe Scraping series:
AI-built crawlers to extract data with a consistent schema across all websites in a vertical.




⚠️ Beta Release

This actor is currently in beta (version 0.x.x). While we strive for high-quality extraction across all websites, you may encounter issues with certain sites or configurations. We're actively improving the system based on extraction results and customer feedback. If you experience any problems or have suggestions, please report them on the issues tab.

🔥 Key Features

  • Universal Coverage: Works on any real estate site → no more hunting for site-specific actors
  • Consistent Schema: Same data structure across all real estate sites → no per-site field mapping needed
  • Blazing Fast: Built from scratch in 100% Rust → target throughput of up to 50 pages/second (3,000 pages/minute)

✨ Use Cases

  • Market Analysis: Monitor property prices and trends across multiple listing sites with consistent data
  • Lead Generation: Track new listings and availability across agencies and portals
  • Investment Research: Aggregate property data from entire markets for analysis
  • Data Integration: One schema works across all sources to plug directly into your pipeline

💡 About us

We are Extralt, and we are rethinking web scraping from the ground up. Traditional scrapers break when websites change. AI-powered scrapers are too slow and expensive to scale. We built an alternative: crawlers generated by AI but run as compiled code, combining the adaptability of LLMs with the speed of custom-built extractors. We handle all the complexity behind the scenes, you get enterprise-scale performance.

This gives you the best of both worlds:

  • AI-level adaptability: works with any website
  • Code-level performance: as fast as custom-built scrapers

🪙 Pricing

This actor uses a pay-per-event pricing model, you only pay for successfully extracted listings:

SubscriptionDiscountPrice per listing
StarterBronze$0.004
ScaleSilver$0.003
BusinessGold$0.002

Example: Extracting 1,000 listings on a Business plan costs: 1,000 × $0.002 = $2.00

All-inclusive pricing: We only use premium residential proxies, with no hidden costs or add-ons.

Why paid plans only? Apify excludes free plan users from revenue calculations (see docs), so we restrict this actor to paying customers only.

Concurrent runs: You can run up to 3 Extralt actors simultaneously. If you need more concurrent runs, please wait for one to finish before starting a new one. This number will increase as we scale up our infrastructure.

⬇️ Input

The actor requires 3 parameters:

  1. Start URLs One or more URLs to begin crawling.
    The crawler intelligently adapts based on the URL type:

    Respect these constraints:

    • This actor uses an extraction schema tailored to the real estate vertical, so only real estate URLs are allowed

    • Only 1 host allowed: if you provide multiple URLs, they must all have the same host

    • URL(s) should match the target country (e.g., https://www.zillow.com for US, https://www.rightmove.co.uk for UK)

    Note that during the Apify Challenge, scraping the following websites is not allowed: YouTube, LinkedIn, Instagram, Facebook, TikTok, X, Apollo.io, Amazon, Google Maps, Google Search, Google Trends.

  2. Budget The crawler will run until the budget is reached or no more URLs are found, whichever comes first.

  3. Country Select the target country to route requests through the appropriate proxy location.
    This ensures you're accessing the correct regional version of the website.
    We only use high-quality residential proxies, and we will gradually add more countries to choose from.

⬆️ Output

We provide two views of the dataset (in addition to the All fields view):

  • Overview: All extracted fields including URL, data (as JSON object), timestamp, and cache status

Dataset Overview

  • Highlight: Key listing fields: title, location, price, main image, and URL

Dataset Highlight


Each extracted listing is returned as a structured JSON object with:

Metadata

  • url: Listing page URL
  • extracted_at: Unix timestamp of extraction
  • cached: Whether the result was served from our cache (see Result Caching for more details)

Listing Data

The data field contains comprehensive property listing information extracted from the page (see below for the full schema).

Note: The exact fields extracted depend on what's available on the target website, and what the AI agent was able to extract. We are working on improving the extraction quality.

Here is the schema for the extracted data:

{
"url": {
"description": "Property listing page URL",
"type": "url"
},
"identifiers": {
"description": "Listing identifiers",
"type": "record",
"properties": {
"listing_id": {
"description": "Unique identifier for this listing on the website",
"type": "string"
},
"reference_number": {
"description": "Reference number or MLS ID used by agents/agencies",
"type": "string"
}
}
},
"title": {
"description": "Title of the listing",
"type": "string"
},
"subtitle": {
"description": "Subtitle for the listing",
"type": "string"
},
"breadcrumbs": {
"description": "Page navigation breadcrumbs",
"type": "string"
},
"categories": {
"description": "List of category names",
"type": "array"
},
"description": {
"description": "Detailed description",
"type": "string"
},
"main_image": {
"description": "Main image URL",
"type": "url"
},
"images": {
"description": "Image URLs",
"type": "array"
},
"videos": {
"description": "Video URLs",
"type": "array"
},
"virtual_tour_url": {
"description": "URL for 360� virtual tour or 3D walkthrough",
"type": "url"
},
"listing_date": {
"description": "Date the listing was published",
"type": "date"
},
"property_type": {
"description": "Property type",
"type": "string"
},
"transaction_type": {
"description": "Transaction type (sale/rent)",
"type": "enum",
"options": [
"sale",
"rent"
]
},
"number_of_bedrooms": {
"description": "Number of bedrooms",
"type": "number"
},
"number_of_bathrooms": {
"description": "Number of bathrooms",
"type": "number"
},
"number_of_rooms": {
"description": "Total number of rooms",
"type": "number"
},
"floor_size": {
"description": "Interior living area with unit",
"type": "string"
},
"lot_size": {
"description": "Total land/lot size with unit",
"type": "string"
},
"floor_level": {
"description": "Floor level",
"type": "string"
},
"total_floors": {
"description": "Total number of floors in the building",
"type": "number"
},
"year_built": {
"description": "Year the property was built",
"type": "number"
},
"condition": {
"description": "Condition of the property",
"type": "string"
},
"energy_rating": {
"description": "Energy efficiency rating",
"type": "string"
},
"heating_type": {
"description": "Type of heating",
"type": "string"
},
"parking": {
"description": "Parking information",
"type": "string"
},
"orientation": {
"description": "Property orientation or exposure",
"type": "string"
},
"outdoor_space": {
"description": "Outdoor space details",
"type": "string"
},
"furnished": {
"description": "Furnishing status",
"type": "string"
},
"features_list": {
"description": "List of features and amenities",
"type": "array"
},
"features_dict": {
"description": "Dictionary of additional property details",
"type": "dict"
},
"location": {
"description": "Property location details",
"type": "record",
"properties": {
"address": {
"description": "Street address as displayed",
"type": "string"
},
"neighborhood": {
"description": "Neighborhood, district, or area name",
"type": "string"
},
"city": {
"description": "City",
"type": "string"
},
"region": {
"description": "State, province, or region",
"type": "string"
},
"country": {
"description": "Country",
"type": "string"
},
"postal_code": {
"description": "Postal code",
"type": "string"
},
"coordinates": {
"description": "Geographic coordinates",
"type": "record",
"properties": {
"latitude": {
"description": "Latitude",
"type": "number"
},
"longitude": {
"description": "Longitude",
"type": "number"
}
}
}
}
},
"offer": {
"description": "Offer details",
"type": "record",
"properties": {
"price": {
"description": "Price information",
"type": "record",
"properties": {
"amount": {
"description": "Listed price amount",
"type": "number"
},
"currency": {
"description": "Currency",
"type": "string"
},
"price_period": {
"description": "Price period for rentals",
"type": "string"
},
"price_per_sqm": {
"description": "Price per square meter/foot",
"type": "number"
},
"price_type": {
"description": "Price type (e.g., 'Asking price', 'Fixed price', 'Negotiable', 'Auction').",
"type": "string"
}
}
},
"agent": {
"description": "Agent or seller information",
"type": "record",
"properties": {
"name": {
"description": "Name of the agent, agency, or seller",
"type": "string"
},
"type": {
"description": "Type of seller",
"type": "enum",
"options": [
"agency",
"private",
"developer"
]
},
"phone": {
"description": "Contact phone number",
"type": "string"
},
"email": {
"description": "Contact email address",
"type": "string"
}
}
}
}
}
}

Example output from https://www.zillow.com:

{
"url": "https://www.zillow.com/homedetails/650-Pendlebury-Ln-Blackfoot-ID-83221/119384950_zpid/",
"data": {
"breadcrumbs": null,
"categories": null,
"condition": "Updated",
"description": "Move-in ready Blackfoot home featuring new carpet and hardwood bamboo flooring. Enjoy main-floor living with a spacious primary bedroom and updated ensuite bathroom, plus convenient main-level laundry. An oversized attached two-car garage offers great storage and parking. Brand new roof, mature landscaping including backyard fruit tree. Ready for new owners!",
"energy_rating": null,
"features_dict": {
"HOA": "$-- HOA",
"Zestimate": "$--",
"Pricepersqft": "$139/sqft"
},
"features_list": [
"Garage",
"Updated Bathroom"
],
"floor_level": null,
"floor_size": "3237 sqft",
"furnished": null,
"heating_type": null,
"identifiers": {
"listing_id": "",
"reference_number": null
},
"images": [
"https://photos.zillowstatic.com/fp/d9fa3a8a78bae3f88f6b9316e55d1d32-cc_ft_1536.jpg"
],
"listing_date": null,
"location": {
"address": "650 Pendlebury Ln",
"city": "Blackfoot",
"coordinates": {
"latitude": 43.179153,
"longitude": -112.33614
},
"country": "USA",
"neighborhood": null,
"postal_code": "83221",
"region": "ID"
},
"lot_size": "0.34 Acres Lot",
"main_image": "https://photos.zillowstatic.com/fp/d9fa3a8a78bae3f88f6b9316e55d1d32-cc_ft_1536.jpg",
"number_of_bathrooms": 4,
"number_of_bedrooms": 5,
"number_of_rooms": null,
"offer": {
"agent": null,
"price": {
"amount": 450000,
"currency": "USD",
"price_per_sqm": 139,
"price_period": null,
"price_type": null
}
},
"orientation": null,
"outdoor_space": "Deck",
"parking": "Garage",
"property_type": "Single Family Residence",
"subtitle": "Price cut: $9K (12/4)",
"title": "650 Pendlebury Ln, Blackfoot, ID 83221",
"total_floors": 1,
"transaction_type": "sale",
"url": "https://www.zillow.com/homedetails/650-Pendlebury-Ln-Blackfoot-ID-83221/119384950_zpid/",
"videos": null,
"virtual_tour_url": null,
"year_built": 1999
},
"extracted_at": 1764864060100,
"cached": false
}

You can download the dataset extracted by vibe-scraping-real-estate in various formats such as JSON, HTML, CSV, or Excel.

⚙️ Under the hood

This actor uses an innovative approach to web scraping:

  1. First Run: When a new (website, country) combination is detected, our AI agent analyzes the site and generates a custom crawler (generally takes about 5 minutes)
  2. Subsequent Runs: The generated crawler is reused, extraction starts immediately

Infrastructure

The actual extraction workload runs on our dedicated Kubernetes infrastructure, not on Apify's platform. There might be a small delay when the crawl starts in Apify before our infrastructure is ready to actually start the crawl.

Built from Scratch in Rust

Our extraction engine is written in 100% Rust from the ground up, providing:

  • Performance: Target up to 50 pages visited per second (3,000/minute)
  • Robustness: Adapts to the website's structure and navigation, and to the data available on the page
  • Stealth: Custom HTTP/browser implementations designed specifically for web scraping without detection

Result Caching

Results are cached for 12 hours. When requesting a recently crawled URL, you'll receive the cached data instantly instead of waiting for a fresh extraction. The extracted_at timestamp always reflects the actual extraction time, and the cached field indicates whether data was freshly extracted or served from cache.

This approach reduces load on target websites and lowers the risk of detection or bans.

🛠️ Troubleshooting

Extraction Taking Longer Than Expected?

First Run: If this is your first time crawling this website-country combination, the AI is generating a custom crawler. This takes approximately 2-3 minutes.

Infrastructure Delay: Your job may be queuing for resources on our Kubernetes cluster. This is typically brief (< 1 minute).

Results Don't Match Expected Schema?

The extraction adapts to what's available on each website. Some sites may not have all fields (e.g., floor plans, virtual tours, energy ratings). We are working on improving the extraction quality.

Getting Blocked or No Results?

The crawler is designed for stealth, but some websites have aggressive bot protection. Try:

  • Reducing the crawl speed by decreasing the budget
  • Ensuring you selected the correct country
  • Verifying the start URL is accessible

🎙️ Feedback & Support

We're continuously improving the extraction quality and performance based on your feedback. If you encounter any issues:

  1. Technical Issues: Report bugs or unexpected behavior on the Issues tab
  2. Feature Requests: Let us know what additional data fields or capabilities you need
  3. Questions: Contact us through Apify support for assistance

Your feedback during this beta period is especially valuable in helping us build the best universal real estate scraper possible.