{
  "openapi": "3.0.1",
  "info": {
    "title": "Hirist Jobs Scraper — India Tech Jobs, Recruiter & Salary Data",
    "description": "Scrape tech jobs from hirist.tech — India's IT job board. Get the employer and its own web domain, the named recruiter, salary band, experience range, mandatory vs optional skills, plus apply and view counts. Search by keyword, city and experience across 95 locations. No login, no proxy.",
    "version": "0.0",
    "x-build-id": "ta37KBrdapuuRtWAV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~hirist-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-hirist-jobs-scraper",
        "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~hirist-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-hirist-jobs-scraper",
        "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~hirist-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-hirist-jobs-scraper",
        "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": {
          "searchKeywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles, skills or technologies, one per line — e.g. `java`, `devops`, `data engineer`. hirist matches these against the job title and its skill tags.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, states or countries to filter on. Several act as OR. hirist tags many postings with **more than one** city; a job is returned when *any* of its cities matches, and the `location` field then shows the one you asked for (the full set is always in `locations`).",
            "items": {
              "type": "string",
              "enum": [
                "Delhi NCR",
                "Mumbai",
                "Bangalore",
                "Hyderabad",
                "Kolkata",
                "Chennai",
                "Pune",
                "Gujarat",
                "Maharashtra",
                "MP",
                "Jaipur",
                "Guwahati",
                "Goa",
                "Chandigarh",
                "Punjab",
                "Haryana",
                "Kerala",
                "Odisha",
                "Bihar",
                "Jharkhand",
                "UP",
                "US",
                "UK",
                "Singapore",
                "Middle East",
                "Malaysia",
                "EU",
                "Karnataka",
                "Tamil Nadu",
                "Rajasthan",
                "Andhra Pradesh",
                "Telangana",
                "Delhi",
                "Gurgaon/Gurugram",
                "Noida",
                "Greater Noida",
                "Faridabad",
                "Ghaziabad",
                "Patiala",
                "Udaipur",
                "Jodhpur",
                "Ahmedabad",
                "Surat",
                "Gandhinagar",
                "Vadodara/Baroda",
                "Dehradun",
                "Uttarakhand",
                "Lucknow",
                "Bhubaneshwar",
                "Nagpur",
                "Nasik",
                "Navi Mumbai",
                "Thane",
                "Cochin/Kochi",
                "Mysore",
                "Raipur",
                "Trivandrum/Thiruvananthapuram",
                "Vijayawada",
                "Vishakhapatnam/Vizag",
                "Aurangabad",
                "Madurai",
                "Coimbatore",
                "Pondicherry",
                "Metros",
                "Anywhere in India/Multiple Locations",
                "Overseas/International",
                "Dubai",
                "Kuwait",
                "Nigeria",
                "London",
                "Oman",
                "Muscat",
                "Abu Dhabi",
                "Saudi Arabia",
                "Riyadh",
                "Kenya",
                "Bhopal",
                "West Bengal",
                "Indore",
                "Mohali",
                "Remote",
                "Kanpur",
                "Mangalore",
                "Manesar",
                "Shillong",
                "Panchkula",
                "Vapi",
                "Tirupati",
                "Australia",
                "Canada",
                "Germany",
                "Switzerland",
                "England"
              ]
            }
          },
          "experienceMinYears": {
            "title": "Minimum experience (years)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Only jobs whose experience band reaches at least this many years. hirist matches on **overlap**, not containment — asking for 3–10 also returns a job advertised as 8–18, because the bands overlap."
          },
          "experienceMaxYears": {
            "title": "Maximum experience (years)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Upper end of the experience band. See the overlap note above."
          },
          "postedWithinDays": {
            "title": "Only jobs posted in the last N days (server-side)",
            "minimum": 1,
            "type": "integer",
            "description": "Filtered by hirist before results are returned, so you are **not billed** for stale postings — a 968-result sample dropped to 126 at 7 days. Leave empty for everything."
          },
          "startUrls": {
            "title": "Hirist URLs",
            "type": "array",
            "description": "Search URLs (`https://www.hirist.tech/search/java-jobs`) contribute their keyword and still obey the filters above. Direct job URLs (`https://www.hirist.tech/j/{slug}-{id}`) are fetched individually.",
            "items": {
              "type": "string"
            }
          },
          "fetchDescriptions": {
            "title": "Fetch full job descriptions",
            "type": "boolean",
            "description": "When enabled, each job additionally fetches its detail endpoint to add `description` (HTML), `descriptionText` (clean plain text) and `applyCount`. Turn this off for a roughly 2x faster run when the listing fields are enough.",
            "default": true
          },
          "postedWithinHours": {
            "title": "Only jobs posted in the last N hours",
            "minimum": 0,
            "type": "integer",
            "description": "Re-checked against each job's own posted date. Set 24 for the last day, 72 for the last 3 days. Leave empty (or 0) to keep everything."
          },
          "enrichEmails": {
            "title": "Enrich with employer contact emails (experimental, billed per email)",
            "type": "boolean",
            "description": "hirist publishes the employer's own web domain on most postings, so this reads that company's real site rather than guessing a domain from its name. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; never charged for misses.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum items to scrape",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the number of jobs collected across every keyword. Use this to limit billing.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of job detail API calls processed in parallel.",
            "default": 10
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "type": "integer",
            "description": "Number of retries before a failed request is given up.",
            "default": 4
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional and off by default. hirist's API answers directly without any anti-bot challenge, so a proxy adds latency and cost for no benefit. Only enable this if you need traffic to leave from a specific IP or country."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}