{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Search API: 12,000+ Career Sites incl. Workday",
    "description": "Pull open jobs from any company's public Greenhouse, Lever, Ashby or SmartRecruiters job board in one unified JSON schema. Filter by keyword, location, remote and date. $2 per 1,000 jobs.",
    "version": "0.2",
    "x-build-id": "4NZS3QJ4VhUtvAONH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/appley_rhodolite~ats-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-appley_rhodolite-ats-jobs-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/appley_rhodolite~ats-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-appley_rhodolite-ats-jobs-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/appley_rhodolite~ats-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-appley_rhodolite-ats-jobs-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "companies",
              "search"
            ],
            "type": "string",
            "description": "'search' = keyword search across thousands of companies' career sites using a prebuilt index (Greenhouse, Lever, Ashby and SmartRecruiters refreshed nightly, Workday twice a month). 'companies' = fetch the listed companies' boards live (default).",
            "default": "companies"
          },
          "companies": {
            "title": "Companies (mode: companies)",
            "type": "array",
            "description": "Mode 'companies' only. One entry per company. Accepts a career-page URL (boards.greenhouse.io/airbnb, jobs.lever.co/spotify, jobs.ashbyhq.com/notion, careers.smartrecruiters.com/Bosch), an 'ats:slug' pair such as greenhouse:airbnb, or a bare slug (auto-detects the ATS by probing all four; use 'ats:slug' if a slug exists on several).",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep only jobs whose title contains these words (case-insensitive). In search mode see 'Keyword match'. Empty = all jobs.",
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "Keyword match (search mode)",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Search mode: 'any' keeps titles containing at least one keyword, 'all' requires every keyword.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "Exclude title keywords (search mode)",
            "type": "array",
            "description": "Search mode: drop jobs whose title contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep only jobs whose location contains at least one of these texts (substring match, case-insensitive), e.g. 'London' or 'Germany'.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only jobs flagged as remote by the employer's ATS.",
            "default": false
          },
          "atsFilter": {
            "title": "ATS filter (search mode)",
            "type": "array",
            "description": "Search mode: limit to these ATS: greenhouse, lever, ashby, smartrecruiters, workday. Empty = all five. Workday is available in search mode only (for one Workday company live, use the workday-jobs-live Actor).",
            "items": {
              "type": "string"
            }
          },
          "companyFilter": {
            "title": "Company filter (search mode)",
            "type": "array",
            "description": "Search mode: only these companies (exact company slug or company name, case-insensitive), e.g. 'stripe'.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs first published in the last N days. Leave empty or 0 for no limit."
          },
          "newSinceHours": {
            "title": "New in the last N hours (search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode: only jobs our index first saw in the last N hours (24 = new jobs in the last day). The index is rebuilt nightly, so values under 24 are not more precise than the last refresh. Workday is refreshed twice a month: for Workday jobs 'new' means first seen by the latest refresh, so values under 384 (16 days) are not meaningful."
          },
          "includeDescription": {
            "title": "Include job description (plain text)",
            "type": "boolean",
            "description": "Adds descriptionText (HTML converted to plain text). Makes runs slower, and for SmartRecruiters needs one extra request per job. In search mode descriptions are fetched live, only for matched jobs, up to 'Max descriptions'.",
            "default": false
          },
          "maxDescriptionItems": {
            "title": "Max descriptions (search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode with includeDescription: fetch descriptions live for at most this many matched jobs (newest first).",
            "default": 200
          },
          "redactContacts": {
            "title": "Redact emails and phone numbers",
            "type": "boolean",
            "description": "Replaces email addresses and phone numbers found in descriptions with a placeholder. Only affects descriptionText.",
            "default": true
          },
          "maxItemsPerCompany": {
            "title": "Max jobs per company (mode: companies)",
            "minimum": 0,
            "type": "integer",
            "description": "Mode 'companies' only. Cap on jobs returned per company, so one big employer cannot use up the whole budget. 0 = no limit.",
            "default": 20
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs to return in total (you pay per job). 0 = no limit (search mode is capped at 100,000).",
            "default": 50
          },
          "indexStoreId": {
            "title": "Index store ID (advanced)",
            "type": "string",
            "description": "Search mode: override the public key-value store holding the index. Leave empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}