{
  "openapi": "3.0.1",
  "info": {
    "title": "Infogreffe Scraper — French Company Registry",
    "description": "[💰 $5.0 / 1K] Extract official French company records from Infogreffe (RCS). Returns SIREN, SIRET, RCS, address, legal form, share capital, NAF/APE code, founding date, directors, establishments, and filed-report metadata. Search by name, URL, or bulk-enrich a list of SIRENs.",
    "version": "1.0",
    "x-build-id": "01wUmm9dQcSmffac5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~infogreffe-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-infogreffe-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/solidcode~infogreffe-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-infogreffe-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/solidcode~infogreffe-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-infogreffe-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": {
          "searchMode": {
            "title": "Search Mode",
            "enum": [
              "search",
              "urls",
              "sirenList"
            ],
            "type": "string",
            "description": "How you want to provide input. Free-text search is best for one-off lookups; URL list lets you paste Infogreffe pages directly; SIREN list is the killer mode for bulk-enriching a CRM column of identifiers."
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Company name, brand, director name, or address fragment. Used when Search Mode is 'Free-text search'. The form is pre-filled with 'Carrefour' as a demo — replace it with your own query. Leave it empty and the run stops immediately without collecting (or charging for) anything."
          },
          "startUrls": {
            "title": "Infogreffe URLs",
            "type": "array",
            "description": "Paste one or more Infogreffe URLs — search result pages or company detail pages (e.g. https://www.infogreffe.fr/entreprise/carrefour-sa-652014051). Used when Search Mode is 'Infogreffe URLs'.",
            "items": {
              "type": "string"
            }
          },
          "sirens": {
            "title": "SIREN / SIRET List",
            "type": "array",
            "description": "Paste 9-digit SIRENs (company identifier) or 14-digit SIRETs (establishment identifier), one per line. Spaces and dots are tolerated. Used when Search Mode is 'SIREN/SIRET list'. Ideal for bulk-enriching CRM data.",
            "items": {
              "type": "string"
            }
          },
          "department": {
            "title": "Department",
            "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",
              "976"
            ],
            "type": "string",
            "description": "French department code, e.g. '75' for Paris, '92' for Hauts-de-Seine, '13' for Bouches-du-Rhône. Restricts the search to companies registered in this department — the registry applies it exactly, so the search only reads companies from there. Note that setting a location makes the Search Query match the COMPANY NAME only (address and brand text stop being searched). Neither of those holds when your Search Query is a bare SIREN or SIRET: an identifier already picks out one single company, the registry cannot narrow that lookup by area, so this department is checked here on the company that comes back — you get it only if it is registered there. If you also set a Postal Code, the registry narrows the search by the postal code instead, but this department is still checked on every company returned. Leave empty to search all departments. Ignored in SIREN list mode."
          },
          "postalCode": {
            "title": "Postal Code",
            "type": "string",
            "description": "5-digit French postal code (narrower than department). Examples: '75001' (Paris 1er), '69002' (Lyon 2e), '13001' (Marseille 1er). Like Department, setting this makes the Search Query match the COMPANY NAME only — except when your Search Query is a bare SIREN or SIRET, where the registry cannot narrow the lookup by area at all and this postal code is checked here on the single company that comes back. When both are set the postal code is the one the registry searches by, and the department is still checked on every result — so a postal code narrows a department, it never replaces it, and a postal code outside the chosen department returns nothing. The registry applies a postal code loosely (results are checked exactly afterwards), so a small share of companies it has not filed under that postcode can be missed — search by Department alone for the widest coverage of an area."
          },
          "nafCode": {
            "title": "NAF / APE Activity Code",
            "type": "string",
            "description": "INSEE activity code in NAF rev. 2 format (5 digits + 1 letter, e.g. '62.01Z' for software publishing, '47.11D' for grocery retail, '69.10Z' for legal activities). Restricts results to companies whose principal activity matches this code."
          },
          "legalForm": {
            "title": "Legal Form",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to specific French legal forms. Leave empty to include all. SAS and SARL are by far the most common.",
            "items": {
              "type": "string",
              "enum": [
                "SAS",
                "SARL",
                "SA",
                "SASU",
                "EURL",
                "SCI",
                "EI",
                "SNC",
                "SCS",
                "SCA",
                "association"
              ],
              "enumTitles": [
                "SAS — Société par Actions Simplifiée",
                "SARL — Société à Responsabilité Limitée",
                "SA — Société Anonyme",
                "SASU — SAS Unipersonnelle",
                "EURL — Entreprise Unipersonnelle à Responsabilité Limitée",
                "SCI — Société Civile Immobilière",
                "EI — Entreprise Individuelle",
                "SNC — Société en Nom Collectif",
                "SCS — Société en Commandite Simple",
                "SCA — Société en Commandite par Actions",
                "Association loi 1901"
              ]
            }
          },
          "status": {
            "title": "Company Status",
            "enum": [
              "active",
              "struck-off",
              "both"
            ],
            "type": "string",
            "description": "Whether to include active companies, struck-off (radiée) companies, or both. 'Active only' is what most users want. Note: struck-off and 'both' searches match on the COMPANY NAME only (address and brand text are not indexed for radiée companies), so keep the Search Query to a name fragment — or use SIREN/SIRET list mode for exact lookups."
          },
          "foundedAfter": {
            "title": "Founded After",
            "type": "string",
            "description": "Only include companies whose date d'immatriculation is on or after this date (YYYY-MM-DD). Useful for finding recently incorporated companies."
          },
          "foundedBefore": {
            "title": "Founded Before",
            "type": "string",
            "description": "Only include companies whose date d'immatriculation is on or before this date (YYYY-MM-DD)."
          },
          "outputDetail": {
            "title": "Output Detail Level",
            "enum": [
              "basic",
              "full"
            ],
            "type": "string",
            "description": "'Basic' returns only the identity card (name, SIREN, RCS, address, legal form, capital, NAF, status) — fastest and cheapest. 'Full' adds directors, establishments, and filed-report metadata as nested arrays on the same row."
          },
          "maxEstablishmentsPerCompany": {
            "title": "Max Establishments Per Company",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on the number of establishments (sub-SIRETs) embedded in each company row when Output Detail is 'Full'. Most companies have 1-3 establishments, but large groups (LVMH, Carrefour, BNP Paribas, SNCF) can have hundreds or thousands. Default 50 keeps runs fast and cost predictable. Set to 0 for unlimited (an internal hard cap of 10,000 still applies). Truncated rows include an 'establishmentsTruncated: true' flag."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "How many companies you want back. Default 200. Set to 0 for no cap (an internal upper limit of 100,000 still applies). This counts companies actually saved, so when you add filters the actor keeps reading further search pages until it has this many matches. Two safeguards bound that search so a very narrow filter can't run for hours: it stops after 10 pages in a row with no match, and after checking about 4 companies for every result you asked for (at least 250). The run's finish message always says which limit it stopped on."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}