{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring.Cafe Fastest Scraper (Rental)",
    "description": "Get job listings from hiring.cafe, including job titles, descriptions, requirements, company information, compensation details, and location data. Users get fields like job ID, application URL, education requirements, employment type, company size, and geolocation coordinates for market analysis.",
    "version": "0.0",
    "x-build-id": "4KMU5sMsH2L2IQKrG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~apify-hiring-cafe-scraper-rental/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-apify-hiring-cafe-scraper-rental",
        "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/memo23~apify-hiring-cafe-scraper-rental/runs": {
      "post": {
        "operationId": "runs-sync-memo23-apify-hiring-cafe-scraper-rental",
        "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/memo23~apify-hiring-cafe-scraper-rental/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-apify-hiring-cafe-scraper-rental",
        "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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Paste hiring.cafe URLs — three kinds are supported:\n\n• **Search pages** — `https://hiring.cafe/?searchState=…` (copy the address bar after setting filters on the site).\n• **Company pages** — `https://hiring.cafe/org/<domain>` (e.g. `https://hiring.cafe/org/nikasolutions.com`) to scrape one company's jobs.\n• **Job pages** — `https://hiring.cafe/job/<id>` (e.g. `https://hiring.cafe/job/9naqj25yblgrkhki`) to scrape one listing each.\n\n**If any URL is set, these are used and Keyword / Location / Workplace are ignored.** Leave empty to build from **Search by filters** below.\n\n_Accepts plain URL strings (recommended) or {\"url\": \"…\"} objects._",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Search query → `searchState.searchQuery`. **Only used when Start URLs are empty.**"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "United States (default) uses the site’s country preset. **Only used when Start URLs are empty.** For exact regions (e.g. Florida with place id), paste a full hiring.cafe URL in Start URLs instead."
          },
          "workplaceType": {
            "title": "Workplace Type",
            "enum": [
              "Any",
              "Remote",
              "Hybrid",
              "Onsite"
            ],
            "type": "string",
            "description": "Remote, Hybrid, Onsite, or Any (all three). Ignored when **Workplace types** below is set. **Only used when Start URLs are empty.**",
            "default": "Any"
          },
          "workplaceTypes": {
            "title": "Workplace types",
            "type": "array",
            "description": "Pick more than one (e.g. Remote + Hybrid). Wins over Workplace Type. **Only used when Start URLs are empty.**",
            "items": {
              "type": "string",
              "enum": [
                "Remote",
                "Hybrid",
                "Onsite"
              ]
            }
          },
          "commitmentTypes": {
            "title": "Commitment",
            "type": "array",
            "description": "Full Time, Contract, Internship, etc. **Only used when Start URLs are empty.**",
            "items": {
              "type": "string",
              "enum": [
                "Full Time",
                "Part Time",
                "Contract",
                "Internship",
                "Temporary",
                "Seasonal",
                "Volunteer"
              ]
            }
          },
          "seniorityLevels": {
            "title": "Seniority",
            "type": "array",
            "description": "hiring.cafe seniority facet. **Only used when Start URLs are empty.**",
            "items": {
              "type": "string",
              "enum": [
                "No Prior Experience Required",
                "Entry Level",
                "Mid Level",
                "Senior Level"
              ]
            }
          },
          "dateFetchedPastNDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 1440,
            "type": "integer",
            "description": "Only jobs fetched in the last N days (site facet). **Only used when Start URLs are empty.**"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "default",
              "date",
              "date_asc",
              "compensation",
              "experience"
            ],
            "type": "string",
            "description": "Search sort. **Only used when Start URLs are empty.**",
            "default": "default"
          },
          "jobTitleQuery": {
            "title": "Job title contains",
            "type": "string",
            "description": "Narrows `searchState.jobTitleQuery`. **Only used when Start URLs are empty.**"
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Only these companies (hiring.cafe matches subsidiaries). **Only used when Start URLs are empty.**",
            "items": {
              "type": "string"
            }
          },
          "excludedCompanyNames": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop these companies. **Only used when Start URLs are empty.**",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Include these industries. **Only used when Start URLs are empty.**",
            "items": {
              "type": "string"
            }
          },
          "excludedIndustries": {
            "title": "Exclude industries",
            "type": "array",
            "description": "Drop these industries. **Only used when Start URLs are empty.**",
            "items": {
              "type": "string"
            }
          },
          "minSalary": {
            "title": "Min salary",
            "minimum": 0,
            "type": "integer",
            "description": "Low end of compensation, same units as the site (usually annual USD). **Only used when Start URLs are empty.**"
          },
          "maxSalary": {
            "title": "Max salary",
            "minimum": 0,
            "type": "integer",
            "description": "High end of compensation. **Only used when Start URLs are empty.**"
          },
          "onlyTransparentSalaries": {
            "title": "Only transparent salaries",
            "type": "boolean",
            "description": "Hide jobs without a posted salary. **Only used when Start URLs are empty.**",
            "default": false
          },
          "minYoe": {
            "title": "Min years of experience",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Role YOE low bound. **Only used when Start URLs are empty.**"
          },
          "maxYoe": {
            "title": "Max years of experience",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Role YOE high bound. **Only used when Start URLs are empty.**"
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Remember jobs across runs. Each row gets <code>_watchStatus</code>: NEW, UPDATED, or UNCHANGED. Turn on for a schedule so you only pay for what changed.",
            "default": false
          },
          "skipUnchanged": {
            "title": "Skip unchanged jobs",
            "type": "boolean",
            "description": "When Incremental mode is on, do not push UNCHANGED rows. Default on.",
            "default": true
          },
          "watchStateKey": {
            "title": "Watch state key",
            "type": "string",
            "description": "Optional name for this watch. Different keys keep separate histories (e.g. one per keyword). Leave empty to derive a key from the start URLs / keyword."
          },
          "maxItems": {
            "title": "Maximum jobs",
            "type": "integer",
            "description": "Maximum number of jobs to scrape.",
            "default": 10000
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages that can be processed at the same time.",
            "default": 100
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up.",
            "default": 200
          },
          "flattenOutput": {
            "title": "Flatten nested fields",
            "type": "boolean",
            "description": "If on, nested objects in each job record are flattened with underscores (e.g. <code>enriched_company_data.name</code> becomes <code>enriched_company_data_name</code>). Useful for CSV/Excel export or to match the field shape some other hiring.cafe scrapers produce. Off (default) keeps the nested JSON shape returned by the hiring.cafe API.",
            "default": false
          },
          "enrichDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "When on (default), the actor fetches each job's detail page after the listing to populate <code>job_information.description</code> with the full HTML description. Adds ~1 extra request per job. Turn off if you only need the structured listing fields (title, company, salary, apply URL, etc.) and want faster runs.",
            "default": true
          },
          "scrapingbeeKey": {
            "title": "ScrapingBee API token",
            "type": "string",
            "description": "Optional, and almost never needed. Paste your own <a href='https://scrapingbee.com' target='_blank' rel='noopener'>ScrapingBee</a> API token to enable a last-resort unblocker. It is only reached if every built-in route fails first — direct, Apify proxy, Apify Unblocker, and the browser — which happens rarely. On the pay-per-event plan there is no built-in token, so leaving this blank simply skips that last resort and the run fails instead of billing you for a third-party service."
          },
          "scrapedoKey": {
            "title": "Scrape.do API token",
            "type": "string",
            "description": "Optional. A second last-resort unblocker, tried only after ScrapingBee. Same conditions apply, and on the pay-per-event plan it likewise needs your own token. Note that hiring.cafe's Cloudflare currently blocks Scrape.do during its hardest windows, so ScrapingBee is the more dependable of the two."
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}