{
  "openapi": "3.0.1",
  "info": {
    "title": "France RGE Installers - Certified Renovation Firm Leads",
    "description": "From $0.90 per 1,000 companies, no start fee. France's official ADEME RGE register: ~60,012 certified renovation firms with SIRET, email, phone, website, address, coordinates and every RGE qualification held. Deduplicated by SIRET. Filter by department, trade, certifier, keyword or radius.",
    "version": "0.1",
    "x-build-id": "gAyEqvfFWvNQOFkzn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~rge-installers-fr-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-rge-installers-fr-scraper",
        "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/scrapersdelight~rge-installers-fr-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-rge-installers-fr-scraper",
        "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/scrapersdelight~rge-installers-fr-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-rge-installers-fr-scraper",
        "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": {
          "oneRowPerCompany": {
            "title": "One row per company (deduplicate by SIRET)",
            "type": "boolean",
            "description": "ON (recommended): one row per company, with all of its qualifications collapsed into a `qualifications` array plus `qualificationCount`. You are charged once per company. OFF: one row per qualification, the raw register grain, which means the same company appears about 2.67 times on average and is charged each time.",
            "default": true
          },
          "postalPrefixes": {
            "title": "Departments / postal prefixes",
            "type": "array",
            "description": "French department codes or postal prefixes, matched against the firm's postal code: \"75\" = Paris, \"69\" = Rhône, \"971\" = Guadeloupe, \"75001\" = one exact postal code. Use \"2A\" / \"2B\" for Corsica — both share the 20xxx range, so the actor expands them (2A = 200xx/201xx, 405 rows; 2B = 202xx-206xx, 461 rows). Multiple entries are OR-ed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "centreLatitude": {
            "title": "Radius search - centre latitude",
            "type": "string",
            "description": "Optional radius search instead of (or as well as) postal prefixes. Latitude of the centre point, e.g. 48.8566 for Paris. Needs all three radius fields."
          },
          "centreLongitude": {
            "title": "Radius search - centre longitude",
            "type": "string",
            "description": "Longitude of the centre point, e.g. 2.3522 for Paris."
          },
          "radiusKm": {
            "title": "Radius search - radius in km",
            "type": "string",
            "description": "Radius in kilometres around the centre point. Measured: 10 km of central Paris = 6,271 qualification rows, 10 km of central Lyon = 2,061."
          },
          "workCategories": {
            "title": "Work category",
            "type": "array",
            "description": "Top-level category (`meta_domaine`). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Travaux d'efficacité énergétique",
                "Installations d'énergies renouvelables",
                "Etudes énergétiques",
                "Rénovation globale"
              ],
              "enumTitles": [
                "Travaux d'efficacité énergétique  (91 228 rows)",
                "Installations d'énergies renouvelables  (51 724 rows)",
                "Etudes énergétiques  (12 282 rows)",
                "Rénovation globale  (5 020 rows)"
              ]
            },
            "default": []
          },
          "workDomains": {
            "title": "Work domain (trade)",
            "type": "array",
            "description": "The specific trade (`domaine`) - heat pumps, external wall insulation, solar PV, wood stoves, energy audits and so on. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Isolation par l'intérieur des murs ou rampants de toitures  ou plafonds",
                "Chauffe-Eau Thermodynamique",
                "Pompe à chaleur : chauffage",
                "Fenêtres, volets, portes donnant sur l'extérieur",
                "Isolation des combles perdus",
                "Isolation des murs par l'extérieur",
                "Poêle ou insert bois",
                "Isolation des toitures terrasses ou des toitures par l'extérieur",
                "Fenêtres de toit",
                "Ventilation mécanique",
                "Panneaux solaires photovoltaïques",
                "Chaudière condensation ou micro-cogénération gaz ou fioul",
                "Audit énergétique Maison individuelle",
                "Isolation des planchers bas",
                "Radiateurs électriques, dont régulation.",
                "Architecte",
                "Chaudière bois",
                "Audit énergétique Logement collectif",
                "Chauffage et/ou eau chaude solaire",
                "Etude thermique reglementaire",
                "Etude solaire photovoltaïque",
                "Etude forage géothermique",
                "Etude bois énergie",
                "Projet complet de rénovation",
                "Etude ACV",
                "Etude système technique bâtiment",
                "Etude solaire thermique",
                "Etude eclairage",
                "Etude enveloppe du bâtiment",
                "Forage géothermique",
                "Commisionnement"
              ],
              "enumTitles": [
                "Isolation par l'intérieur des murs ou rampants de toitures  ou plafonds  (18 199 rows)",
                "Chauffe-Eau Thermodynamique  (16 424 rows)",
                "Pompe à chaleur : chauffage  (15 650 rows)",
                "Fenêtres  volets  portes donnant sur l'extérieur  (14 584 rows)",
                "Isolation des combles perdus  (11 382 rows)",
                "Isolation des murs par l'extérieur  (9 863 rows)",
                "Poêle ou insert bois  (7 490 rows)",
                "Isolation des toitures terrasses ou des toitures par l'extérieur  (7 371 rows)",
                "Fenêtres de toit  (6 807 rows)",
                "Ventilation mécanique  (6 752 rows)",
                "Panneaux solaires photovoltaïques  (6 304 rows)",
                "Chaudière condensation ou micro-cogénération gaz ou fioul  (6 105 rows)",
                "Audit énergétique Maison individuelle  (5 966 rows)",
                "Isolation des planchers bas  (5 426 rows)",
                "Radiateurs électriques  dont régulation.  (4 740 rows)",
                "Architecte  (4 518 rows)",
                "Chaudière bois  (3 785 rows)",
                "Audit énergétique Logement collectif  (2 197 rows)",
                "Chauffage et/ou eau chaude solaire  (1 948 rows)",
                "Etude thermique reglementaire  (1 427 rows)",
                "Etude solaire photovoltaïque  (1 056 rows)",
                "Etude forage géothermique  (780 rows)",
                "Etude bois énergie  (668 rows)",
                "Projet complet de rénovation  (502 rows)",
                "Etude ACV  (457 rows)",
                "Etude système technique bâtiment  (443 rows)",
                "Etude solaire thermique  (375 rows)",
                "Etude eclairage  (340 rows)",
                "Etude enveloppe du bâtiment  (221 rows)",
                "Forage géothermique  (122 rows)",
                "Commisionnement  (106 rows)"
              ]
            },
            "default": []
          },
          "certifiers": {
            "title": "Certifying body",
            "type": "array",
            "description": "The body that issued the RGE qualification (`organisme`). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "qualibat",
                "qualitenr",
                "opqibi",
                "cnoa",
                "qualifelec",
                "cerqual",
                "afnor",
                "certibat",
                "opqtecc",
                "lne",
                "qualiclimafroid"
              ],
              "enumTitles": [
                "qualibat  (95 848 rows)",
                "qualitenr  (43 643 rows)",
                "opqibi  (8 665 rows)",
                "cnoa  (7 849 rows)",
                "qualifelec  (3 552 rows)",
                "cerqual  (326 rows)",
                "afnor  (165 rows)",
                "certibat  (130 rows)",
                "opqtecc  (19 rows)",
                "lne  (10 rows)",
                "qualiclimafroid  (3 rows)"
              ]
            },
            "default": []
          },
          "certificates": {
            "title": "Certificate name",
            "type": "array",
            "description": "Exact certificate label (`nom_certificat`), for the 43 values the register uses. The big ones are \"QUALIBAT-RGE\" (95 848 rows), \"QualiPAC module Chauffage et ECS\" (24 700 rows), \"Certificat OPQIBI\" (8 665 rows), \"Tableau de l´Ordre\" (7 849 rows), \"Qualibois Eau\" (6 208 rows), \"Certificat Qualifelec RGE\" (3 552 rows). Anything not in the live list fails the run before it charges you.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Free-text search",
            "type": "string",
            "description": "Full-text search across every field - company name, qualification, address. Measured: \"pompe a chaleur\" matches 21,061 qualification rows. Combined with the filters above using AND."
          },
          "onlyCurrentQualifications": {
            "title": "Only currently-valid qualifications",
            "type": "boolean",
            "description": "Keep only qualifications whose end date is today or later. Measured 2026-09-16: 159,807 of 160,281 rows (99.70%) are current, so this register is live rather than an archive - but the 0.30% that lapsed are exactly the firms you do not want to pitch as RGE partners.",
            "default": true
          },
          "worksForHomeownersOnly": {
            "title": "Only firms that work for homeowners",
            "type": "boolean",
            "description": "The register's `particulier` flag - the firm takes private-homeowner work (MaPrimeRénov' / CEE jobs) rather than commercial or public contracts only. Measured: 154,590 of 160,281 rows (96.45%).",
            "default": false
          },
          "requireContact": {
            "title": "Only firms with an email or a phone",
            "type": "boolean",
            "description": "Filter at the source so you never pay for a row you cannot act on. Measured: 159,404 of 160,281 rows (99.45%) carry an email or a phone; only ~33 companies in the whole register publish neither an email, a phone nor a website.",
            "default": false
          },
          "maxCompanies": {
            "title": "Max rows",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on rows delivered - and therefore on rows charged. Counts companies when \"one row per company\" is on, qualifications when it is off. 0 means no cap: the whole register is ~60,012 companies / 160,281 qualification rows, about 3 minutes. A capped run walks the register in SIRET order, so it returns the numerically lowest SIRETs first - use the filters above when you want a specific slice rather than the first N.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. data.ademe.fr has no anti-bot, no user-agent gate and no rate limit (measured: 20 concurrent requests -> 20x HTTP 200), so datacenter is plenty and no proxy at all also works.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}