{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Search API: 2M Job Postings, 45k+ Company Career Sites",
    "description": "Search about 2 million job postings from 49,000 company career sites on 19 applicant tracking systems (Greenhouse, Workday, Lever, Ashby, SmartRecruiters, Paylocity, Personio and more), updated daily. Filter by title, country, remote, salary, date and company. Only-new mode for job alerts.",
    "version": "0.1",
    "x-build-id": "x2bPsi9BjtkwzSCiS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jamie_developer~job-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jamie_developer-job-search",
        "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/jamie_developer~job-search/runs": {
      "post": {
        "operationId": "runs-sync-jamie_developer-job-search",
        "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/jamie_developer~job-search/run-sync": {
      "post": {
        "operationId": "run-sync-jamie_developer-job-search",
        "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": {
          "titleKeywords": {
            "title": "Job title contains any of",
            "type": "array",
            "description": "Keep jobs whose title contains at least one of these keywords, e.g. engineer, data scientist, account executive. Case-insensitive. A keyword matches at the start of a word, so engineer also finds Engineering and Engineers; keywords of 1-2 letters (AI, QA, Go) must match a whole word. Leave empty for all titles.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Job title contains none of",
            "type": "array",
            "description": "Drop jobs whose title contains any of these keywords, e.g. senior, intern, manager. Same matching as above.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department or team contains any of",
            "type": "array",
            "description": "Keep jobs whose department or team contains one of these keywords, e.g. engineering, sales, marketing. Jobs without a department are dropped when this is set.",
            "items": {
              "type": "string"
            }
          },
          "employmentType": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep jobs of these types. Each ATS words it differently (Full-time, Vollzeit, FULL_TIME...), so they are grouped. Internship also matches titles with intern, Werkstudent or Praktikum. Jobs without a stated type are dropped when this is set. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "internship",
                "temporary"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract / freelance",
                "Internship / working student",
                "Temporary / fixed-term"
              ]
            }
          },
          "locationKeywords": {
            "title": "Location contains any of",
            "type": "array",
            "description": "Keep jobs whose location text contains one of these words, e.g. Berlin, London, New York, Bavaria. Matched against the job's location, all its locations and its country field.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep jobs in these countries. Use English names (Germany, United States, United Kingdom) or ISO codes (DE, US, GB). The country comes from the ATS when it gives one, otherwise from the location text (e.g. 'Austin, TX' is US, 'München' is DE). Jobs whose country can't be determined, such as 'Remote' with no country, are dropped when this is set.",
            "items": {
              "type": "string"
            }
          },
          "includeUnknownCountry": {
            "title": "Also keep jobs that name no country",
            "type": "boolean",
            "description": "With a country filter set, also keep jobs whose location names no country, such as 'Remote', 'Worldwide' or 'EMEA'. Useful with Remote jobs only.",
            "default": false
          },
          "workplaceType": {
            "title": "Workplace type",
            "type": "array",
            "description": "Keep remote, hybrid and/or on-site jobs. Most ATSs only flag remote and hybrid jobs, so On-site also includes jobs with no remote or hybrid indication. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site (or not stated)"
              ]
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Shortcut: keep only jobs marked remote by the ATS or with remote in the location or title.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep jobs posted in the last N days, using the ATS's posting date or, when the ATS gives none, the day the job first appeared in the index. 0 = any date.",
            "default": 0
          },
          "hasSalary": {
            "title": "Jobs with salary only",
            "type": "boolean",
            "description": "Keep only jobs that state a pay range, either in the ATS's salary fields or written in the job ad.",
            "default": false
          },
          "salaryMinAtLeast": {
            "title": "Minimum salary at least (per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose pay range starts at or above this yearly amount (the single figure if only one is given). Monthly, weekly, daily and hourly pay is converted to a year (x12, x52, x260, x2080). Use it with Salary currency, otherwise amounts in different currencies are compared as-is. 0 = no minimum.",
            "default": 0
          },
          "salaryCurrency": {
            "title": "Salary currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CHF",
              "CAD",
              "AUD",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "INR",
              "SGD",
              "JPY",
              "BRL",
              "MXN",
              "NZD",
              "ILS",
              "AED",
              "ZAR"
            ],
            "type": "string",
            "description": "Keep only jobs that pay in this currency (3-letter code). Implies 'Jobs with salary only'."
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Keep jobs from these companies only. Use the company name (Stripe, Hugging Face), its job board name (huggingface) or job board URL (https://boards.greenhouse.io/stripe). Names are matched exactly, ignoring case, spaces and suffixes like Inc or GmbH.",
            "items": {
              "type": "string"
            }
          },
          "ats": {
            "title": "Applicant tracking systems",
            "type": "array",
            "description": "Keep jobs from these job board platforms only, one per line. The index covers greenhouse, smartrecruiters, workday, lever, ashby, workable, teamtailor, paylocity, bamboohr, recruitee, softgarden, breezy, personio, rippling, jobvite, join, comeet, pinpoint and dvinci. Every run's SUMMARY record lists the platforms and job counts in the current index. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "onlyNewSinceLastRun": {
            "title": "Only jobs not returned before",
            "type": "boolean",
            "description": "For scheduled runs and job alerts: return only jobs that earlier runs of the same search haven't returned. The first run returns the current matches; later runs return only new ones. Skipped jobs are not charged. The memory is kept per set of filters in a key-value store named job-search-state in your account.",
            "default": false
          },
          "stateName": {
            "title": "Search name (optional)",
            "type": "string",
            "description": "Name for the 'already returned' memory. Leave empty to derive it from the filters; set it to keep the memory when you edit the filters."
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Add the full job description as plain text, fetched live from each job's own board at run time: one request per company for most platforms, one per job for platforms whose feeds carry no descriptions (such as Workday or SmartRecruiters), up to 500 jobs per company and 5,000 per run; jobs over that come back without a description. Makes runs slower. Jobs that closed since the last index update are dropped and not charged.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "company"
            ],
            "type": "string",
            "description": "Newest first (by posting date, else first seen), or company name A-Z (newest first within a company).",
            "default": "newest"
          },
          "maxJobs": {
            "title": "Max jobs",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Stop after this many jobs (up to 200,000). You pay per job saved, so this caps the cost of a run.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}