{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Page Jobs: careers page or domain in, jobs out | $1/1K",
    "description": "Paste careers page URLs or domains; get open jobs from the board each page links (Greenhouse, Lever, Ashby, Workday, Workable, Breezy HR, Personio, Rippling) or, if none, one matched to its domain. $0.001 per job row; unreadable pages and ATSes we don't read are free. Names: use Company Jobs.",
    "version": "1.0",
    "x-build-id": "ThfqUwlm9IKiZoD5K"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/siftsmith~career-page-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-siftsmith-career-page-jobs",
        "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/siftsmith~career-page-jobs/runs": {
      "post": {
        "operationId": "runs-sync-siftsmith-career-page-jobs",
        "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/siftsmith~career-page-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-siftsmith-career-page-jobs",
        "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",
        "required": [
          "careerPages"
        ],
        "properties": {
          "careerPages": {
            "title": "Careers pages",
            "type": "array",
            "description": "One per line: a company's careers page URL (https://figma.com/careers) or its domain (figma.com). The job board the page links is read first; a page that links no board is matched by its domain. A company name on its own is not looked up: it gets a free status row. Use Company Jobs for names. An explicit board (greenhouse:figma, a board URL) is read as given. A page we can't read, a page listing several employers' boards, and an ATS we don't read each get one free status row.",
            "items": {
              "type": "string"
            }
          },
          "minMatchConfidence": {
            "title": "Minimum match confidence",
            "enum": [
              "medium",
              "high"
            ],
            "type": "string",
            "description": "How sure the page-to-board match must be before its jobs are returned and charged. 'medium' (default) or 'high'. A board the page links is 'high' when its website or job links are on the company's site, or its name matches the domain (or the name the company's homepage gives itself) and the company's homepage or careers page links it or its careers page lists its jobs; 'medium' when only its name matches. Boards below it return no jobs and cost nothing; the free status row (type 'company') says why and gives the board to pass explicitly. Boards you type explicitly are always used. Low-confidence matches are never charged.",
            "default": "medium"
          },
          "titleKeywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep jobs whose title contains any of these as whole words (case-insensitive): 'ML' keeps 'ML Engineer', not 'HTML Developer'. End a keyword with * and its last word also matches longer words: 'engineer*' also keeps 'Engineering Manager'. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these, e.g. 'intern'.",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location keywords",
            "type": "array",
            "description": "Keep jobs whose location contains any of these, e.g. 'London', 'Remote'.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department keywords",
            "type": "array",
            "description": "Keep jobs whose department contains any of these, e.g. 'Engineering'.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only remote jobs.",
            "default": false
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep jobs in these countries: ISO codes (US, GB, DE) or English names (Germany). A job's country is set only when its location clearly names it (or the job board gives it); jobs whose country is unknown are dropped, never charged, and counted in each company's free status row (countryUnknown, countryOther).",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 1,
            "type": "integer",
            "description": "Keep jobs posted in the last N days. Jobs with no posted date are kept unless 'Require a posted date' is on. Workday jobs listed as posted 30+ days ago are left out when the window is 30 days or less; with a longer window they count as undated (see 'Require a posted date'), and get a date from the job's own page when descriptions are on, or when the job lists several places or none and 'Require a posted date' is off."
          },
          "requirePostedDate": {
            "title": "Require a posted date",
            "type": "boolean",
            "description": "With 'Posted within days', also drop jobs whose board gives no posted date.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Skip jobs an earlier run returned",
            "type": "boolean",
            "description": "For scheduled runs: return (and charge) only jobs that an earlier run with the same state key hasn't already returned. The first run returns every job as usual. Job IDs are kept in a key-value store named 'career-page-jobs-state' in your own Apify account. Jobs cut by a cap, the charge limit or the timeout are offered again next time, so 'new' means not returned before, not recently posted: with a cap smaller than a board, later runs return jobs that were already on it. Once a run returns a board in full (no jobsTruncated on its status row), later runs return only jobs added since. To get there, set 'Max jobs per company' above your largest board (this form starts at 10) and allow enough charge limit and timeout; Workday and Rippling boards over 1,000 jobs are never read in full. For fresh postings only, use 'Posted within days', with 'Require a posted date' to drop undated jobs.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "With 'Skip jobs an earlier run returned': which saved state to use. Give each schedule or employer list its own key so they don't share what counts as already returned. Letters, digits and - _ . only.",
            "default": "default"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Jobs past this cap are not returned and not charged. The company's free status row still reports the full board size. This form starts at 10 so a first run is quick; raise it or clear it for more (up to 1,000 per company when left empty)."
          },
          "maxItems": {
            "title": "Max jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on job rows (and so on spend) for the whole run. Empty = no cap beyond the run's maximum charge."
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Adds the job description text where the board provides it (Greenhouse, Lever, Ashby, Workable, Rippling, Personio), and on Workday (read from each job's own page, one job at a time per employer). In Workday descriptions, email addresses, phone numbers and labelled recruiter or contact lines are removed automatically. The scrub matches patterns, so a contact written an unusual way, such as a name inside a sentence, can remain. Check descriptions if your board must show none. Descriptions from other ATSes are delivered as the employer wrote them. Off keeps rows small for spreadsheets.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many companies to process in parallel.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}