{
  "openapi": "3.0.1",
  "info": {
    "title": "French Company Search: SIRENE, SIREN, SIRET, NAF, VAT",
    "description": "Search and export French companies from the official SIRENE / Annuaire des Entreprises open API: SIREN, SIRET, NAF, address, GPS, headcount, revenue, VAT, labels. Filters by industry, department, size. GDPR-friendly, no proxies.",
    "version": "1.0",
    "x-build-id": "m2oxO2Yx4MUTiq4zf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vantum~french-company-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vantum-french-company-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/vantum~french-company-search/runs": {
      "post": {
        "operationId": "runs-sync-vantum-french-company-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/vantum~french-company-search/run-sync": {
      "post": {
        "operationId": "run-sync-vantum-french-company-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": {
          "mode": {
            "title": "What do you want to do?",
            "enum": [
              "search",
              "lookup",
              "nearby"
            ],
            "type": "string",
            "description": "**Search** builds a list of French companies from filters. **Lookup** enriches SIREN/SIRET numbers you already have. **Nearby** finds companies within a radius (≤ 50 km) of a GPS point.",
            "default": "search"
          },
          "query": {
            "title": "Keyword (optional)",
            "type": "string",
            "description": "Free-text search on company name, trade name and address, e.g. `boulangerie`, `logiciel`, `Lyon`. Leave empty to rely on filters only. Person-name search is intentionally not offered."
          },
          "nafCodes": {
            "title": "Industry — NAF/APE codes",
            "type": "array",
            "description": "One or more INSEE NAF rév. 2 codes, e.g. `62.01Z` (software development), `56.10A` (restaurants), `10.71C` (bakeries), `43.22A` (plumbing). Formats `6201Z` and `62.01z` are accepted. [Full list](https://www.insee.fr/fr/information/2406147).",
            "items": {
              "type": "string"
            }
          },
          "nafSections": {
            "title": "Industry — broad sector (NAF section)",
            "type": "array",
            "description": "Broad sectors, if you don't need precise NAF codes. Combined with NAF codes using AND.",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G",
                "H",
                "I",
                "J",
                "K",
                "L",
                "M",
                "N",
                "O",
                "P",
                "Q",
                "R",
                "S",
                "T",
                "U"
              ],
              "enumTitles": [
                "A — Agriculture, forestry & fishing",
                "B — Mining & quarrying",
                "C — Manufacturing",
                "D — Electricity & gas supply",
                "E — Water, sewerage & waste",
                "F — Construction",
                "G — Wholesale & retail trade, car repair",
                "H — Transport & storage",
                "I — Hotels & restaurants",
                "J — Information & communication",
                "K — Finance & insurance",
                "L — Real estate",
                "M — Professional, scientific & technical",
                "N — Administrative & support services",
                "O — Public administration",
                "P — Education",
                "Q — Health & social work",
                "R — Arts, entertainment & recreation",
                "S — Other services",
                "T — Households as employers",
                "U — Extraterritorial organisations"
              ]
            }
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "French departments (where at least one establishment is located). Leave empty for all of France.",
            "items": {
              "type": "string",
              "enum": [
                "01",
                "02",
                "03",
                "04",
                "05",
                "06",
                "07",
                "08",
                "09",
                "10",
                "11",
                "12",
                "13",
                "14",
                "15",
                "16",
                "17",
                "18",
                "19",
                "21",
                "22",
                "23",
                "24",
                "25",
                "26",
                "27",
                "28",
                "29",
                "2A",
                "2B",
                "30",
                "31",
                "32",
                "33",
                "34",
                "35",
                "36",
                "37",
                "38",
                "39",
                "40",
                "41",
                "42",
                "43",
                "44",
                "45",
                "46",
                "47",
                "48",
                "49",
                "50",
                "51",
                "52",
                "53",
                "54",
                "55",
                "56",
                "57",
                "58",
                "59",
                "60",
                "61",
                "62",
                "63",
                "64",
                "65",
                "66",
                "67",
                "68",
                "69",
                "70",
                "71",
                "72",
                "73",
                "74",
                "75",
                "76",
                "77",
                "78",
                "79",
                "80",
                "81",
                "82",
                "83",
                "84",
                "85",
                "86",
                "87",
                "88",
                "89",
                "90",
                "91",
                "92",
                "93",
                "94",
                "95",
                "971",
                "972",
                "973",
                "974",
                "975",
                "976",
                "977",
                "978",
                "984",
                "986",
                "987",
                "988",
                "989"
              ],
              "enumTitles": [
                "01 — Ain",
                "02 — Aisne",
                "03 — Allier",
                "04 — Alpes-de-Haute-Provence",
                "05 — Hautes-Alpes",
                "06 — Alpes-Maritimes",
                "07 — Ardèche",
                "08 — Ardennes",
                "09 — Ariège",
                "10 — Aube",
                "11 — Aude",
                "12 — Aveyron",
                "13 — Bouches-du-Rhône",
                "14 — Calvados",
                "15 — Cantal",
                "16 — Charente",
                "17 — Charente-Maritime",
                "18 — Cher",
                "19 — Corrèze",
                "21 — Côte-d'Or",
                "22 — Côtes-d'Armor",
                "23 — Creuse",
                "24 — Dordogne",
                "25 — Doubs",
                "26 — Drôme",
                "27 — Eure",
                "28 — Eure-et-Loir",
                "29 — Finistère",
                "2A — Corse-du-Sud",
                "2B — Haute-Corse",
                "30 — Gard",
                "31 — Haute-Garonne",
                "32 — Gers",
                "33 — Gironde",
                "34 — Hérault",
                "35 — Ille-et-Vilaine",
                "36 — Indre",
                "37 — Indre-et-Loire",
                "38 — Isère",
                "39 — Jura",
                "40 — Landes",
                "41 — Loir-et-Cher",
                "42 — Loire",
                "43 — Haute-Loire",
                "44 — Loire-Atlantique",
                "45 — Loiret",
                "46 — Lot",
                "47 — Lot-et-Garonne",
                "48 — Lozère",
                "49 — Maine-et-Loire",
                "50 — Manche",
                "51 — Marne",
                "52 — Haute-Marne",
                "53 — Mayenne",
                "54 — Meurthe-et-Moselle",
                "55 — Meuse",
                "56 — Morbihan",
                "57 — Moselle",
                "58 — Nièvre",
                "59 — Nord",
                "60 — Oise",
                "61 — Orne",
                "62 — Pas-de-Calais",
                "63 — Puy-de-Dôme",
                "64 — Pyrénées-Atlantiques",
                "65 — Hautes-Pyrénées",
                "66 — Pyrénées-Orientales",
                "67 — Bas-Rhin",
                "68 — Haut-Rhin",
                "69 — Rhône",
                "70 — Haute-Saône",
                "71 — Saône-et-Loire",
                "72 — Sarthe",
                "73 — Savoie",
                "74 — Haute-Savoie",
                "75 — Paris",
                "76 — Seine-Maritime",
                "77 — Seine-et-Marne",
                "78 — Yvelines",
                "79 — Deux-Sèvres",
                "80 — Somme",
                "81 — Tarn",
                "82 — Tarn-et-Garonne",
                "83 — Var",
                "84 — Vaucluse",
                "85 — Vendée",
                "86 — Vienne",
                "87 — Haute-Vienne",
                "88 — Vosges",
                "89 — Yonne",
                "90 — Territoire de Belfort",
                "91 — Essonne",
                "92 — Hauts-de-Seine",
                "93 — Seine-Saint-Denis",
                "94 — Val-de-Marne",
                "95 — Val-d'Oise",
                "971 — Guadeloupe",
                "972 — Martinique",
                "973 — Guyane",
                "974 — La Réunion",
                "975 — Saint-Pierre-et-Miquelon",
                "976 — Mayotte",
                "977 — Saint-Barthélemy",
                "978 — Saint-Martin",
                "984 — Terres australes et antarctiques françaises",
                "986 — Wallis-et-Futuna",
                "987 — Polynésie française",
                "988 — Nouvelle-Calédonie",
                "989 — Île de Clipperton"
              ]
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "French regions. Leave empty for all of France.",
            "items": {
              "type": "string",
              "enum": [
                "01",
                "02",
                "03",
                "04",
                "06",
                "11",
                "24",
                "27",
                "28",
                "32",
                "44",
                "52",
                "53",
                "75",
                "76",
                "84",
                "93",
                "94"
              ],
              "enumTitles": [
                "01 — Guadeloupe",
                "02 — Martinique",
                "03 — Guyane",
                "04 — La Réunion",
                "06 — Mayotte",
                "11 — Île-de-France",
                "24 — Centre-Val de Loire",
                "27 — Bourgogne-Franche-Comté",
                "28 — Normandie",
                "32 — Hauts-de-France",
                "44 — Grand Est",
                "52 — Pays de la Loire",
                "53 — Bretagne",
                "75 — Nouvelle-Aquitaine",
                "76 — Occitanie",
                "84 — Auvergne-Rhône-Alpes",
                "93 — Provence-Alpes-Côte d'Azur",
                "94 — Corse"
              ]
            }
          },
          "postalCodes": {
            "title": "Postal codes",
            "type": "array",
            "description": "5-digit postal codes, e.g. `75011`, `69002`.",
            "items": {
              "type": "string"
            }
          },
          "cityCodes": {
            "title": "INSEE city codes",
            "type": "array",
            "description": "INSEE commune codes (not postal codes), e.g. `75056` (Paris), `69123` (Lyon), `13055` (Marseille).",
            "items": {
              "type": "string"
            }
          },
          "headOfficeLocationOnly": {
            "title": "Location filters apply to the head office",
            "type": "boolean",
            "description": "Company rows only. On: a company is kept only if its **head office** is in the departments, regions, postal codes or cities you chose (what most people expect from 'companies in Lyon'). Off: also keep companies headquartered elsewhere that merely have a branch there.",
            "default": true
          },
          "latitude": {
            "title": "Latitude (nearby mode)",
            "type": "number",
            "description": "Latitude of the centre point, e.g. `48.8566` for Paris. Used only in Nearby mode."
          },
          "longitude": {
            "title": "Longitude (nearby mode)",
            "type": "number",
            "description": "Longitude of the centre point, e.g. `2.3522` for Paris. Used only in Nearby mode."
          },
          "radiusKm": {
            "title": "Radius in km (nearby mode)",
            "minimum": 0.001,
            "maximum": 50,
            "type": "number",
            "description": "Search radius around the point, up to 50 km.",
            "default": 5
          },
          "employeeRanges": {
            "title": "Company size — employees",
            "type": "array",
            "description": "INSEE headcount bands of the legal unit (latest declared year).",
            "items": {
              "type": "string",
              "enum": [
                "NN",
                "00",
                "01",
                "02",
                "03",
                "11",
                "12",
                "21",
                "22",
                "31",
                "32",
                "41",
                "42",
                "51",
                "52",
                "53"
              ],
              "enumTitles": [
                "NN — No employees (non-employer)",
                "00 — 0 employees at year end",
                "01 — 1–2 employees",
                "02 — 3–5 employees",
                "03 — 6–9 employees",
                "11 — 10–19 employees",
                "12 — 20–49 employees",
                "21 — 50–99 employees",
                "22 — 100–199 employees",
                "31 — 200–249 employees",
                "32 — 250–499 employees",
                "41 — 500–999 employees",
                "42 — 1,000–1,999 employees",
                "51 — 2,000–4,999 employees",
                "52 — 5,000–9,999 employees",
                "53 — 10,000+ employees"
              ]
            }
          },
          "companyCategories": {
            "title": "Company category",
            "type": "array",
            "description": "INSEE company category.",
            "items": {
              "type": "string",
              "enum": [
                "PME",
                "ETI",
                "GE"
              ],
              "enumTitles": [
                "PME — SME (<250 staff)",
                "ETI — mid-cap (250–4,999)",
                "GE — large enterprise (5,000+)"
              ]
            }
          },
          "legalFormCodes": {
            "title": "Legal form codes",
            "type": "array",
            "description": "4-digit INSEE legal-form codes, e.g. `5710` (SAS), `5499` (SARL), `5720` (SASU), `5599` (SA), `9220` (association). [Full list](https://www.insee.fr/fr/information/2028129).",
            "items": {
              "type": "string"
            }
          },
          "minRevenueEur": {
            "title": "Min. revenue (€)",
            "type": "integer",
            "description": "Latest published revenue (chiffre d'affaires) at least this amount. Only companies that publish accounts can match."
          },
          "maxRevenueEur": {
            "title": "Max. revenue (€)",
            "type": "integer",
            "description": "Latest published revenue at most this amount."
          },
          "minNetIncomeEur": {
            "title": "Min. net income (€)",
            "type": "integer",
            "description": "Latest published net income (résultat net) at least this amount. Can be negative."
          },
          "maxNetIncomeEur": {
            "title": "Max. net income (€)",
            "type": "integer",
            "description": "Latest published net income at most this amount."
          },
          "certifications": {
            "title": "Labels & certifications",
            "type": "array",
            "description": "Keep only companies holding ALL selected labels, e.g. RGE installers or Qualiopi training providers.",
            "items": {
              "type": "string",
              "enum": [
                "rge",
                "qualiopi",
                "bio",
                "ess",
                "association",
                "trainingOrganization",
                "missionCompany",
                "siae",
                "livingHeritage",
                "entertainmentLicence",
                "healthAndSocial",
                "alimConfiance",
                "responsiblePurchasing",
                "localAuthority",
                "publicAdministration"
              ],
              "enumTitles": [
                "RGE (eco-renovation certified)",
                "Qualiopi (certified training provider)",
                "Organic (Agence Bio)",
                "Social & solidarity economy (ESS)",
                "Associations / non-profits",
                "Registered training organization",
                "Société à mission (purpose company)",
                "Inclusion employer (SIAE)",
                "Entreprise du Patrimoine Vivant",
                "Entertainment licence holder",
                "Health & social facility (FINESS)",
                "Food-safety inspected (Alim'Confiance)",
                "Responsible purchasing label (RFAR)",
                "Local authority (collectivité)",
                "Public administration"
              ]
            }
          },
          "activeOnly": {
            "title": "Active companies only",
            "type": "boolean",
            "description": "Skip companies that have ceased trading (état administratif = C).",
            "default": true
          },
          "createdAfter": {
            "title": "Created on or after",
            "type": "string",
            "description": "Only companies (or establishments) created on/after this date (YYYY-MM-DD). Great for new-business lead lists. Applied after download: you pay only for matching records."
          },
          "createdBefore": {
            "title": "Created on or before",
            "type": "string",
            "description": "Only companies (or establishments) created on/before this date (YYYY-MM-DD)."
          },
          "includeSoleTraders": {
            "title": "Include sole traders (entreprises individuelles)",
            "type": "boolean",
            "description": "Off by default for privacy: a sole trader's company name is usually a private person's name. Turn on only if you have a legitimate interest under GDPR.",
            "default": false
          },
          "ids": {
            "title": "SIREN / SIRET numbers (lookup mode)",
            "type": "array",
            "description": "9-digit SIREN or 14-digit SIRET numbers. Spaces and dots are ignored; invalid checksums are reported, never charged. Each row keeps your original number in `inputId`.",
            "items": {
              "type": "string"
            }
          },
          "outputLevel": {
            "title": "One row per…",
            "enum": [
              "companies",
              "establishments"
            ],
            "type": "string",
            "description": "**Company**: one row per legal entity with its head office. **Establishment**: one row per matching physical location — ideal for field sales and local marketing (e.g. every bakery shop, not just the owning company).",
            "default": "companies"
          },
          "onlyOpenEstablishments": {
            "title": "Open establishments only",
            "type": "boolean",
            "description": "In establishment mode, skip closed locations.",
            "default": true
          },
          "matchEstablishmentActivity": {
            "title": "Establishments must match the activity",
            "type": "boolean",
            "description": "Establishment rows only. The register filters NAF codes at company level, so a bakery company can also have an office or a café. On: keep only locations whose **own** NAF code matches the codes or sectors you chose. Off: keep every matching location of those companies.",
            "default": true
          },
          "maxResults": {
            "title": "Max records",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many records (you pay per record). `0` = no limit. Tip: use a dry run first to see the market size.",
            "default": 100
          },
          "dryRun": {
            "title": "Dry run — count only, free",
            "type": "boolean",
            "description": "Only count matching companies and estimate the cost. Nothing is saved to the dataset and nothing is charged. The result is in the `RUN_SUMMARY` record.",
            "default": false
          },
          "autoSplit": {
            "title": "Auto-split large searches (beyond 10,000)",
            "type": "boolean",
            "description": "The official API returns at most 10,000 results per query. When on, large searches are split automatically by department, sector and size so you can export whole markets in one run.",
            "default": true
          },
          "sortBySize": {
            "title": "Biggest companies first",
            "type": "boolean",
            "description": "Sort by number of establishments (largest networks first) instead of relevance.",
            "default": false
          },
          "maxRequestsPerSecond": {
            "title": "Max requests per second",
            "minimum": 1,
            "maximum": 7,
            "type": "integer",
            "description": "Politeness limit for the public government API (it allows 7/s per IP). Lower it if you see many retries.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}