{
  "openapi": "3.0.1",
  "info": {
    "title": "Competitor Hiring Tracker: Open Roles by Company",
    "description": "Hiring signals per company from its own career site: open roles, new and closed roles, posting velocity, function, seniority, location and remote mix, salary. Look up by name, domain or careers URL, or discover who's hiring. Daily history for trends.",
    "version": "0.1",
    "x-build-id": "jIWasw0bbwo2h9X40"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steady-scrape~company-hiring-signals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steady-scrape-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/steady-scrape~company-hiring-signals/runs": {
      "post": {
        "operationId": "runs-sync-steady-scrape-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/steady-scrape~company-hiring-signals/run-sync": {
      "post": {
        "operationId": "run-sync-steady-scrape-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": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Company names (\"Stripe\"), domains (\"datadoghq.com\"), careers page URLs or ATS board URLs (\"https://jobs.lever.co/palantir\"). Up to 5,000. Leave empty to use discovery instead.",
            "items": {
              "type": "string"
            }
          },
          "recentRolesLimit": {
            "title": "Recent roles per company",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many of the newest roles (title, department, location, URL) to list on each company row.",
            "default": 10
          },
          "sniffCareerPages": {
            "title": "Look up unknown domains on their website",
            "type": "boolean",
            "description": "For a domain that is not in the directory or index, open its homepage and careers page to find the ATS board. Slower, but finds more companies.",
            "default": true
          },
          "liveFetchUnindexed": {
            "title": "Fetch career sites that are not in the index",
            "type": "boolean",
            "description": "If a board URL or careers page points to a supported ATS board that the nightly index does not cover yet, read it live. Live rows have no history yet.",
            "default": true
          },
          "changesOnly": {
            "title": "Changes only (weekly alerts)",
            "type": "boolean",
            "description": "Output only what changed since the previous run of this monitor: new and closed roles, open-role moves, new or dropped departments, locations and countries. The first run for a company outputs its full report as the baseline. Needs a Companies list (not discovery).",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "pattern": "^[A-Za-z0-9_-]{0,64}$",
            "type": "string",
            "description": "A stable name for this watchlist, e.g. \"weekly-saas-accounts\". Runs with the same ID compare against each other; use different IDs for different lists. The state is kept in the key-value store company-hiring-signals-monitors in your account. Default: the saved task's ID, or \"default\"."
          },
          "emitBaseline": {
            "title": "Output the baseline on the first run",
            "type": "boolean",
            "description": "On: the first run (and any company added later) outputs its full report, charged as a normal company report. Off: the baseline is saved silently and nothing is output or charged until something changes.",
            "default": true
          },
          "alertMinChangedRoles": {
            "title": "Minimum new + closed roles to report",
            "minimum": 1,
            "type": "integer",
            "description": "Report a company when at least this many roles were added or closed. Smaller changes keep adding up and are reported once they reach it. Velocity, department and country changes are always reported.",
            "default": 1
          },
          "alertMinChangePct": {
            "title": "Velocity alert: minimum change (%)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Flag velocityAlert up/down when open roles change by at least this percent AND at least the role count below. 0 = use the role count only.",
            "default": 10
          },
          "alertMinChangeRoles": {
            "title": "Velocity alert: minimum change (roles)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum absolute open-role change for a velocity alert (also used for notable function changes).",
            "default": 3
          },
          "changedRolesLimit": {
            "title": "New / closed roles listed per company",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "How many new and closed roles to list in each change row (counts are always complete).",
            "default": 25
          },
          "resetBaseline": {
            "title": "Reset the baseline",
            "type": "boolean",
            "description": "Ignore the saved state for this monitor and start again with a fresh baseline.",
            "default": false
          },
          "discoverFunctions": {
            "title": "Discover: job functions",
            "type": "array",
            "description": "Count only roles in these functions.",
            "items": {
              "type": "string",
              "enum": [
                "Product",
                "Data & AI",
                "Engineering",
                "IT & Security",
                "Design",
                "Sales",
                "Marketing",
                "Customer Success & Support",
                "Finance & Accounting",
                "People & HR",
                "Legal & Compliance",
                "Healthcare",
                "Education",
                "Operations",
                "Writing & Content",
                "Other"
              ]
            }
          },
          "discoverKeywords": {
            "title": "Discover: title keywords",
            "type": "array",
            "description": "Count only roles whose title contains one of these words or phrases, e.g. \"data engineer\", \"SRE\". Put a phrase in quotes for an exact match.",
            "items": {
              "type": "string"
            }
          },
          "discoverCountries": {
            "title": "Discover: countries",
            "type": "array",
            "description": "ISO 2-letter country codes, e.g. US, DE, GB.",
            "items": {
              "type": "string"
            }
          },
          "discoverLocations": {
            "title": "Discover: locations",
            "type": "array",
            "description": "City or region words in the job location, e.g. Berlin, \"New York\", Bay Area.",
            "items": {
              "type": "string"
            }
          },
          "discoverRemoteOnly": {
            "title": "Discover: remote roles only",
            "type": "boolean",
            "description": "Count only roles marked remote.",
            "default": false
          },
          "discoverPostedWithinDays": {
            "title": "Discover: posted within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Count only roles with a posting date in this window. Roles without a posting date are excluded when this is set."
          },
          "discoverPlatforms": {
            "title": "Discover: ATS platforms",
            "type": "array",
            "description": "Limit discovery to these career-site platforms (fewer platforms = faster run).",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "workday",
                "bamboohr",
                "workable",
                "recruitee",
                "personio",
                "rippling"
              ]
            }
          },
          "discoverMinMatchingRoles": {
            "title": "Discover: minimum matching roles",
            "minimum": 1,
            "type": "integer",
            "description": "Only report companies with at least this many matching roles.",
            "default": 3
          },
          "discoverSortBy": {
            "title": "Discover: rank companies by",
            "enum": [
              "matchingRoles",
              "postedLast30Days",
              "openRoles",
              "growth7d",
              "growth30d"
            ],
            "type": "string",
            "description": "Growth sorts use the daily history; until that window exists the run falls back to matching roles and says so in the log and summary.",
            "default": "matchingRoles"
          },
          "discoverExcludeJobAggregators": {
            "title": "Discover: skip job aggregators",
            "type": "boolean",
            "description": "Skip known career sites that re-post other employers' jobs.",
            "default": true
          },
          "maxCompanies": {
            "title": "Discover: max companies",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many companies discovery reports (each reported company is one charged result).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}