{
  "openapi": "3.0.1",
  "info": {
    "title": "French DPE Energy Rating Search — Find Homes by Class",
    "description": "Search ADEME's 15.6-million-record energy-performance register by commune, postcode, department or radius, filtered by energy class, GES class, building type, floor area and construction year. Returns a full statistical profile plus the individual certificates.",
    "version": "0.1",
    "x-build-id": "NFrh23iIq2IoCADVb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dalbian~french-dpe-energy-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dalbian-french-dpe-energy-search",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/dalbian~french-dpe-energy-search/runs": {
      "post": {
        "operationId": "runs-sync-dalbian-french-dpe-energy-search",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/dalbian~french-dpe-energy-search/run-sync": {
      "post": {
        "operationId": "run-sync-dalbian-french-dpe-energy-search",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "communes": {
            "title": "Communes (INSEE codes)",
            "type": "array",
            "description": "Five-character INSEE codes, one per line. This is the sharpest scope: one commune is one local market. Corsican codes such as 2A004 work. Example: 84007 for Avignon.",
            "default": [
              "84007"
            ],
            "items": {
              "type": "string"
            }
          },
          "postcodes": {
            "title": "Postcodes",
            "type": "array",
            "description": "Five-digit postcodes, one per line. Looser than an INSEE code — a postcode can span several communes, and a large city can hold several postcodes.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Two- or three-character department codes such as 84, 2A or 974. Use these for regional market studies; expect large counts.",
            "items": {
              "type": "string"
            }
          },
          "aroundAddresses": {
            "title": "Around an address",
            "type": "array",
            "description": "French addresses, one per line. Each is geocoded and searched within the radius below, which follows real neighbourhoods rather than administrative boundaries.",
            "items": {
              "type": "string"
            }
          },
          "radiusMeters": {
            "title": "Radius (metres)",
            "minimum": 50,
            "maximum": 20000,
            "type": "integer",
            "description": "Search radius around each address. Only applies to the addresses above. 1000 m covers a neighbourhood; 200 m covers a street and its surroundings.",
            "default": 1000
          },
          "energyClasses": {
            "title": "Energy classes (DPE)",
            "type": "array",
            "description": "Keep only these energy classes. Leave empty for all. F and G are the classes the law now restricts: G homes can no longer be let, and F follows in 2028, which is why renovation and insulation businesses filter on exactly these two.",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            "default": []
          },
          "gasClasses": {
            "title": "Greenhouse-gas classes (GES)",
            "type": "array",
            "description": "Keep only these greenhouse-gas classes. Leave empty for all. A property can be decent on energy and poor on emissions, typically when it burns fuel oil or gas.",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            "default": []
          },
          "buildingTypes": {
            "title": "Building types",
            "type": "array",
            "description": "Keep only these building types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "maison",
                "appartement",
                "immeuble"
              ]
            },
            "default": []
          },
          "builtAfter": {
            "title": "Built after (year)",
            "minimum": 1700,
            "maximum": 2030,
            "type": "integer",
            "description": "Keep only buildings constructed in or after this year. Leave empty for no lower bound."
          },
          "builtBefore": {
            "title": "Built before (year)",
            "minimum": 1700,
            "maximum": 2030,
            "type": "integer",
            "description": "Keep only buildings constructed in or before this year. 1975 is the usual cut-off for pre-insulation housing stock."
          },
          "minFloorArea": {
            "title": "Minimum floor area (m²)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Keep only dwellings at or above this habitable area. Leave empty for no lower bound."
          },
          "maxFloorArea": {
            "title": "Maximum floor area (m²)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Keep only dwellings at or below this habitable area. Leave empty for no upper bound."
          },
          "assessedAfter": {
            "title": "Assessed after (date)",
            "type": "string",
            "description": "Keep only certificates issued on or after this date, as YYYY-MM-DD. The method changed in July 2021 and again in July 2024, so older certificates are not directly comparable with newer ones."
          },
          "includeStatistics": {
            "title": "Include statistics",
            "type": "boolean",
            "description": "Return one summary row per area: how many certificates match, the full class distribution in counts and percentages, the share of poorly rated stock, and average floor area, energy use and emissions. This is market analysis and contains no individual record.",
            "default": true
          },
          "includeRecords": {
            "title": "Include individual certificates",
            "type": "boolean",
            "description": "Also return the individual certificates behind the statistics, each with its address, classes, area, year and coordinates. Turn this off when you only need the shape of a market.",
            "default": true
          },
          "maxRecordsPerArea": {
            "title": "Certificates per area",
            "minimum": 1,
            "maximum": 6000,
            "type": "integer",
            "description": "How many individual certificates to return per area. The statistics are always computed over every match, no matter what this is set to, so a low value gives you the full picture cheaply.",
            "default": 100
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}