{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Signals: Greenhouse, Lever & Ashby Jobs Scraper + AI",
    "description": "Paste company domains. The Actor finds their Greenhouse, Lever or Ashby board, scrapes open jobs, and can add AI seniority, tech stack, salary and a company-level hiring signal. From $1 per 1,000 jobs on paid plans.",
    "version": "0.1",
    "x-build-id": "3kN05IJepDXPx1A60"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/craftedincode~hiring-intent-signals-ai/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-craftedincode-hiring-intent-signals-ai",
        "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/craftedincode~hiring-intent-signals-ai/runs": {
      "post": {
        "operationId": "runs-sync-craftedincode-hiring-intent-signals-ai",
        "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/craftedincode~hiring-intent-signals-ai/run-sync": {
      "post": {
        "operationId": "run-sync-craftedincode-hiring-intent-signals-ai",
        "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": "Company domains",
            "type": "array",
            "description": "Company websites, for example stripe.com or https://www.figma.com/careers. The Actor sniffs the careers page for a Greenhouse, Lever or Ashby link, then guesses the board slug. Pass an empty array if you only want board tokens.",
            "items": {
              "type": "string"
            }
          },
          "boardTokens": {
            "title": "Board tokens",
            "type": "array",
            "description": "Explicit public board slugs when you already know the ATS. Example: Greenhouse token stripe, Lever token palantir, Ashby token ramp. Duplicates of a domain that resolves to the same board are scraped once.",
            "items": {
              "type": "object",
              "properties": {
                "ats": {
                  "title": "ATS",
                  "type": "string",
                  "description": "Which applicant tracking system hosts this board.",
                  "editor": "select",
                  "enum": [
                    "greenhouse",
                    "lever",
                    "ashby"
                  ],
                  "enumTitles": [
                    "Greenhouse",
                    "Lever",
                    "Ashby"
                  ]
                },
                "token": {
                  "title": "Board token",
                  "type": "string",
                  "description": "Public board slug, such as stripe, palantir or ramp.",
                  "editor": "textfield",
                  "prefill": "stripe"
                }
              },
              "required": [
                "ats",
                "token"
              ]
            }
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Optional case-insensitive substrings. A job is kept when its department, team or title contains any of them. Leave empty to keep every department.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Optional case-insensitive substrings matched against the job location. The word remote also matches jobs flagged as remote. Leave empty to keep every location.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedSinceDays": {
            "title": "Posted within days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep jobs whose posted date is within the last N days. Jobs with no posted date are kept. Leave empty to keep every open job."
          },
          "onlyNewSinceLastRun": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "When true, return only jobs that were not on this board the last time this Actor saved a snapshot in the named store hiring-intent-seen-jobs. The first run for a board returns every matching job and stores the snapshot. Leave this off for the Store's daily test.",
            "default": false
          },
          "aiJobEnrichment": {
            "title": "AI job enrichment",
            "type": "boolean",
            "description": "Call Gemini for each output job and add seniority, function, tech stack, tools, normalized salary, visa sponsorship and a short summary. Requires the GEMINI_API_KEY secret. The Actor still scrapes jobs when this is off or the key is missing.",
            "default": false
          },
          "companySignals": {
            "title": "Company hiring signals",
            "type": "boolean",
            "description": "Save one company-level row per board: open roles, roles by function, new-since-last-run count, tech stack, and (when Gemini is available) buying signals with evidence job URLs, a 0–100 relevance score and an outreach angle. The AI company-signal event is charged only after that AI row is saved.",
            "default": false
          },
          "signalFocus": {
            "title": "Signal focus",
            "type": "string",
            "description": "What you sell, in plain language. Used to score relevanceToFocus from 0 to 100 and to write the outreach angle. Example: we sell data-warehouse tooling. Ignored when company signals are off."
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Cap on jobs saved per company after filters, newest posted date first. The prefilled demo uses 20 so the daily test stays small. When the field is omitted, the Actor uses 300.",
            "default": 300
          },
          "maxAiJobs": {
            "title": "Max AI jobs",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Maximum jobs to send to Gemini in this run, split fairly across companies. Remainder goes to earlier companies. Unused share is redistributed. Free-plan runs are also capped at 20 AI jobs. When the field is omitted, the Actor uses 2000.",
            "default": 2000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}