{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Postings Scraper: Company Hiring Signals",
    "description": "Returns open job postings and hiring velocity per company from public Greenhouse, Lever and Ashby job boards: title, department, location, remote, salary range, posted date, plus new and closed roles since your last run.",
    "version": "1.0",
    "x-build-id": "V9BbOun5rrLNadjpa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/agents001~company-hiring-signals-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-agents001-company-hiring-signals-feed",
        "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/agents001~company-hiring-signals-feed/runs": {
      "post": {
        "operationId": "runs-sync-agents001-company-hiring-signals-feed",
        "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/agents001~company-hiring-signals-feed/run-sync": {
      "post": {
        "operationId": "run-sync-agents001-company-hiring-signals-feed",
        "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": "One entry per company. Use 'greenhouse:<board>', 'lever:<site>', 'lever-eu:<site>' or 'ashby:<name>' when you know the job board. You can also paste a hosted job board URL (boards.greenhouse.io/..., jobs.lever.co/..., jobs.ashbyhq.com/...), a company careers page URL, or just a board name like 'stripe' and the Actor will try to detect the job board. Leave empty to run the example list.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department or team contains",
            "type": "array",
            "description": "Only jobs whose department or team contains any of these words, for example 'Engineering', 'Sales', 'Finance'. Case-insensitive.",
            "items": {
              "type": "string"
            }
          },
          "titleKeywords": {
            "title": "Job title contains",
            "type": "array",
            "description": "Only jobs whose title contains any of these words or phrases, for example 'Account Executive', 'Data', 'Director'. Case-insensitive.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Job title does not contain",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, for example 'Intern'. Case-insensitive.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Location contains",
            "type": "array",
            "description": "Only jobs where any listed location (or the country code where the job board publishes one) contains any of these words, for example 'London', 'Germany', 'Remote'. Case-insensitive.",
            "items": {
              "type": "string"
            }
          },
          "remote": {
            "title": "Remote jobs",
            "enum": [
              "any",
              "remoteOnly",
              "excludeRemote"
            ],
            "type": "string",
            "description": "Keep all jobs, only remote jobs, or only jobs that are not remote. Hybrid jobs count as not remote.",
            "default": "any"
          },
          "postedWithinDays": {
            "title": "Posted in the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only jobs first published within this many days. 0 means any age.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only jobs not seen in previous runs",
            "type": "boolean",
            "description": "Remember which jobs were already returned for this exact input and only return jobs that are new since then. The first run returns everything that matches. Ideal for scheduled daily runs. Changing the companies or filters starts a fresh history.",
            "default": false
          },
          "includeCompanySummary": {
            "title": "Add a hiring summary per company",
            "type": "boolean",
            "description": "Add one summary record per company: open roles, roles by department, remote share, roles posted in the last 7 and 30 days, hiring velocity and the change since the previous run.",
            "default": true
          },
          "includeSalary": {
            "title": "Include published salary ranges",
            "type": "boolean",
            "description": "Add the salary range when the company publishes one on its job board.",
            "default": true
          },
          "maxJobsPerCompany": {
            "title": "Maximum jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Return at most this many jobs per company, newest first. 0 means no limit. The company summary still counts every open role.",
            "default": 0
          },
          "maxItems": {
            "title": "Maximum job records",
            "minimum": 0,
            "type": "integer",
            "description": "Stop returning job records after this many in total. 0 means no limit. Company summaries are not counted. You pay per job record returned.",
            "default": 1000
          },
          "stateStoreName": {
            "title": "History store name",
            "pattern": "^[a-zA-Z0-9-]{1,63}$",
            "type": "string",
            "description": "Name of the key-value store in your account that keeps the list of jobs already seen. Each different input gets its own record inside it. Change it only to keep separate histories.",
            "default": "hiring-signals-feed-state"
          },
          "requestDelaySecs": {
            "title": "Delay between requests to the same server",
            "minimum": 0.1,
            "maximum": 10,
            "type": "number",
            "description": "Minimum seconds between requests to the same job board host. Keep this polite.",
            "default": 0.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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}