{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Hiring Signals for European Employers",
    "description": "Two modes. Board profile: a company's open vacancies across our European job boards by function and board, plus a registry match. Employer diff: roles added, closed and changed on employers' own career sites since the previous run.",
    "version": "0.2",
    "x-build-id": "F24fr9ybH5mNbEUdv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studio-amba~company-hiring-signals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studio-amba-company-hiring-signals",
        "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/studio-amba~company-hiring-signals/runs": {
      "post": {
        "operationId": "runs-sync-studio-amba-company-hiring-signals",
        "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/studio-amba~company-hiring-signals/run-sync": {
      "post": {
        "operationId": "run-sync-studio-amba-company-hiring-signals",
        "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": "Mode",
            "enum": [
              "boardProfile",
              "employerDiff"
            ],
            "type": "string",
            "description": "'Board profile' counts one company's open vacancies across our European job boards (the original behaviour, uses Company name). 'Employer diff' reads employers' own career sites and reports which roles were added, closed or changed since the previous run (uses Employers).",
            "default": "boardProfile"
          },
          "companyName": {
            "title": "Company name",
            "type": "string",
            "description": "Name of the company to profile, as it would appear on a job posting (e.g. 'Siemens', 'ASML', 'Danone'). Matching is fuzzy on legal-entity suffixes (GmbH, SA, Ltd, BV, ...) but requires the core name to match.",
            "default": "Siemens"
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Restrict which job-board countries to search for this company's postings. Leave empty to search all 13 boards. Use ISO2 codes: DE, AT, NL, GB, FR, CH, PL, DK, ES, BE, IE, EU (EURES, pan-European).",
            "items": {
              "type": "string",
              "enum": [
                "DE",
                "AT",
                "NL",
                "GB",
                "FR",
                "CH",
                "PL",
                "DK",
                "ES",
                "BE",
                "IE",
                "EU"
              ],
              "enumTitles": [
                "Germany (StepStone)",
                "Austria (StepStone)",
                "Netherlands (StepStone)",
                "United Kingdom (Reed)",
                "France (HelloWork)",
                "Switzerland (Jobs.ch + JobUp.ch)",
                "Poland (Pracuj.pl)",
                "Denmark (Jobindex)",
                "Spain (InfoJobs)",
                "Belgium (Jobat)",
                "Ireland (IrishJobs)",
                "EU-wide (EURES)"
              ]
            }
          },
          "maxPerBoard": {
            "title": "Max postings scanned per board",
            "minimum": 5,
            "maximum": 200,
            "type": "integer",
            "description": "How many raw postings to fetch from each board before filtering to this company. A generic keyword search on a board can return many unrelated postings, so this needs headroom above the number of vacancies you expect the company to actually have open.",
            "default": 30
          },
          "enrichRegistry": {
            "title": "Enrich with registry identity",
            "type": "boolean",
            "description": "Run our EU Dealer Counterparty Check to attach a registry identity match (legal name, registration number, status) to the profile. Adds one extra child-actor call. On by default.",
            "default": true
          },
          "registryCountry": {
            "title": "Registry country",
            "enum": [
              "auto",
              "DE",
              "FR",
              "GB",
              "PL",
              "IT",
              "ES",
              "CH",
              "NO",
              "SE",
              "CZ",
              "NL",
              "none"
            ],
            "type": "string",
            "description": "Country whose company registry to check for identity enrichment. 'Auto' picks the first of your selected job-board countries that our registry fleet covers (DE, FR, GB, PL, IT, ES, CH, NO, SE, CZ, NL), falling back to Germany. Set 'None' to skip registry enrichment entirely.",
            "default": "auto"
          },
          "employers": {
            "title": "Employers (employer diff mode)",
            "maxItems": 200,
            "type": "array",
            "description": "Employers to track in 'Employer diff' mode. Each item is an object with a name and a careersUrl (the employer's own careers page, e.g. {\"name\": \"PwC Belgium\", \"careersUrl\": \"https://www.pwc.be/en/careers.html\"}). Optional: country, industry, employerType (copied to the output), or ats plus handle to skip detection. A plain careers URL string also works. Supported career systems: Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio. Up to 200 employers per run."
          },
          "stateStoreName": {
            "title": "Snapshot store name (employer diff mode)",
            "type": "string",
            "description": "Named key-value store that keeps the previous role list per employer. Use a different name per client or watchlist so their changes stay separate.",
            "default": "company-hiring-signals-state"
          },
          "maxRolesListed": {
            "title": "Max roles listed per change type (employer diff mode)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Caps the added, closed and changed lists on each row. The counts always cover every role.",
            "default": 200
          },
          "resetBaseline": {
            "title": "Reset baseline (employer diff mode)",
            "type": "boolean",
            "description": "Ignore the stored snapshot and save the current roles as a new baseline. The row for each employer then has no added or closed roles.",
            "default": false
          },
          "timeoutPerBoardSecs": {
            "title": "Timeout per board (seconds)",
            "minimum": 30,
            "maximum": 600,
            "type": "integer",
            "description": "Maximum time to wait for each underlying board scraper (or the registry check) to finish. A slow source is skipped after this and reported as failed rather than blocking the whole run.",
            "default": 120
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings passed to the underlying board and registry scrapers. Leave default (Apify Residential) — each source otherwise uses its own known-good country-pinned residential proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}