# France Energy Ratings (DPE): Homes, Energy Certificates, Sieves (`euroscrape/france-energy-ratings`) Actor

DPE scraper & DPE API: official energy performance certificates (EPC, diagnostic de performance énergétique) of French homes (ADEME data) — energy efficiency class & CO2 class, address, surface, consumption, yearly bill, insulation. Find F/G energy sieves (passoires thermiques); alerts on new ones.

- **URL**: https://apify.com/euroscrape/france-energy-ratings.md
- **Developed by:** [EuroScrape](https://apify.com/euroscrape) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 energy ratings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## France Energy Ratings (DPE): Homes, Energy Sieves & Alerts

**The official energy performance certificate (DPE) of French homes, by city — from ADEME's open data.** Give it a city or a postal code and get each certificate with its energy and CO2 class, address, GPS, surface, consumption, estimated yearly energy bill and insulation quality, most recent first, plus a free breakdown of the whole area by class.

![Energy sieves of any French city, from official ADEME data](https://raw.githubusercontent.com/EuroScrape/apify-actors/main/assets/demo-france-energy-ratings.gif)

- 🏠 **Official and address-level**: 15+ million certificates issued since July 2021, published by ADEME under the Licence Ouverte.
- 🔥 **Find the energy sieves**: filter on F and G — the classes hit by France's rental ban (G since 2025, F from 2028, E from 2034). Every row carries its `rentalBanFrom` year.
- 📊 **The breakdown is free**: of the 851,359 certificates on record for Paris at the time of writing, **18.2% are F or G**; in Grenoble, 7.8%. One run, any city.
- 🔔 **New-certificate alerts**: a fresh DPE usually means a sale or a new lease is coming. Schedule the Actor with a monitor name and get only the new certificates, on Telegram, Discord, Slack or a webhook.

### ✨ Why this Actor

| | |
|---|---|
| 🇫🇷 **Any city, in plain words** | City name, postal code or INSEE code. Paris, Lyon and Marseille cover all their arrondissements. |
| 💶 **The bill, not just the letter** | Estimated yearly energy cost, kWh/m²/year and kg CO2/m²/year on every row. |
| 🧱 **Why it is rated that way** | Insulation quality of the envelope, walls, windows and floor, main energy, construction period, summer comfort. |
| 📍 **Map-ready** | Geocoded address with latitude and longitude. |
| 🆓 **Free summaries** | Per location: certificates per class A-G with shares, and the F+G count. |

### 🎯 Use cases

- **Renovation & insulation companies**: the F/G homes of your area, most recent certificates first — owners who have just been told their home is a sieve.
- **Real-estate agents & investors**: new certificates signal upcoming sales and lettings; poorly rated homes trade at a discount.
- **Landlords & property managers**: which classes fall under the rental ban, and when.
- **Analysts & journalists**: class breakdown by city, comparable across France, straight from the source.

### 🚀 Examples

**The latest energy sieves of Grenoble:**

```json
{
  "locations": ["Grenoble"],
  "ratings": ["F", "G"],
  "maxRatingsPerLocation": 50
}
```

**Houses over 100 m² rated F or G, two postal codes:**

```json
{
  "locations": ["69003", "33000"],
  "ratings": ["F", "G"],
  "propertyType": "house",
  "minSurface": 100
}
```

**Daily alerts on new certificates in your area:**

```json
{
  "locations": ["Bordeaux"],
  "ratings": ["E", "F", "G"],
  "monitorName": "bordeaux-dpe",
  "telegramBotToken": "123456:ABC…",
  "telegramChatId": "123456789"
}
```

### 📦 Output

**A certificate** (real data; street number, certificate number and exact coordinates masked here):

```json
{
  "type": "dpe",
  "location": "Grenoble",
  "dpeNumber": "2638E••••••••",
  "energyRating": "G",
  "ghgRating": "G",
  "issuedAt": "2026-09-28",
  "validUntil": "2036-09-27",
  "rentalBanFrom": 2025,
  "propertyType": "apartment",
  "surfaceM2": 35,
  "constructionPeriod": "avant 1948",
  "floor": 0,
  "address": "•• Rue Marx Dormoy 38000 Grenoble",
  "postalCode": "38000",
  "city": "Grenoble",
  "inseeCode": "38185",
  "latitude": 45.188,
  "longitude": 5.707,
  "primaryEnergyKwhM2Year": 697,
  "ghgKgCo2M2Year": 116,
  "estimatedAnnualEnergyCostEur": 2501,
  "mainEnergy": "Gaz naturel",
  "insulation": { "envelope": "poor", "walls": "poor", "windows": "average", "floor": "very good" },
  "summerComfort": "poor"
}
```

**The free location summary** (real data, shortened):

```json
{
  "type": "locationSummary",
  "location": "Paris",
  "totalRatings": 851359,
  "byRating": {
    "C": { "count": 190886, "sharePct": 22.4 },
    "D": { "count": 263445, "sharePct": 30.9 },
    "E": { "count": 231323, "sharePct": 27.2 },
    "F": { "count": 95204, "sharePct": 11.2 },
    "G": { "count": 59608, "sharePct": 7 }
  },
  "energySieves": { "count": 154812, "sharePct": 18.2 },
  "source": "ADEME — DPE Logements existants (depuis juillet 2021), Licence Ouverte / Open Licence"
}
```

### 💰 Pricing

| Event | Price |
|---|---|
| Run start | $0.003 |
| Energy rating (one certificate) | $0.001 |
| Location summaries | free |

100 certificates ≈ $0.10. In monitoring mode you only pay for certificates you have not seen yet. 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

**Does it cover every home in France?** No — only homes that received a certificate since July 2021 (the current DPE method). A DPE is mandatory when a home is sold or let, so coverage grows every day. The shares in the summary are shares of certificates, not of all dwellings.

**Can one home appear twice?** Yes, if it was assessed more than once. Each certificate has its own `dpeNumber` and date; results are sorted most recent first.

**How fresh is the data?** ADEME refreshes the dataset regularly, in batches; at the time of writing the newest certificates were five days old. For monitoring, a daily or weekly schedule is plenty.

**What is `rentalBanFrom`?** The year from which a home of that class can no longer be let under a new lease in mainland France (Climate and Resilience law): G 2025, F 2028, E 2034. It is derived from the class and is not legal advice.

**Why are some values in French?** `constructionPeriod` and `mainEnergy` are kept exactly as published by ADEME.

**Is this official data?** Yes — ADEME's open dataset "DPE Logements existants (depuis juillet 2021)", Licence Ouverte. Occupants' names are not part of the dataset.

### 🔌 API, AI agents and integrations

- **API**: one call runs the Actor and returns the results, `POST https://api.apify.com/v2/acts/euroscrape~france-energy-ratings/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-energy-ratings` to 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 field or a filter? Say it in your review: the most requested features are added first.

### 🔗 More from EuroScrape

- [France Real Estate Sold Prices (DVF): €/m², Sales & Trends](https://apify.com/euroscrape/france-property-prices): every property sale registered by the French State — real prices, €/m², addresses, GPS, market trends per city and alerts on new sales.
- [France Building Permits (Sitadel): Projects, Builders & Alerts](https://apify.com/euroscrape/france-building-permits): 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](https://apify.com/euroscrape/france-fuel-prices): 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)](https://apify.com/euroscrape/france-companies): every French company by activity, area and size, with verified websites and emails.
- [EU Electricity Prices (Day-Ahead): All Zones & Cheap Hours](https://apify.com/euroscrape/eu-electricity-prices): tomorrow's spot prices for 40+ European bidding zones, the cheapest 3-hour window of each day, negative-price alerts and years of history.
- [Google Flights Scraper: Cheapest Dates, Prices & Price History](https://apify.com/euroscrape/google-flights-prices): flight prices for any route and dates, cheapest day to fly, typical price range and price-drop alerts.
- [Ryanair Low Fare Finder: Cheapest Days, Anywhere & Alerts](https://apify.com/euroscrape/ryanair-low-fares): Ryanair fare calendars months ahead, every destination under your price cap from any airport, and alerts on drops and new deals.
- [Google Hotels Scraper: Prices from Every Booking Site](https://apify.com/euroscrape/google-hotels-prices): hotel prices for any destination and dates, with the price on every booking site, rate parity, price calendars and alerts.
- [Vinted Scraper: 26 Countries, Deals, Alerts & Seller Data](https://apify.com/euroscrape/vinted-scraper): 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](https://apify.com/euroscrape/eu-marketplace-deals): 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](https://apify.com/euroscrape/kleinanzeigen-scraper): German classifieds with view counts, full seller details and instant alerts.
- [EU Public Tenders Scraper: TED, BOAMP & Awards](https://apify.com/euroscrape/eu-public-tenders): 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](https://apify.com/euroscrape/vat-validator): 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.
- [App Store Reviews Scraper + Google Play Reviews](https://apify.com/euroscrape/app-reviews): reviews from both stores in 58 countries, rating by version and country, alerts on new negative reviews.
- [Website Tech Stack Detector: 280+ Technologies, Leads & Signals](https://apify.com/euroscrape/website-intelligence): technologies, company identity, contacts and sales signals for any website.
- [UK Companies House Scraper](https://apify.com/euroscrape/uk-companies): UK companies by SIC code and location, with directors, websites and emails.
- [Impressum & Legal Notice Scraper (EU)](https://apify.com/euroscrape/company-identity): legal identity, registry numbers and VAT IDs from any website, registry-verified.

# Actor input Schema

## `locations` (type: `array`):

French cities ("Grenoble"), postal codes ("38000") or INSEE codes. Paris, Lyon and Marseille cover all their arrondissements.

## `ratings` (type: `array`):

Keep only these DPE classes. F and G are the "energy sieves" (passoires thermiques). Leave empty for all classes.

## `propertyType` (type: `string`):

Apartments, houses, or both.

## `minSurface` (type: `integer`):

Living area of at least this many square metres.

## `maxSurface` (type: `integer`):

Living area of at most this many square metres.

## `issuedAfter` (type: `string`):

Only certificates issued on or after this date (YYYY-MM-DD). A recent certificate usually means a sale or a new lease is coming.

## `maxRatingsPerLocation` (type: `integer`):

Most recent certificates first.

## `includeSummary` (type: `boolean`):

Breakdown of all certificates of the location by class (A-G), with the share of F/G energy sieves.

## `monitorName` (type: `string`):

Set a name and schedule the Actor (e.g. daily): after the first baseline run, each run delivers only the certificates you have not seen yet, and sends alerts.

## `telegramBotToken` (type: `string`):

Alerts on Telegram: create a bot with @BotFather and paste its token.

## `telegramChatId` (type: `string`):

Your chat ID (send a message to your bot, then open api.telegram.org/bot<token>/getUpdates).

## `discordWebhookUrl` (type: `string`):

Alerts in a Discord channel: Channel settings → Integrations → Webhooks.

## `slackWebhookUrl` (type: `string`):

Alerts in Slack: create an Incoming Webhook for your channel.

## `webhookUrl` (type: `string`):

Receives one POST per run with the new energy ratings (Make, Zapier, n8n…).

## `maxNotifications` (type: `integer`):

Maximum number of alert messages per run.

## Actor input object example

```json
{
  "locations": [
    "Grenoble"
  ],
  "ratings": [
    "F",
    "G"
  ],
  "propertyType": "all",
  "maxRatingsPerLocation": 50,
  "includeSummary": true,
  "maxNotifications": 30
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per certificate, most recent first.

## `runSummary` (type: `string`):

Counters for this run (items found, output, errors).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Grenoble"
    ],
    "ratings": [
        "F",
        "G"
    ],
    "maxRatingsPerLocation": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("euroscrape/france-energy-ratings").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["Grenoble"],
    "ratings": [
        "F",
        "G",
    ],
    "maxRatingsPerLocation": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("euroscrape/france-energy-ratings").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Grenoble"
  ],
  "ratings": [
    "F",
    "G"
  ],
  "maxRatingsPerLocation": 50
}' |
apify call euroscrape/france-energy-ratings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,euroscrape/france-energy-ratings"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dgGLW1cYzvz53jRL8/builds/eO5T6athFIWypXqOm/openapi.json
