{
  "openapi": "3.0.1",
  "info": {
    "title": "French Company Leads - Sirene API, SIREN/SIRET Data",
    "description": "Find French companies (entreprises) from the official Sirene-based Recherche d'entreprises API. Filter by NAF code, department, headcount and creation date, get only new companies on a schedule, with SIREN/SIRET, officers and Slack alerts, $0.004/company.",
    "version": "0.1",
    "x-build-id": "NWJpkUySkveMAocsF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lukehunter~french-companies-sirene/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lukehunter-french-companies-sirene",
        "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/lukehunter~french-companies-sirene/runs": {
      "post": {
        "operationId": "runs-sync-lukehunter-french-companies-sirene",
        "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/lukehunter~french-companies-sirene/run-sync": {
      "post": {
        "operationId": "run-sync-lukehunter-french-companies-sirene",
        "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": {
          "q": {
            "title": "Search text",
            "type": "string",
            "description": "Free-text search on company name, officer name or address, e.g. boulangerie or Dupont. Optional when another filter is set. Combine with NAF code and location to narrow results."
          },
          "activitePrincipale": {
            "title": "NAF / APE activity codes",
            "type": "array",
            "description": "NAF (APE) activity codes, format NN.NNL, e.g. [\"56.10A\", \"62.01Z\"]. 56.10A = restaurants, 62.01Z = software programming. A malformed code stops the run with an error. Leave empty for any activity.",
            "items": {
              "type": "string"
            }
          },
          "departement": {
            "title": "Département",
            "type": "string",
            "description": "Département code, e.g. 75 (Paris), 69 (Rhône), 2A or 971. Several can be separated by commas, e.g. 75,92,93,94. Matches the registered head office (siège). Leave empty for all of France."
          },
          "region": {
            "title": "Region (INSEE code)",
            "type": "string",
            "description": "INSEE region code, e.g. 11 (Île-de-France), 84 (Auvergne-Rhône-Alpes), 93 (Provence-Alpes-Côte d'Azur), 76 (Occitanie). Commas separate several. Leave empty for any region."
          },
          "codePostal": {
            "title": "Postal code",
            "type": "string",
            "description": "5-digit postal code of the head office, e.g. 75011, or several separated by commas, e.g. 69001,69002. Leave empty for any postal code."
          },
          "trancheEffectif": {
            "title": "Headcount bands",
            "type": "array",
            "description": "Employee headcount bands as codes or ranges, e.g. [\"11\", \"12\"] or [\"10-19\", \"20-49\"]. Codes: 01 = 1-2, 02 = 3-5, 03 = 6-9, 11 = 10-19, 12 = 20-49, 21 = 50-99, 22 = 100-199, 32 = 250-499, 53 = 10,000+. Many companies declare none. Leave empty for any size.",
            "items": {
              "type": "string"
            }
          },
          "categorieEntreprise": {
            "title": "Company size category",
            "type": "array",
            "description": "Official size category, e.g. [\"PME\"]. PME = small and medium enterprise, ETI = mid-cap, GE = large enterprise. Leave empty for all categories.",
            "items": {
              "type": "string",
              "enum": [
                "PME",
                "ETI",
                "GE"
              ]
            }
          },
          "etatAdministratif": {
            "title": "Administrative status",
            "enum": [
              "A",
              "C",
              "all"
            ],
            "type": "string",
            "description": "A = active companies (default, e.g. for lead lists), C = ceased companies, all = both. Choose all only for research on closed businesses.",
            "default": "A"
          },
          "natureJuridique": {
            "title": "Legal form code",
            "type": "string",
            "description": "4-digit INSEE legal category code, e.g. 5710 (SAS), 5499 (SARL), 1000 (sole trader / entrepreneur individuel), 9220 (association). Commas separate several, e.g. 5710,5499. Leave empty for any legal form."
          },
          "createdWithinDays": {
            "title": "Created within days (new companies)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only companies registered in the last N days, 1 to 3650, e.g. 30 for the past month. Applied on dateCreation after download, because the API has no such filter. Ignored when Created after is set. Broad filters read more pages."
          },
          "createdAfter": {
            "title": "Created after (date)",
            "type": "string",
            "description": "Only companies registered on or after this day, written YYYY-MM-DD, e.g. 2026-09-01. Overrides Created within days. Applied on dateCreation after download, so combine with department, NAF code or postal code to keep the query narrow."
          },
          "maxItems": {
            "title": "Maximum companies",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on delivered companies, 1 to 5000, e.g. 50. At $0.004 per delivered company this caps the result charge (50 companies = $0.20). The API itself exposes at most 10,000 results per query.",
            "default": 50
          },
          "onlyNewSinceLastRun": {
            "title": "Alerts: only new since last run",
            "type": "boolean",
            "description": "Deliver and charge only companies not delivered before for this same set of filters, e.g. on a daily Schedule with Created within days. The first run creates the baseline and delivers what matches now. Pair with a Slack or Discord destination below.",
            "default": false
          },
          "stateStoreName": {
            "title": "Alerts: state store name",
            "type": "string",
            "description": "Named key-value store that remembers delivered companies between runs, used only when alerts are on. Example: my-paris-restaurants. Use a different name to keep separate histories. Letters, numbers and hyphens only.",
            "default": "france-company-leads-seen-companies"
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Post results to a Discord channel. In Discord: Server Settings -> Integrations -> Webhooks -> New Webhook -> choose the channel -> Copy Webhook URL. Example: https://discord.com/api/webhooks/<id>/<token>. Leave empty to skip Discord."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Post results to Telegram. Create a bot by chatting with @BotFather on Telegram (send /newbot) and paste the token it gives you, e.g. 123456789:AA.... Needs \"Telegram chat ID\" below. Leave empty to skip Telegram."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Where the bot should post: a numeric chat id (e.g. 123456789, or -1001234567890 for a group or channel) or a public @channelusername. The bot must be added to that chat or channel first (as an administrator for a channel), and for a private chat you must press Start on the bot. Needs \"Telegram bot token\" above."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Post results to a Slack channel (Block Kit cards, up to 10 per message). Create an incoming webhook at api.slack.com/apps -> Create New App -> Incoming Webhooks -> Add New Webhook to Workspace. Example: https://hooks.slack.com/services/T000/B000/XXXX. Leave empty to skip Slack."
          },
          "slackCompatibleWebhookUrl": {
            "title": "Slack-compatible webhook URL (Mattermost, Rocket.Chat)",
            "type": "string",
            "description": "Post results to a Mattermost or Rocket.Chat incoming webhook, which accept Slack-style webhook payloads. Must be a public https:// address, e.g. https://chat.example.com/hooks/abc123 (no localhost, private IP or .local/.internal hosts). These apps do not render Slack Block Kit, so they get a plain Markdown list. For real Slack use \"Slack webhook URL\" above. Leave empty to skip."
          },
          "teamsWebhookUrl": {
            "title": "Microsoft Teams webhook URL (Workflows)",
            "type": "string",
            "description": "Post results to a Teams channel as an Adaptive Card. In Teams: channel -> ... -> Workflows -> \"Post to a channel when a webhook request is received\" -> copy the URL. The host must end in .logic.azure.com or .powerplatform.com, e.g. https://prod-12.westeurope.logic.azure.com/workflows/... The retired Office 365 connector webhooks are not supported. Leave empty to skip Teams."
          },
          "googleChatWebhookUrl": {
            "title": "Google Chat webhook URL",
            "type": "string",
            "description": "Post results to a Google Chat space. In the space: Apps & integrations -> Webhooks -> Add webhook -> copy the URL. Example: https://chat.googleapis.com/v1/spaces/<space>/messages?key=...&token=.... Leave empty to skip Google Chat."
          },
          "ntfyTopic": {
            "title": "ntfy topic",
            "type": "string",
            "description": "Get a phone push with no account via ntfy (ntfy.sh). Install the ntfy app, subscribe to a topic name, and enter the same name here. Anyone who knows the topic can read it, so pick a long, unguessable name (letters, numbers, - and _), e.g. acme-leads-7k2x9q. At most 10 individual pushes per run, then one \"...and N more\". Leave empty to skip ntfy."
          },
          "ntfyServer": {
            "title": "ntfy server",
            "type": "string",
            "description": "Only used with \"ntfy topic\". Leave as https://ntfy.sh, or enter the public https:// address of your own ntfy server, e.g. https://ntfy.example.com.",
            "default": "https://ntfy.sh"
          },
          "ntfyToken": {
            "title": "ntfy access token (optional)",
            "type": "string",
            "description": "Only used with \"ntfy topic\", for a self-hosted server or a reserved topic that needs a login. An access token from ntfy (starts with tk_, e.g. tk_abc123...). Leave empty for open topics."
          },
          "pushoverUserKey": {
            "title": "Pushover user key",
            "type": "string",
            "description": "Get a phone push via Pushover. Your user key (30 characters, e.g. uQiRzpo4DXghDmr9QzzfQu27cmVRsG) is shown on the Pushover dashboard (pushover.net). Needs \"Pushover app token\" below. At most 10 individual pushes per run, then one \"...and N more\". Leave empty to skip Pushover."
          },
          "pushoverAppToken": {
            "title": "Pushover app token",
            "type": "string",
            "description": "The API token of a Pushover application you create at pushover.net/apps/build (name it after this Actor), e.g. azGDORePK8gMaC0QOYAMyEEuzJnyUi. Needs \"Pushover user key\" above."
          },
          "webhookUrl": {
            "title": "Generic JSON webhook URL (Zapier, Make, n8n, Pipedream, IFTTT, Home Assistant)",
            "type": "string",
            "description": "POST the delivered rows as JSON to any public https:// URL: {source, actor, runId, count, items}. At most 100 rows per POST; every delivered row is sent regardless of the max-notifications cap. For example, route results to email, a spreadsheet or any app. Localhost, private IP and .local/.internal addresses are rejected. Leave empty to skip."
          },
          "maxNotifications": {
            "title": "Max notifications per run",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Caps how many results are sent to chat and phone channels per run (Discord, Telegram, Slack, Teams, Google Chat, ntfy, Pushover), 1-100, default 25 (e.g. 10). Extra results are still in the dataset. The generic webhook is not capped. Only used when a destination above is set.",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}