Real Estate Property Listings & Market Intelligence API avatar

Real Estate Property Listings & Market Intelligence API

Pricing

from $0.20 / 1,000 results

Go to Apify Store
Real Estate Property Listings & Market Intelligence API

Real Estate Property Listings & Market Intelligence API

Enterprise real estate scraper and property market intelligence engine. Extracts normalized property listings, price-per-sqm metrics, surface area, room counts, energy ratings, and agency contacts for PropTech, investors, and B2B lead generation.

Pricing

from $0.20 / 1,000 results

Rating

0.0

(0)

Developer

Akkouch Sofiane

Akkouch Sofiane

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Categories

Share

Runtime Schema Validation Compute Footprint PropTech Ready

High-throughput real estate listing and property market intelligence engine engineered for PropTech platforms, real estate investment funds, asset managers, and B2B brokerage prospecting.

Instead of relying on brittle headless browsers that consume excessive compute units and fail on layout shifts, this Actor queries structured JSON property endpoints, official municipal geocoding APIs (api-adresse.data.gouv.fr), and Schema.org RealEstateListing feeds directly over asynchronous httpx connections. Every record is normalized, enriched with automated price-per-square-meter ($\text{price} / \text{m}^2$) metrics and DPE energy ratings, and validated through Pydantic v2 before storage.


Core Capabilities & Architectural Advantages

FeatureTechnical ImplementationValue for PropTech & Investors
Automated Price / $\text{m}^2$ ValuationComputes pricePerSqm across living (surfaceArea) and plot (landArea) surfaces automaticallyInstant detection of undervalued properties and neighborhood pricing anomalies without post-processing
Municipality & INSEE ResolutionResolves city names, arrondissements, and postal codes via the French National Address Base (BAN)Eliminates ambiguous location matching across metropolitan areas (Paris, Lyon, Bordeaux, Nice, etc.)
DPE Energy Rating EnrichmentConcurrent asynchronous lookup of official Energy Performance (A to G class)Critical for evaluating renovation CapEx and regulatory rental compliance (passoires thermiques F/G)
Agency & Brokerage AttributionExtracts agency name, branch code, direct phone number (agentPhone), and canonical listing URLReady-to-use B2B lead lists for mortgage brokers, SaaS vendors, renovation contractors, and syndics
Universal Direct URL ParserParses Schema.org JSON-LD (RealEstateListing, Apartment, SingleFamilyResidence, Offer)Allows on-demand ingestion of custom brokerage or developer pages alongside city-wide searches
Low-Overhead HTTPX EngineRuns comfortably inside a 128 MB–256 MB container without Chromium overheadUp to 15x lower Apify Compute Unit consumption compared to browser-based scrapers

High-ROI Use Cases

1. Automated Deal Sourcing & Undervalued Asset Detection

Configure scheduled runs across target municipalities with strict maxPrice, minSurfaceArea, and minRooms thresholds. Pipe the output Dataset into Make, n8n, or Airtable to trigger instant Slack or email alerts whenever a listing drops below your target pricePerSqm benchmark or carries an F/G energy rating suitable for value-add renovation.

2. B2B Lead Generation for Real Estate Service Providers

Extract active real estate agencies (agentOrAgency), direct branch phone numbers (agentPhone), and active inventory volumes by postal code. Ideal for PropTech SaaS sales teams, property photography studios, energy audit firms, and commercial insurance brokers building hyper-targeted outbound campaigns in Clay or HubSpot.

3. Quantitative Market Research & Valuation Indexes

Aggregate thousands of standardized property records (price, pricePerSqm, surfaceArea, rooms, bedrooms, latitude, longitude) into BigQuery, Snowflake, or Power BI to monitor real-time supply levels, price dispersion, and asset-class breakdowns (apartment, house, commercial, land).


Input Configuration Reference

