{
  "openapi": "3.0.1",
  "info": {
    "title": "Jobs Index",
    "description": "Jobs Index provides access to 11+ million organically-collected jobs from hundreds of thousands of direct employer company career websites.\nData you can trust! JobsIndex is offered by Aspen Tech Labs Inc, which has been making jobs data content available for nearly 20 years.",
    "version": "0.1",
    "x-build-id": "WvQfhd8hF3KVhzxzR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/aspen-technology-labs-inc~jobsindex-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-aspen-technology-labs-inc-jobsindex-api",
        "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/aspen-technology-labs-inc~jobsindex-api/runs": {
      "post": {
        "operationId": "runs-sync-aspen-technology-labs-inc-jobsindex-api",
        "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/aspen-technology-labs-inc~jobsindex-api/run-sync": {
      "post": {
        "operationId": "run-sync-aspen-technology-labs-inc-jobsindex-api",
        "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": {
          "id": {
            "title": "Job ID",
            "pattern": "^(?:|[0-9]+)(?![\\s\\S])",
            "type": "string",
            "description": "Optional job ID filter. Use a specific JobsIndex job ID to retrieve known job records. Validation: One numeric job ID; comma-separated ID lists are not accepted."
          },
          "what": {
            "title": "Job search query",
            "pattern": "^(?:[^?+|@]*[?+|@]){0,20}[^?+|@]*(?![\\s\\S])",
            "maxLength": 500,
            "type": "string",
            "description": "Main job search query. Supports keywords, exact phrases, boolean logic (AND, OR, NOT or &, |, !), and field targeting. Examples: python developer OR junior javascript, \"data scientist\", @(title) (manager), @(title,description) (python), @(company_name) ((=\"google, inc.\") OR (microsoft AND corporation)). Validation: Maximum 500 characters and 20 operator characters (?, +, |, @) in your input."
          },
          "where": {
            "title": "Location search query",
            "pattern": "^(?:[^?+|@]*[?+|@]){0,20}[^?+|@]*(?![\\s\\S])",
            "maxLength": 500,
            "type": "string",
            "description": "Free-text location search. Supports place names, boolean logic, and field targeting. Examples: Germany, San Francisco, @country United States, @(city,metro_area) (Denver). Structured fields such as country, region, city, postal_code, and metro_area take priority when also provided. Validation: Maximum 500 characters and 20 operator characters (?, +, |, @) in your input."
          },
          "country": {
            "title": "Country",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 60,
            "type": "string",
            "description": "Country for job location filter. Validation: Use 2-60 raw input characters, or leave empty to omit this filter."
          },
          "region": {
            "title": "Region",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 80,
            "type": "string",
            "description": "Region, state, or province. Validation: Use 2-80 raw input characters, or leave empty to omit this filter."
          },
          "city": {
            "title": "City",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 100,
            "type": "string",
            "description": "City filter. Validation: Use 2-100 raw input characters, or leave empty to omit this filter."
          },
          "postal_code": {
            "title": "Postal code",
            "pattern": "^(?=(?:[\\s\\S]{3,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 15,
            "type": "string",
            "description": "Postal or ZIP code. Validation: Use 3-15 raw input characters, or leave empty to omit this filter."
          },
          "metro_area": {
            "title": "Metro area",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 100,
            "type": "string",
            "description": "Metropolitan area filter. Validation: Use 2-100 raw input characters, or leave empty to omit this filter."
          },
          "title": {
            "title": "Job title",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 200,
            "type": "string",
            "description": "Job title filter. Validation: Use 2-200 raw input characters, or leave empty to omit this filter."
          },
          "company_name": {
            "title": "Company name",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 150,
            "type": "string",
            "description": "Company name filter. Validation: Use 2-150 raw input characters, or leave empty to omit this filter."
          },
          "company_domain": {
            "title": "Company domain",
            "pattern": "^(?=(?:[\\s\\S]{3,})?(?![\\s\\S]))(?:[ \\t\\r\\n]*|[ \\t\\r\\n]*(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,63}[ \\t\\r\\n]*)(?![\\s\\S])",
            "maxLength": 100,
            "type": "string",
            "description": "Company website domain, for example ibm.com. Validation: Domain only, without a protocol, path, port, or internal spaces; 3-100 raw input characters. Surrounding ASCII whitespace is accepted and trimmed by the API."
          },
          "category": {
            "title": "Category",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 100,
            "type": "string",
            "description": "Job category, for example Healthcare or Retail. Validation: Use 2-100 raw input characters, or leave empty to omit this filter."
          },
          "sub_category": {
            "title": "Sub-category",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 100,
            "type": "string",
            "description": "More specific job function. Validation: Use 2-100 raw input characters, or leave empty to omit this filter."
          },
          "industry": {
            "title": "Industry",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))[\\s\\S]*(?![\\s\\S])",
            "maxLength": 100,
            "type": "string",
            "description": "Company industry. Validation: Use 2-100 raw input characters, or leave empty to omit this filter."
          },
          "posted": {
            "title": "Posted time frame",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))(?:[ \\t\\r\\n]*|[ \\t\\r\\n]*(?:(?:[6-9][0-9]|[1-9][0-9]{2,3})min|[1-9][0-9]{0,3}[hdwmy]|(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2]))?|(?!0000)[0-9]{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)-(?:0[1-9]|[12][0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-8]))|(?!0000)(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:[02468][048]|[13579][26])00)-02-29)[ \\t\\r\\n]*)(?![\\s\\S])",
            "maxLength": 10,
            "type": "string",
            "description": "Posting age or date. Validation: Recommended: 1d, 1w, 1m, 1y, or a real ISO calendar date (YYYY, YYYY-MM, YYYY-MM-DD). Use 2-10 raw input characters. The API trims surrounding ASCII whitespace after checking raw length. Relative amounts use 1-4 digits without leading zeros."
          },
          "salary": {
            "title": "Salary filter",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))(?:[ \\t\\r\\n]*|[ \\t\\r\\n]*[0-9]{1,9}[ymwdh](?:-[0-9]{1,9}[ymwdh])?[ \\t\\r\\n]*)(?![\\s\\S])",
            "maxLength": 30,
            "type": "string",
            "description": "Salary amount/range filter. Format: 1-9 digits followed by y, m, w, d, or h; optional range A-B. Examples: 20h-30h, 35h, 20h-200000y. Validation: Use 1-9 digits followed by h, d, w, m, or y; ranges need a unit on both endpoints, e.g. 20h-30h. Use 2-30 raw input characters; surrounding ASCII whitespace is accepted."
          },
          "employment_type": {
            "title": "Employment type",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))(?:[ \\t\\r\\n]*|[ \\t\\r\\n]*(?=(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))(?=[^,]{0,30}(?:[A-Za-z]|(?!\\s)[^\\x00-\\x7F]))(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F])(?:(?:[A-Za-z _-]|(?!\\s)[^\\x00-\\x7F]){0,29}(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))?(?: *, *(?=(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))(?=[^,]{0,30}(?:[A-Za-z]|(?!\\s)[^\\x00-\\x7F]))(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F])(?:(?:[A-Za-z _-]|(?!\\s)[^\\x00-\\x7F]){0,29}(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))?)*[ \\t\\r\\n]*)(?![\\s\\S])",
            "maxLength": 50,
            "type": "string",
            "description": "Employment type, for example Full-Time or Part-Time. Validation: 2-50 raw input characters in total. Comma-separated values allow surrounding spaces; each trimmed item must have 1-31 characters. Empty items are not accepted."
          },
          "remote": {
            "title": "Remote / work arrangement",
            "enum": [
              "",
              "remote",
              "on-site",
              "hybrid"
            ],
            "type": "string",
            "description": "Work arrangement filter. Supported values: remote, on-site, hybrid."
          },
          "seniority": {
            "title": "Seniority",
            "pattern": "^(?=(?:[\\s\\S]{2,})?(?![\\s\\S]))(?:[ \\t\\r\\n]*|[ \\t\\r\\n]*(?=(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))(?=[^,]{0,30}(?:[A-Za-z]|(?!\\s)[^\\x00-\\x7F]))(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F])(?:(?:[A-Za-z _-]|(?!\\s)[^\\x00-\\x7F]){0,29}(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))?(?: *, *(?=(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))(?=[^,]{0,30}(?:[A-Za-z]|(?!\\s)[^\\x00-\\x7F]))(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F])(?:(?:[A-Za-z _-]|(?!\\s)[^\\x00-\\x7F]){0,29}(?:[A-Za-z_-]|(?!\\s)[^\\x00-\\x7F]))?)*[ \\t\\r\\n]*)(?![\\s\\S])",
            "maxLength": 50,
            "type": "string",
            "description": "Seniority level, for example Junior, Middle, Senior. Validation: 2-50 raw input characters in total. Comma-separated values allow surrounding spaces; each trimmed item must have 1-31 characters. Empty items are not accepted."
          },
          "page": {
            "title": "Page number",
            "minimum": 0,
            "maximum": 999,
            "type": "integer",
            "description": "Page number, starting from 0. Validation: Integer 0-999. The usable maximum also depends on size and query shape; size=100 without company filters allows page 0-9."
          },
          "size": {
            "title": "Page size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Number of results per page. Maximum 100. Validation: Integer 1-100. Company capping to 5 or 20 is still handled by JobsIndex."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}