{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Site Jobs Search - 9 ATS, Only New Jobs, No Duplicates",
    "description": "Search jobs by keyword across the career pages of thousands of companies at once: Greenhouse, Lever, Ashby, Workday and 5 more hiring platforms. Only jobs new since your last run, no duplicates, salary and remote flags parsed. $2 per 1,000 jobs.",
    "version": "1.0",
    "x-build-id": "aSfqHEmdUfK83heST"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/that_red_bird~career-site-jobs-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-that_red_bird-career-site-jobs-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/that_red_bird~career-site-jobs-search/runs": {
      "post": {
        "operationId": "runs-sync-that_red_bird-career-site-jobs-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/that_red_bird~career-site-jobs-search/run-sync": {
      "post": {
        "operationId": "run-sync-that_red_bird-career-site-jobs-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": {
          "keywords": {
            "title": "Job keywords",
            "type": "array",
            "description": "Jobs matching ANY of these are returned. A keyword with several words (data engineer, python backend) matches when all of its words appear in the job title, department or team, in any order. Leave empty to list every job on the boards searched.",
            "default": [
              "software engineer"
            ],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude jobs containing",
            "type": "array",
            "description": "Drop jobs whose title, department or team contains any of these words, for example intern, sales, recruiter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "matchMode": {
            "title": "How keywords match",
            "enum": [
              "all_words",
              "phrase"
            ],
            "type": "string",
            "description": "'All words, any order' is forgiving: data engineer also finds Senior Data Platform Engineer. 'Exact phrase' needs the words next to each other, exactly as typed.",
            "default": "all_words"
          },
          "searchDescriptions": {
            "title": "Also search the job description",
            "type": "boolean",
            "description": "Also look for the keywords inside the full job text, not only the title. Finds more jobs (and more noise) and makes the run slower because descriptions have to be downloaded.",
            "default": false
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location contains any of these, for example berlin, london, california. Type remote to include remote jobs. Leave empty for anywhere.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep only jobs in these countries, by name or two-letter code, for example United States, DE, United Kingdom. Leave empty for all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only fully remote jobs. Hybrid jobs are excluded.",
            "default": false
          },
          "seniority": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only these levels, read from the job title. Leave empty for all. 'Senior and above' keeps senior, staff, lead, manager, director and executive jobs.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "staff",
                "lead",
                "manager",
                "director",
                "executive",
                "senior+"
              ],
              "enumTitles": [
                "Intern",
                "Junior",
                "Mid-level",
                "Senior",
                "Staff / Principal",
                "Lead",
                "Manager",
                "Director",
                "Executive (VP / C-level)",
                "Senior and above"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "internship",
                "temporary",
                "freelance"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary",
                "Freelance"
              ]
            },
            "default": []
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. 0 means no limit. Jobs whose board shows no posting date are kept.",
            "default": 30
          },
          "minSalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs that publish a salary whose upper end is at least this many units of the posted currency per year (hourly and monthly pay is converted to yearly). 0 means no filter. Needs 'Include job descriptions' for boards that hide pay in the text.",
            "default": 0
          },
          "maxResults": {
            "title": "Max jobs to return",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many jobs, newest first. You are charged per job returned, so this is also your spending cap. 0 means no cap.",
            "default": 25
          },
          "maxPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Return at most this many jobs from any one company, so a company posting the same role in many cities cannot crowd out everyone else. 0 means no limit.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only jobs new since my last run",
            "type": "boolean",
            "description": "Return only jobs that an earlier run with the same 'Feed name' has not already returned. The first run returns everything that matches. Schedule the Actor daily or weekly for a fresh-jobs feed; you pay only for the new jobs.",
            "default": false
          },
          "feedName": {
            "title": "Feed name",
            "type": "string",
            "description": "Names the memory used by 'Only jobs new since my last run'. Use one name per saved search (for example data-engineer-berlin) so searches do not share what they have already seen.",
            "default": "default"
          },
          "companies": {
            "title": "Only these companies (optional)",
            "type": "array",
            "description": "Search only these companies instead of all known boards. Use a company name (Notion), a domain (ramp.com), a careers link (https://jobs.lever.co/spotify, https://boards.greenhouse.io/gitlab, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite) or a shorthand like greenhouse:stripe. Leave empty to search everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "Hiring platforms",
            "type": "array",
            "description": "Limit the search to these platforms. Leave empty to search all nine.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "workable",
                "smartrecruiters",
                "recruitee",
                "personio",
                "breezy",
                "workday"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby",
                "Workable",
                "SmartRecruiters",
                "Recruitee",
                "Personio",
                "Breezy HR",
                "Workday"
              ]
            },
            "default": []
          },
          "maxBoards": {
            "title": "Max company boards to read",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many company career boards to search, largest first. The default of 300 keeps a first run fast. Raise it (for example 5000) for a wide sweep and also raise 'Max run time'.",
            "default": 300
          },
          "maxRuntimeMinutes": {
            "title": "Max run time (minutes)",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "The search stops starting new boards after this many minutes and returns what it has. Raise it together with 'Max company boards to read'.",
            "default": 3
          },
          "dedupe": {
            "title": "Remove duplicate jobs",
            "type": "boolean",
            "description": "Collapse jobs with the same company, title and location that appear more than once, for example on two boards of one company.",
            "default": true
          },
          "includeDescription": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "Return the full cleaned description text. Makes runs slower and rows larger, but also finds salaries that are only mentioned in the text.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "A summary plus up to 100 jobs is POSTed here when jobs are returned. Works with Slack, Discord, Zapier, Make and n8n.",
            "default": ""
          },
          "refreshBoardList": {
            "title": "Refresh the company board list now",
            "type": "boolean",
            "description": "Re-discover company boards from the public Common Crawl web index before searching. The list is refreshed automatically every 30 days anyway; this forces it, which takes up to 45 seconds.",
            "default": false
          },
          "refreshBoardListDays": {
            "title": "Refresh the board list every N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "How old the saved company board list may get before it is refreshed from the public web index.",
            "default": 30
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many company boards are read in parallel. The default is polite and fast enough.",
            "default": 8
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}