ParameterTypeDefaultDescription
locationsarray<string>["Paris", "Lyon", "Bordeaux"]Target cities, municipalities, or postal codes to query (e.g., "Paris", "69006", "Bordeaux", "Marseille", "Nice").
propertyTypesarray<string>["apartment", "house", "commercial"]Filter by normalized asset class: "apartment", "house", "commercial", or "land".
transactionTypestring"sale"Filter by deal type: "sale" (acquisition), "rent" (leasing), or "all".
minPriceinteger50000Minimum listing price threshold in local currency (0 disables the minimum filter).
maxPriceinteger0Maximum listing price threshold in local currency (0 disables the maximum limit).
minSurfaceAreainteger15Minimum floor area in square meters ($\text{m}^2$).
minRoomsinteger1Minimum number of main rooms (pièces principales).
targetUrlsarray<string>[]Optional list of direct property or brokerage URLs to parse via Schema.org JSON-LD.
maxResultsinteger25Maximum number of validated listings to extract per target location (1–500).

Example Input JSON

{
"locations": [
"Paris",
"Lyon",
"Bordeaux"
],
"propertyTypes": [
"apartment",
"house"
],
"transactionType": "sale",
"minPrice": 150000,
"maxPrice": 950000,
"minSurfaceArea": 30,
"minRooms": 2,
"targetUrls": [],
"maxResults": 25
}

Output Dataset Schema Reference

Every item pushed to the default Apify Dataset conforms strictly to .actor/dataset_schema.json:

FieldTypeDescription
propertyIdstringDeterministic unique identifier for deduplication across runs.
propertyTitlestringNormalized headline of the property listing.
pricenumberTotal listed price in local currency.
pricePerSqmnumber | nullAutomatically calculated price per square meter ($\text{price} / \text{surfaceArea}$).
currencystringISO 4217 currency code (EUR).
locationstringComplete formatted address string (street, postal code, city).
citystring | nullNormalized municipality name.
postalCodestring | nullPostal or ZIP code.
countrystringISO country code (FR).
surfaceAreanumber | nullLiving or commercial floor area in square meters ($\text{m}^2$).
landAreanumber | nullPlot or land area in square meters ($\text{m}^2$), when applicable.
roomsinteger | nullTotal number of main rooms.
bedroomsinteger | nullNumber of bedrooms.
propertyTypestringNormalized asset category (apartment, house, commercial, land).
transactionTypestringNormalized transaction type (sale or rent).
energyRatingstring | nullOfficial DPE energy performance class (A through G).
agentOrAgencystringName of the listing real estate agency or brokerage branch.
agentPhonestring | nullDirect telephone number of the listing agency branch.
agentEmailstring | nullPublic contact email of the agency, when available.
latitudenumber | nullWGS84 geographic latitude coordinate.
longitudenumber | nullWGS84 geographic longitude coordinate.
listingUrlstringCanonical URL to the full property listing.
sourcePlatformstringIdentifier of the upstream data source (laforet-immo-api or direct-jsonld).
listedAtstring | nullISO 8601 publication timestamp of the listing.
scrapedAtstringISO 8601 UTC timestamp of extraction.

Sample Output Record

{
"propertyId": "lf-53007812",
"propertyTitle": "Appartement Paris 3 pièce(s) 64.50 m2",
"price": 585000.0,
"pricePerSqm": 9069.77,
"currency": "EUR",
"location": "75015, PARIS",
"city": "Paris",
"postalCode": "75015",
"country": "FR",
"surfaceArea": 64.5,
"landArea": null,
"rooms": 3,
"bedrooms": 2,
"propertyType": "apartment",
"transactionType": "sale",
"energyRating": "D",
"agentOrAgency": "Laforêt PARIS 15 CONVENTION",
"agentPhone": "0145321010",
"agentEmail": null,
"latitude": 48.839612,
"longitude": 2.296145,
"listingUrl": "https://www.laforet.com/agence-immobiliere/paris15convention/acheter/paris-15/appartement-3-pieces-53007812",
"sourcePlatform": "laforet-immo-api",
"listedAt": "2026-10-30T14:20:00+00:00",
"scrapedAt": "2026-10-31T22:55:00.114209+00:00"
}

