France Real Estate Sold Prices (DVF): €/m², Sales & Trends
Pricing
from $0.35 / 1,000 property sales
France Real Estate Sold Prices (DVF): €/m², Sales & Trends
Real estate France: sold house prices from the State's record of property sales in France (DVF, valeurs foncières, prix immobilier) — price, €/m², address, 2021-2025, with the energy rating (DPE) of the home sold and indicative rental yield (rendement locatif). Medians per city, alerts on new sales.
Pricing
from $0.35 / 1,000 property sales
Rating
0.0
(0)
Developer
EuroScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Every real property sale registered by the French State, for any city — with the actual price paid, not an estimate. DVF ("Demandes de valeurs foncières") is the official record of notarized sales. This Actor turns it into clean, filterable data: one row per sale, with €/m², surface, rooms, full address and GPS coordinates.

- 🏠 Real prices: what buyers actually paid, from notary records — the ground truth behind every French property estimate site.
- ⚡ Energy rating of each home sold: every sale is matched to its official energy certificate (DPE, ADEME open data) — class A-G, CO2 class, kWh/m²/year — so you can finally measure what an "energy sieve" is worth. In Grenoble, apartments rated F or G sold 16% cheaper per m² than C and D ones (2024-2025, 2,518 matched sales).
- 💶 Indicative rental yield: each sale is compared with the State's asking-rent indicator for its commune (Carte des loyers), and the free summary gives the median gross yield — 6.6% for Grenoble apartments, 4.0% for Paris, 9.9% for Saint-Étienne (sales of 2024-2025) — and ranks arrondissements and communes.
- 📍 Any location: city name, postal code or INSEE code. Paris, Lyon and Marseille work as a whole city, by arrondissement ("Paris 11e") or by postal code ("75011").
- 📈 Free market statistics per location: median €/m² for apartments and houses, year-by-year trend (2021-2025), share of new builds, most active streets.
- 🧮 €/m² done right: a DVF "sale" spreads over several rows (one per unit); the Actor regroups them and only computes €/m² on clean single-dwelling sales — the classic DVF mistake, avoided.
✨ Why this Actor
| 🗃️ Official & complete | Direct from the State's open-data files (Etalab), sale years 2021-2025, updated by the State about twice a year. |
| ⚡ Price × energy class | Each sale carries the energy rating of the home when its certificate can be matched with confidence (about one sale in two), and the free summary gives the median €/m² per class. The match is made on the home itself (address, property type, surface, date), not on the neighbourhood. |
| 💶 Price × rent | Indicative gross yield per sale and per city, by apartment size, with a reliability flag taken from the State's own caution thresholds. Bundled data: no extra time, no extra cost. |
| 🔍 Real filters | Property type, surface, price, rooms, new builds (VEFA) only / excluded. |
| 🗺️ Mapping-ready | Latitude/longitude on sales, plus a dedicated "Map data" dataset view. |
| 🔔 New-sale alerts | Schedule it with a monitor name: when the State publishes fresh sales for your area, you get them flagged new — with Telegram, Slack, Discord or webhook alerts. |
| 💶 Cheap at scale | $0.0005 per sale: a whole year of a mid-size city (about 2,500 house and apartment sales in Grenoble) costs about $1.25. Statistics are free and computed on all matching sales even when the dataset is capped. |
🎯 Use cases
- Investors & buyers: what was actually paid in the street you're targeting, and whether prices are rising or falling.
- Real-estate pros: automated comps (comparable sales) for valuations, with addresses and dates.
- Proptech & data teams: a clean sales feed per city, without parsing the State's multi-row CSV format yourself.
- Renovation & energy players: the price gap between energy classes in your city, with real sales to back it.
- Journalists & analysts: €/m² trends by city and street, from the source.
🚀 Examples
Apartment sales in Grenoble, 2024-2025:
{"locations": ["Grenoble"],"years": [2024, 2025],"propertyTypes": ["apartment"]}
Family houses around Bordeaux, filtered:
{"locations": ["Bordeaux", "33110", "33200"],"years": [2023, 2024, 2025],"propertyTypes": ["house"],"minSurface": 90,"minRooms": 4,"maxPrice": 800000}
Alert when the State publishes new sales in your area:
{"locations": ["Grenoble"],"years": [2024, 2025],"monitorName": "grenoble-dvf","telegramBotToken": "123456:ABC…","telegramChatId": "123456789"}
📦 Output
A sale (real sale; street number, IDs and exact coordinates masked here — see the reuse conditions in the FAQ):
{"type": "sale","location": "Grenoble","saleId": "2025-5061••","date": "2025-11-14","price": 139500,"propertyType": "apartment","isNewBuild": false,"surface": 65,"rooms": 3,"pricePerM2": 2146,"dwellings": 1,"outbuildings": 2,"address": "•• RUE SIDI BRAHIM","postalCode": "38100","city": "Grenoble","inseeCode": "38185","department": "38","latitude": 45.179,"longitude": 5.717,"energyRating": "F","ghgRating": "E","energyKwhM2Year": 357,"energyRatingIssuedAt": "2024-07-03","energyRatingMatch": "high","dpeNumber": "2438E••••••••","rentIndicatorPerM2": 12.21,"grossRentalYieldPct": 6.8,"rentIndicatorReliable": true}
The free location summary (real data, apartments in Grenoble, ≥30 m², ≥2 rooms):
{"type": "locationSummary","location": "Grenoble","salesMatching": 3716,"apartments": { "sales": 3716, "medianPrice": 153000, "medianPricePerM2": 2381, "medianSurface": 67 },"byYear": [{ "year": 2024, "sales": 1848, "apartmentMedianPricePerM2": 2389 },{ "year": 2025, "sales": 1868, "apartmentMedianPricePerM2": 2370 }],"mostActiveStreets": [{ "street": "CRS LIBERATION - GEN DE GAULLE", "city": "Grenoble", "sales": 118 }]}
Price per energy class, in the same free summary (real data — all 4,791 apartment sales of Grenoble, 2024-2025):
{"energyRatings": {"salesChecked": 4559,"salesWithRating": 2518,"sharePct": 55.2,"apartments": {"A": { "sales": 15, "medianPricePerM2": 3317 },"B": { "sales": 103, "medianPricePerM2": 2727 },"C": { "sales": 760, "medianPricePerM2": 2802 },"D": { "sales": 1039, "medianPricePerM2": 2398 },"E": { "sales": 447, "medianPricePerM2": 2386 },"F": { "sales": 104, "medianPricePerM2": 2145 },"G": { "sales": 50, "medianPricePerM2": 2173 }}},"energySource": "ADEME — DPE Logements existants (depuis juillet 2021), Licence Ouverte / Open Licence"}
Rental yields, in the same free summary (real data — all house and apartment sales of Paris, 2024-2025, shortened):
{"rentalYield": {"edition": 2025,"apartments": { "sales": 54449, "medianGrossYieldPct": 4 },"apartments1to2Rooms": { "sales": 33647, "medianGrossYieldPct": 4.2 },"apartments3RoomsOrMore": { "sales": 20717, "medianGrossYieldPct": 3.7 },"houses": { "sales": 270, "medianGrossYieldPct": 2.2 },"apartmentsByCommune": [{ "city": "Paris 13e", "inseeCode": "75113", "sales": 2776, "medianPricePerM2": 8654, "rentIndicatorPerM2": 30.36, "medianGrossYieldPct": 4.3 },{ "city": "Paris 19e", "inseeCode": "75119", "sales": 2850, "medianPricePerM2": 7964, "rentIndicatorPerM2": 27.7, "medianGrossYieldPct": 4.3 },{ "city": "Paris 7e", "inseeCode": "75107", "sales": 1702, "medianPricePerM2": 14026, "rentIndicatorPerM2": 36.54, "medianGrossYieldPct": 3.2 }]}}
💰 Pricing
| Event | Price |
|---|---|
| Run start | $0.003 |
| Property sale | $0.0005 |
| Energy rating of each sale | free |
| Indicative rental yield | free |
| Location summaries (medians, trends) | free |
1,000 sales = $0.50. Apify subscribers pay less: −10% (Starter), −20% (Scale), −30% (Business). Set a maximum cost per run in the run options and the Actor stops cleanly when it's reached.
❓ FAQ
How fresh is the data? DVF is published by the French State with a delay: sales appear a few months after the notary act, in two yearly releases (around April and October). Year 2025 is partial until the final release. This is the same source and freshness as every French price-estimate website.
Why is pricePerM2 sometimes null? A sale can bundle several dwellings or lack a declared surface; computing €/m² there would be wrong. The Actor only computes it for single-dwelling sales with known price and surface, and the summaries use only those — that's what makes the medians trustworthy.
Are Alsace-Moselle and Mayotte covered? No — the State does not publish DVF for Bas-Rhin, Haut-Rhin, Moselle (separate land registry) and Mayotte. Everything else, including DOM, is covered.
What exactly is a "sale"? One notarized mutation (Vente or VEFA). Exchanges, expropriations and adjudications are excluded by default. Outbuildings sold alone (parkings, cellars) appear only if you add outbuilding to propertyTypes.
How is the energy rating matched to a sale? DVF gives the street code and number of each sale; the Actor rebuilds the national address ID and looks up the certificates (DPE) registered at that address. A class is attached only when the property type and the surface agree and the certificate was issued in the two years before the sale (a certificate is mandatory to sell). energyRatingMatch tells you how sure it is: high when the Carrez surface written in the deed equals the certificate surface within 1 m², medium when only the built surface agrees. When several homes of a building fit with different classes, nothing is attached rather than guessing. On Grenoble apartments, when both rules could be applied they gave the same class 96% of the time.
Why do some sales have no energy rating? About one eligible sale in two gets one (55% in our Grenoble run). The rest are ambiguous buildings, sales whose certificate predates July 2021 (the current DPE method; older certificates are not in ADEME's dataset — so 2021 and early 2022 sales rarely match), and addresses the two registers spell differently. New builds (VEFA) and multi-dwelling sales are not matched. Set includeEnergyRating to false to skip the matching.
How is the rental yield computed? grossRentalYieldPct = the rent indicator × 12 ÷ the sale price per m². The rent indicator comes from the State's "Carte des loyers" (ANIL, 2025 edition, updated every December): an asking rent, charges included, for a typical unfurnished home advertised in the commune — an apartment of 1-2 rooms (37 m²), of 3 rooms or more (72 m²), or a house (92 m²), matched to the home sold. It is a gross, indicative figure: not the rent of that home, and no costs, taxes or vacancy deducted. rentIndicatorReliable is false when the State's own caution thresholds are not met (estimate made on a wider area, fewer than 30 listings, or a weak model fit).
Do energy sieves really yield more? On paper, yes: in Grenoble the median gross yield goes from 5.9% for class C to 7.8% for class G (2024-2025), because the price is discounted while the rent indicator ignores the rating. But a G-rated home can no longer be let under a new lease since 2025 — that "yield" is the budget for the renovation.
Are there conditions on reusing this data? Yes. DVF is open data (Licence Ouverte 2.0), but French law (article R112 A-3 of the Livre des procédures fiscales) adds two conditions: your use must not allow people to be re-identified, and the individual records must not be made indexable by search engines. Keep that in mind if you republish sales on a public website.
Can I map the results? Yes: sales carry latitude/longitude, and the "Map data" view exports a mapping-ready table (CSV/JSON).
🔌 API, AI agents and integrations
- API: one call runs the Actor and returns the results,
POST https://api.apify.com/v2/acts/euroscrape~france-property-prices/run-sync-get-dataset-items(see the API tab for Python, JavaScript and cURL). - AI agents (MCP): add
https://mcp.apify.com?tools=euroscrape/france-property-pricesto Claude, Cursor, VS Code or any MCP client, and the Actor becomes a tool your agent can call. - No-code automation: start runs and pass the results on with Apify's integrations for n8n, Make and Zapier, or with a webhook when a run ends.
- Exports: every result set downloads as JSON, CSV, Excel or XML, and can be sent to Google Sheets.
⭐ Your feedback
If this Actor saves you time, a short review on Apify Store helps other users find it. Missing a filter or a statistic? Say it in your review: the most requested features are added first.
🔗 More from EuroScrape
- France Energy Ratings (DPE): Homes, Energy Sieves & Alerts: official energy certificates of French homes — class, address, consumption, yearly bill — with the F/G energy sieves of any city and alerts on new certificates.
- France Building Permits (Sitadel): Projects, Builders & Alerts: official register of French building permits — housing programmes and commercial buildings with the developer (name, SIREN), address, size and status, and alerts when works start.
- France Fuel Prices: Cheapest Stations Near You & Alerts: live official prices of all ~10,000 French stations — cheapest Diesel, E10, E85 or LPG around any point, with distances and price-drop alerts.
- French Companies Scraper (SIRENE): every French company by activity, area and size, with verified websites and emails.
- EU Public Tenders Scraper: TED, BOAMP & Awards: open tenders and contract awards from all of Europe (TED) and France (BOAMP, DECP), with winners per lot, values in € and daily alerts.
- EU VAT Number Validator (VIES): Bulk Check, Proof & Alerts: validate VAT numbers in bulk against the EU's official registry, with consultation proof for tax audits and alerts when a customer's number becomes invalid.
- Impressum & Legal Notice Scraper (EU): legal identity, registry numbers and VAT IDs from any website, registry-verified.
- UK Companies House Scraper: UK companies by SIC code and location, with directors, websites and emails.
- Website Tech Stack Detector: 280+ Technologies, Leads & Signals: technologies, company identity, contacts and sales signals for any website.
- Google Hotels Scraper: Prices from Every Booking Site: hotel prices for any destination and dates, with the price on every booking site, rate parity, price calendars and alerts.
- Google Flights Scraper: Cheapest Dates, Prices & Price History: flight prices for any route and dates, cheapest day to fly, typical price range and price-drop alerts.
- Vinted Scraper: 26 Countries, Deals, Alerts & Seller Data: search Vinted across 26 countries, prices with buyer fees, seller ratings and instant alerts on new listings.
- EU Second-Hand Marketplaces Scraper: Vinted, OLX & More: one search on the top second-hand marketplaces of 18 European countries, prices in €, cheapest country and resale margin.
- Kleinanzeigen Scraper: Deal Finder & Price-Drop Alerts: German classifieds with view counts, full seller details and instant alerts.
- App Store Reviews Scraper + Google Play Reviews: reviews from both stores in 58 countries, rating by version and country, alerts on new negative reviews.
- Ryanair Low Fare Finder: Cheapest Days, Anywhere & Alerts: Ryanair fare calendars months ahead, every destination under your price cap from any airport, and alerts on drops and new deals.
- EU Electricity Prices (Day-Ahead): All Zones & Cheap Hours: tomorrow's spot prices for 40+ European bidding zones, the cheapest 3-hour window of each day, negative-price alerts and years of history.