{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Board Harvester: Multi-Platform",
    "description": "Jobs from 13 career-site systems (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Personio...), AI talent marketplaces and LinkedIn in one clean dataset. Paste a careers page, type a company name or scan 500+ verified boards. Only-new monitoring. From $1.60 per 1,000 jobs.",
    "version": "0.9",
    "x-build-id": "GNuivSUUswZbzzohb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tacps126~jobs-harvester/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tacps126-jobs-harvester",
        "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/tacps126~jobs-harvester/runs": {
      "post": {
        "operationId": "runs-sync-tacps126-jobs-harvester",
        "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/tacps126~jobs-harvester/run-sync": {
      "post": {
        "operationId": "run-sync-tacps126-jobs-harvester",
        "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": {
          "careerPageUrls": {
            "title": "Career page URLs",
            "type": "array",
            "description": "The quickest way to start: paste careers pages - the company's own (`https://www.figma.com/careers`) or its job board (`https://jobs.lever.co/palantir`, a Workday careers page). The job board behind the page is found automatically. Works with Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Rippling, BambooHR, Pinpoint, Breezy, Recruitee, Personio and Teamtailor.",
            "items": {
              "type": "string"
            }
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Just type company names (`Datadog`, `Ramp`). Each is looked up on every supported job board system; the board with the most open jobs is used, and other matches are listed in the run's warnings. A careers URL is more precise when a name is ambiguous.",
            "items": {
              "type": "string"
            }
          },
          "directoryAts": {
            "title": "Scan the company directory",
            "type": "array",
            "description": "Also scan our directory of verified company job boards on these systems, biggest boards first - no company list needed. Combine with the title, location and country filters below.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "workday",
                "smartrecruiters",
                "workable",
                "rippling",
                "bamboohr",
                "pinpoint",
                "breezy",
                "recruitee",
                "personio",
                "teamtailor"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby",
                "Workday",
                "SmartRecruiters",
                "Workable",
                "Rippling",
                "BambooHR",
                "Pinpoint",
                "Breezy",
                "Recruitee",
                "Personio",
                "Teamtailor"
              ]
            }
          },
          "directoryMaxBoards": {
            "title": "Directory: max boards per run",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many directory boards to scan in one run (boards alternate between the selected systems).",
            "default": 200
          },
          "directoryMinJobs": {
            "title": "Directory: min open jobs per board",
            "minimum": 1,
            "type": "integer",
            "description": "Skip directory companies with fewer open jobs than this (as of the last directory refresh).",
            "default": 1
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Where to look for jobs (in addition to career page URLs). Each entry has a `platform` plus its details:\n• Company career pages - `greenhouse`, `lever`, `ashby`, `smartrecruiters`, `workable`, `rippling`, `bamboohr`, `pinpoint`, `breezy`, `recruitee`, `personio`, `teamtailor`: give the company's `company` name as it appears in its jobs-page address (e.g. `stripe` for boards.greenhouse.io/stripe).\n• `workday`: give the careers page as `boardUrl` (e.g. `https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite`), optionally with a `query`.\n• AI & remote talent marketplaces - `mercor`, `micro1`, `turing`, `himalayas`: nothing required; add a `query` to narrow down.\n• Open job feeds - `remoteok` (Remote OK), `jobicy`, `workingnomads` (remote jobs), `arbeitnow` (Germany/Europe), `ycombinator` (jobs at YC startups): nothing required; add a `query` to narrow down. Each job links back to its source.\n• `linkedin` search: give a `query`, optionally `location`, `datePosted` (day, week, month), `remote` (true) and `maxPages`.\n• `dice`, `builtin` (US tech jobs) and `wellfound` (startup jobs) search: give a `query` (a role for Wellfound), optionally a `location` (a city) or `remote` (true; Wellfound and Built In).\n• Boards that need your own login (`naukri`, `monster`): give a `query`, and fill in the encrypted \"Your own access\" fields below. For Naukri without a login, use the Naukri Jobs Scraper Actor (apify.com/tacps126/naukri-jobs-scraper)."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum total job postings to emit across all sources.",
            "default": 200
          },
          "maxItemsPerSource": {
            "title": "Max items per source",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap per board/search, so one large company or marketplace can't use up the whole \"Max items\"."
          },
          "enrich": {
            "title": "Normalize & enrich",
            "type": "boolean",
            "description": "Normalize every job into one schema: structured location + country code, work mode, employment type, seniority, years of experience, job function, skills, annualized salary, education and visa signals.",
            "default": true
          },
          "dedupe": {
            "title": "Deduplicate",
            "type": "boolean",
            "description": "Drop duplicate postings (by url + title + company).",
            "default": true
          },
          "includeDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Open each job's own page for extra fields where the list is thin (e.g. LinkedIn: full description, seniority, employment type, applicant count). Slower - one extra request per job - and only done for jobs that pass your filters.",
            "default": false
          },
          "titleIncludes": {
            "title": "Title must include",
            "type": "array",
            "description": "Keep a job only if its title contains any of these words (case-insensitive), e.g. `engineer`, `developer`.",
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Title must not include",
            "type": "array",
            "description": "Drop a job whose title contains any of these words (case-insensitive), e.g. `intern`, `manager`.",
            "items": {
              "type": "string"
            }
          },
          "locationIncludes": {
            "title": "Location must include",
            "type": "array",
            "description": "Keep a job only if its location contains any of these (case-insensitive), e.g. `Berlin`, `Remote`.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep only jobs in these countries: 2-letter codes (`US`, `GB`, `DE`, `IN`) or names. The country comes from the board when it gives one, otherwise from the location text.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. Jobs whose board doesn't publish a date are kept."
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only remote jobs (uses the normalized `workMode`; requires Enrich).",
            "default": false
          },
          "workModes": {
            "title": "Work mode",
            "type": "array",
            "description": "Keep only these work arrangements. Jobs whose posting doesn't state it are dropped when this is set.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "internship",
                "temporary",
                "freelance"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary",
                "Freelance"
              ]
            }
          },
          "seniorities": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only these seniority levels.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "lead",
                "principal",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Intern",
                "Junior",
                "Mid",
                "Senior",
                "Lead",
                "Principal / Staff",
                "Director",
                "Executive"
              ]
            }
          },
          "jobFunctions": {
            "title": "Job function",
            "type": "array",
            "description": "Keep only these job functions (engineering, data, sales, ...).",
            "items": {
              "type": "string",
              "enum": [
                "engineering",
                "data",
                "ai_training",
                "security",
                "research",
                "product",
                "design",
                "marketing",
                "sales",
                "customer_success",
                "finance",
                "people",
                "legal",
                "operations",
                "healthcare",
                "education"
              ],
              "enumTitles": [
                "Engineering",
                "Data",
                "AI Training",
                "Security",
                "Research",
                "Product",
                "Design",
                "Marketing",
                "Sales",
                "Customer Success",
                "Finance",
                "People",
                "Legal",
                "Operations",
                "Healthcare",
                "Education"
              ]
            }
          },
          "descriptionIncludes": {
            "title": "Description or skills mention",
            "type": "array",
            "description": "Keep a job only if its title, description or skills mention any of these, e.g. `Kubernetes`, `Python`, `SQL`.",
            "items": {
              "type": "string"
            }
          },
          "companyExcludes": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from companies whose name contains any of these, e.g. staffing agencies.",
            "items": {
              "type": "string"
            }
          },
          "minAnnualSalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs paying at least this per year (hourly and monthly pay are converted), in the posting's currency. Jobs that don't publish pay are kept unless \"Only jobs with salary\" is on."
          },
          "onlyWithSalary": {
            "title": "Only jobs with salary",
            "type": "boolean",
            "description": "Keep only jobs that publish their pay.",
            "default": false
          },
          "visaSponsorshipOnly": {
            "title": "Visa sponsorship only",
            "type": "boolean",
            "description": "Keep only jobs whose posting says visa sponsorship is available.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Emit only jobs that no earlier run with the same sources (or the same state key) has already delivered. Ideal for scheduled runs - you pay only for new results.",
            "default": false
          },
          "changesOnly": {
            "title": "Changes only",
            "type": "boolean",
            "description": "Return only jobs that are new, changed or closed since the last run with the same input (or monitor name): changed jobs carry `changeType: \"changed\"` and `changes` with the old and new salary, location, title or work mode; jobs taken down come as `changeType: \"removed\"` (a hiring signal). The first run returns everything as new.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional name for the 'only new' history. Runs sharing a name share one history; leave empty to derive it from the sources."
          },
          "includeReferralLinks": {
            "title": "Include referral links",
            "type": "boolean",
            "description": "Some marketplaces pay referral bonuses. When available, jobs get an extra `referralUrl` that may credit the Actor's maintainer. Job links and `applyUrl` are never changed. Turn off to omit the field.",
            "default": true
          },
          "sessionCookies": {
            "title": "Your session cookies (per board)",
            "type": "object",
            "description": "Only for boards that need your own sign-in. One entry per board, e.g. {\"naukri\": \"<paste here>\"}. To get it: sign in to the board in your browser, press F12, open the Network tab, reload, right-click the first request and choose Copy > Copy as cURL (bash), then paste that whole text as the value. A Cookie header or a cookie extension's JSON export also works. It is a password: use your own account; it is stored encrypted and never appears in results or logs. If it is unreadable or expired the run says so before spending anything. Steps: README, \"Using your own sign-in\"."
          },
          "accessHeaders": {
            "title": "Access headers / API keys (per board)",
            "type": "object",
            "description": "Extra request headers per board, e.g. {\"monster\": {\"x-api-key\": \"...\"}}. Encrypted by Apify and used only for your run."
          },
          "tenantId": {
            "title": "Tenant ID",
            "type": "string",
            "description": "Optional label used to keep separate histories for different clients or teams."
          },
          "debug": {
            "title": "Debug",
            "type": "boolean",
            "description": "Save extra diagnostics with the run (for support requests).",
            "default": false
          },
          "delivery": {
            "title": "Send results to Slack, Discord, a webhook or Google Sheets",
            "type": "object",
            "description": "Webhook: {\"webhookUrl\": \"https://...\", \"format\": \"json\" | \"slack\" | \"discord\", \"onlyWhenResults\": true, \"includeItems\": 10}. Google Sheets: {\"spreadsheetId\": \"<id from the sheet URL>\", \"sheetName\": \"Sheet1\"} plus the service account key below; share the sheet with the service account's e-mail first. Leave empty to only save results in the dataset."
          },
          "googleServiceAccountJson": {
            "title": "Google service account key (for Sheets)",
            "type": "string",
            "description": "Only for Google Sheets delivery: paste the service account's JSON key. Stored encrypted; the account sees only sheets you share with it."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional proxy. Recommended for search boards (Naukri/Monster/LinkedIn), which rate-limit aggressively.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}