Programmatic Usage (Python SDK)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run_input = {
"locations": ["Paris", "Lyon", "Bordeaux"],
"propertyTypes": ["apartment", "house"],
"transactionType": "sale",
"minPrice": 150000,
"minSurfaceArea": 30,
"maxResults": 50,
}
run = client.actor("kleioks/real-estate-market-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(
f"[{item['city']} {item['postalCode']}] {item['propertyTitle']} — "
f"{item['price']:,.0f} {item['currency']} ({item['pricePerSqm']} €/m²) | "
f"DPE: {item['energyRating']} | Agency: {item['agentOrAgency']} ({item['agentPhone']})"
)

No-Code, Make, n8n, Clay & AI Agent (MCP) Integrations

1. Make.com & n8n Automated Deal-Sourcing Alerts

  1. Schedule the Apify Node in n8n or Make.com to run every morning across your target cities (Paris, Lyon, Bordeaux, Nice, Nantes).
  2. Add a router condition filtering properties where pricePerSqm is 15% below your neighborhood threshold or where energyRating is "F" or "G" (passoires thermiques with high negotiation margin).
  3. Send instant deal cards with listingUrl, price, surfaceArea, and agentPhone to Slack, Telegram, Airtable, or Notion.

2. Clay.com Real Estate Agency B2B Prospecting

Import the dataset directly into Clay using agentOrAgency, agentPhone, city, and postalCode to build segmented outbound lists of active real estate brokerages for PropTech SaaS, mortgage brokerage partnerships, or renovation services.

3. Model Context Protocol (MCP) for Claude, Cursor & AI Agents

Connect this Actor to Claude Desktop, Cursor, or custom PropTech AI assistants via the official Apify MCP server:

{
"mcpServers": {
"apify-real-estate": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--actors",
"kleioks/real-estate-market-scraper"
],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_API_TOKEN"
}
}
}
}

Frequently Asked Questions (FAQ)

How does this Real Estate scraper calculate Price per Square Meter ($\text{price}/\text{m}^2$)?

Every extracted property record is validated through Pydantic v2, which automatically divides the listed price by the verified surfaceArea (Carrez or living floor area) and rounds pricePerSqm to two decimal places—delivering ready-to-analyze valuation metrics with zero spreadsheet formulas.

Can I filter properties by Energy Performance Rating (DPE A to G)?

Yes. The Actor asynchronously enriches listings with their official DPE class (A through G) (energyRating), allowing institutional investors and marchands de biens to identify thermal-renovation opportunities (F and G ratings) immediately.

Can I scrape custom real estate agency URLs in addition to city searches?

Yes. Any URL passed in targetUrls is parsed using a universal Schema.org JSON-LD (RealEstateListing, Apartment, SingleFamilyResidence, Offer) and contact extractor.


Complete B2B Intelligence Suite by Kleioks

Combine this Actor with our specialized B2B data engines on the Apify Store to build end-to-end GTM, RevOps, and market research pipelines:

ActorPrimary B2B Use CaseStore Link
Real Estate Market Intelligence APINormalized property listings, automated price/m² valuation, DPE ratings & agency contactsOpen on Apify Store
Google Maps B2B Lead MachineHigh-speed local business lead extractor (phone, website, rating & missing-website signals)Open on Apify Store
Multi-ATS Career Jobs APITrack real-time hiring intent & tech-stack signals across Greenhouse, Lever, Ashby & WorkableOpen on Apify Store
Reddit B2B Buying Intent ScraperMonitor competitor churn, software recommendations & high-intent buyer threads on RedditOpen on Apify Store
B2B Social Leads & Intent ExtractorDiscover SaaS founders, developers & decision-makers across Bluesky, GitHub & Hacker NewsOpen on Apify Store
Influencer & Creator Discovery APIExtract TikTok, Instagram & YouTube creator profiles, engagement rates & verified PR emailsOpen on Apify Store