{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Cafe Jobs Scraper & API - Salary & Visa Sponsorship Jobs",
    "description": "Hiring Cafe jobs scraper and API for HiringCafe (hiring.cafe): search 6 million jobs from employers' own career sites, newest first. Filter by title, place, remote, salary, seniority, experience and visa sponsorship; each row has the employer's apply link, ATS, pay and company facts.",
    "version": "1.0",
    "x-build-id": "3G8OW6vQwHzJQrYXu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/anshumanatrey~hiringcafe-jobs-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-anshumanatrey-hiringcafe-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/anshumanatrey~hiringcafe-jobs-search/runs": {
      "post": {
        "operationId": "runs-sync-anshumanatrey-hiringcafe-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/anshumanatrey~hiringcafe-jobs-search/run-sync": {
      "post": {
        "operationId": "run-sync-anshumanatrey-hiringcafe-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": {
          "searchTerms": {
            "title": "Job titles to find (searchTerms)",
            "type": "array",
            "description": "Type the job titles or keywords to find, one per line, for example data analyst. A job matches when its title has every word of a line, in any order: frontend also finds Front-End, nurses finds Registered Nurse. A place typed with the title, as in nurse in California, is searched as the place. Leave it empty for the newest jobs of every kind. A pasted HiringCafe search link (hiringcafe.com/?searchState=...) works too, with its filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Where the job is (location)",
            "type": "array",
            "description": "Type where the jobs should be: cities, states, countries or regions, one per line, for example London, California, Germany, EMEA or Worldwide. A city keeps the jobs that name it (Bangalore and Bengaluru both work), a country or region also keeps remote jobs open there. Remote typed alone asks for remote jobs. Leave it empty for anywhere.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "workType": {
            "title": "Remote or office (workType)",
            "type": "array",
            "description": "Pick remote, hybrid or onsite (in person, field work too), or several. Leave it empty for all of them. HiringCafe states the work arrangement of every job, and the search asks HiringCafe for it. Typed words such as wfh or office work too.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "In person (onsite)"
              ]
            },
            "default": []
          },
          "postedWithin": {
            "title": "Posted in the last (postedWithin)",
            "type": "string",
            "description": "Pick how new the jobs must be: posted in the last 24 hours, 3, 7, 14 or 30 days. 30 days, the default, keeps the last month's jobs, newest first, and any time keeps every open job. The date is when the employer posted the job on its own career site, as HiringCafe read it. You can also type your own period, such as 48 hours or 2 weeks.",
            "default": "30 days"
          },
          "experienceYears": {
            "title": "Experience (experienceYears)",
            "type": "string",
            "description": "Type your years of experience: a number such as 3, a range such as 2-5, 5+ for five or more, or fresher. A job is kept when the least experience it asks for fits yours: 3 keeps jobs asking for up to 3 years. HiringCafe reads the years from each ad; when this is set, a job whose ad states none is left out. Leave it empty for every job.",
            "default": ""
          },
          "seniority": {
            "title": "Job level (seniority)",
            "type": "array",
            "description": "Pick the job levels to keep, as HiringCafe rates the seniority of each job: no-experience (no prior experience required), entry (entry level), mid (mid level) or senior (senior level), or several. Leave it empty for every level.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "no-experience",
                "entry",
                "mid",
                "senior"
              ],
              "enumTitles": [
                "No experience needed (no-experience)",
                "Entry level (entry)",
                "Mid level (mid)",
                "Senior level (senior)"
              ]
            },
            "default": []
          },
          "employmentType": {
            "title": "Job type (employmentType)",
            "type": "array",
            "description": "Pick the job type: full-time, part-time, contract, intern, temporary (seasonal too) or volunteer, or several. Leave it empty for every job type. A job of two types, such as a full-time graduate internship, counts as both.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "full-time",
                "part-time",
                "contract",
                "intern",
                "temporary",
                "volunteer"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract or freelance (contract)",
                "Internship (intern)",
                "Temporary or seasonal (temporary)",
                "Volunteer"
              ]
            },
            "default": []
          },
          "minSalary": {
            "title": "Minimum yearly pay (minSalary)",
            "minimum": 0,
            "type": "integer",
            "description": "Type the least yearly pay to keep, for example 120000 or 120k: jobs whose employer published pay that reaches it in a year, pay by the hour or month counted as a year's, in the currency below (salaryCurrency). Jobs that publish no pay are left out when this is set. Leave it empty for every job.",
            "default": null
          },
          "salaryCurrency": {
            "title": "Pay currency (salaryCurrency)",
            "type": "string",
            "description": "Pick the currency of the minimum pay: USD by default, or EUR, GBP, CAD, AUD, INR or any other three-letter code you type. Only jobs paying in it are compared.",
            "default": "USD"
          },
          "companySize": {
            "title": "Company size (companySize)",
            "type": "array",
            "description": "Pick company sizes by employees, as HiringCafe groups them: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-2000, 2001-5000, 5001-10000 or 10001+, or type a range such as 1-500. Leave it empty for every size.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "1-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1000",
                "1001-2000",
                "2001-5000",
                "5001-10000",
                "10001+"
              ],
              "enumTitles": [
                "1-10 employees (1-10)",
                "11-50 employees (11-50)",
                "51-200 employees (51-200)",
                "201-500 employees (201-500)",
                "501-1,000 employees (501-1000)",
                "1,001-2,000 employees (1001-2000)",
                "2,001-5,000 employees (2001-5000)",
                "5,001-10,000 employees (5001-10000)",
                "Over 10,000 employees (10001+)"
              ]
            },
            "default": []
          },
          "visaSponsorship": {
            "title": "Sponsors visas (visaSponsorship)",
            "type": "boolean",
            "description": "Tick to keep only jobs whose employer sponsors visas, as HiringCafe reads each ad: the ad says the employer sponsors work visas. Leave it unticked for every job.",
            "default": false
          },
          "companies": {
            "title": "Only these companies (companies)",
            "type": "array",
            "description": "Type company names to search only their jobs, one per line, as HiringCafe names them: OpenAI, Stripe, Deloitte. A HiringCafe company page link (hiringcafe.com/org/stripe.com) works too. Leave it empty to search every company.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxJobs": {
            "title": "Number of jobs (maxJobs)",
            "type": "integer",
            "description": "Type how many jobs to get, newest first: 100 by default. Type 0 to get every matching job (HiringCafe shows the newest 10,000 companies of one search, about 33,000 jobs). Each job is one charged row, so this sets the most a run can cost.",
            "default": 100
          },
          "includeDetails": {
            "title": "Full details (includeDetails)",
            "type": "boolean",
            "description": "Tick to add each job's full description, as text and HTML, from HiringCafe. Every row already has the apply link, pay when published, seniority, skills, requirements and company facts. A job with details costs more and the run reads each saved job once more.",
            "default": false
          },
          "excludeTerms": {
            "title": "Leave out words (excludeTerms)",
            "type": "array",
            "description": "Type words that leave a job out when its title has them, one per line, for example senior or intern. Leave it empty to keep every job.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchDescriptions": {
            "title": "Wider match (searchDescriptions)",
            "type": "boolean",
            "description": "Tick for a wider match: every job HiringCafe's own search finds with your words anywhere in the ad, not only in the title. python then also finds a Data Engineer job that asks for Python.",
            "default": false
          },
          "jobUrls": {
            "title": "Job links to check (jobUrls)",
            "type": "array",
            "description": "Paste HiringCafe job links (hiringcafe.com/job/...) or job IDs to check whether they are still open, one per line, instead of searching. Each comes back open with the job (its description too with Full details ticked), closed, or not found.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Connection (proxyConfiguration)",
            "type": "object",
            "description": "Leave the connection as it is: on Apify every run reads HiringCafe through Apify's residential proxy, because HiringCafe's Cloudflare challenges Apify's own addresses; we pay for it and it is included in the price. Set a proxy here only to use your own instead, from the first call.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}