# Hirist Jobs Scraper — 147 Locations, 19 Fields, No Login (`themineworks/hirist-jobs-scraper`) Actor

Scrape Hirist.tech IT job listings by keyword, category, location and experience — title, company, salary, skills and AmbitionBox rating. No login, no cookies, pay per job. Use it as an MCP server in Claude, ChatGPT & AI agents.

- **URL**: https://apify.com/themineworks/hirist-jobs-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Jobs, Business, MCP servers
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 job scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Hirist Jobs Scraper: India Tech Roles & Salary

Scrape Hirist.tech IT job listings by keyword, category, location and experience — title, company, salary, skills and AmbitionBox rating. No login, no cookies, pay per job. Use it as an MCP server in Claude, ChatGPT & AI agents.

> ⚡ Part of a 75-scraper suite with thousands of runs · no login, no cookies, no ban risk.
>
> 💸 You are only charged for delivered results — empty searches, failed pages and duplicates are never billed.

### What it does

Hirist.tech (hirist.com redirects here) is one of India's larger IT-specific job boards, part of
the same group as Instahyre — but unlike Instahyre it is a fully public listing site with no
login wall on its search results. This actor reads Hirist's own public JSON API
(`gladiator.hirist.tech/job/*`) directly over plain HTTP — the exact endpoint the site's own
search box and category pages call. No browser, no Playwright, no login, no cookies.

You can search two ways, and combine them:

- **Keyword search** — free text against job titles, skills and descriptions (e.g. `"java
  developer"`, `"react native"`).
- **Category browse** — one of Hirist's 12 tech categories (Backend Development, Frontend,
  Mobile, DevOps/SRE, AI/ML, Data Engineering, Full Stack, CyberSecurity, Data Analytics & BI,
  Platform Engineering/SAP/Oracle, Emerging Technologies, Quality Assurance), used alone as a
  browse mode or combined with a keyword to narrow it further.

Both modes accept the same filters the live site's own search UI exposes: one or more locations
(147 Indian cities/states plus Gulf and a handful of international hubs, resolved from plain names
like `"Bangalore"` or `"Remote"`), a minimum/maximum years-of-experience band, and a "posted within
N days" recency filter. Pagination, deduping and a run-level spend guard are handled for you.

Every record carries the job title, company name (plus its live AmbitionBox rating and review
count where Hirist publishes one), all locations, the full skills/tags list, the experience band,
salary in lakhs-per-annum when the poster hasn't hidden it, apply count, and the posting
timestamp. Turn on `includeJobDescription` to also fetch the full HTML job description — one
extra request per job, so it is off by default to keep runs fast.

### Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `keyword` | string | no | `""` | Free-text job search, e.g. `"java developer"`. Leave empty to browse a category instead. |
| `categorySlug` | string | no | `""` | One of the 12 Hirist category slugs (see enum in the input editor). Combines with `keyword` if both are set; used alone as the browse mode if `keyword` is empty. Defaults internally to `backend-development-jobs` only when both `keyword` and `categorySlug` are empty. |
| `locations` | array | no | `[]` | City/state/country names to filter by, e.g. `"Bangalore"`, `"Hyderabad"`, `"Remote"`. Unrecognised names are logged and skipped rather than failing the run. |
| `experienceMinYears` | integer | no | — | Minimum years of experience. |
| `experienceMaxYears` | integer | no | — | Maximum years of experience. |
| `postedWithinDays` | integer | no | — | Only jobs posted within the last N days. |
| `maxJobs` | integer | no | `30` | Maximum jobs to return across all pages. |
| `includeJobDescription` | boolean | no | `false` | Fetch the full HTML job description per job (one extra request each). |
| `proxyConfiguration` | object | no | Apify default proxy | Hirist's job API is public and unauthenticated; the default proxy is enough. Add a group only if you see blocking. |

#### Example input

```json
{
  "keyword": "java developer",
  "locations": ["Bangalore", "Hyderabad"],
  "experienceMinYears": 3,
  "experienceMaxYears": 8,
  "maxJobs": 25,
  "includeJobDescription": false
}
```

### Output

One record per job. Field list and example below are taken from a real run, not a mock-up.

| Field | Type | Example |
|---|---|---|
| `job_id` | string | `"1659265"` |
| `title` | string | `"Capgemini - Java Developer - Microservices Architecture"` |
| `company` | string | `"Capgemini Technology Services"` |
| `company_rating` | number | `3.6` |
| `company_reviews_count` | integer | `55203` |
| `locations` | array | `["Bangalore"]` |
| `remote` | boolean | `false` |
| `category_id` | integer | `1` |
| `skills` | array | `["Java", "Backend Architecture", "J2EE", "Spring Boot"…]` |
| `experience_min_years` | integer | `6` |
| `experience_max_years` | integer | `11` |
| `salary_min_lpa` / `salary_max_lpa` | number | present only when the poster shows it |
| `apply_count` | integer | `193` |
| `premium` | boolean | `true` |
| `posted_at` | string | `"2026-07-30T10:54:48.937Z"` |
| `url` | string | `"https://www.hirist.tech/j/capgemini-java-developer-microservices-architecture-1659265"` |
| `description` | string | only present when `includeJobDescription` is `true` |
| `scraped_at` | string | `"2026-07-31T18:10:10.573Z"` |

#### Example output

```json
{
  "job_id": "1659265",
  "title": "Capgemini - Java Developer - Microservices Architecture",
  "company": "Capgemini Technology Services",
  "company_rating": 3.6,
  "company_reviews_count": 55203,
  "locations": ["Bangalore"],
  "remote": false,
  "category_id": 1,
  "skills": [
    "Java", "Backend Architecture", "J2EE", "Spring Boot", "Spring Frameworks",
    "RESTful API", "JSP", "Microservices Architecture", "OOPS", "MVC", "Webservices"
  ],
  "experience_min_years": 6,
  "experience_max_years": 11,
  "apply_count": 193,
  "premium": true,
  "posted_at": "2026-07-30T10:54:48.937Z",
  "url": "https://www.hirist.tech/j/capgemini-java-developer-microservices-architecture-1659265",
  "scraped_at": "2026-07-31T18:10:10.573Z"
}
```

### Use cases

- **India tech talent-demand analysis** — `skills` is a structured tag array, not free text, so
  you can count real demand per technology without any NLP over job descriptions.
- **Salary benchmarking by seniority** — `salary_min_lpa`/`salary_max_lpa` and the experience band
  are both numeric, turning compensation-versus-seniority analysis into a groupby.
- **Recruiter sourcing lists** — filter by category, location and experience band to build a
  target list of companies actively hiring for a specific skill set.
- **Company hiring-signal tracking** — `apply_count` and `company_rating`/`company_reviews_count`
  (pulled live from AmbitionBox) let you flag companies that are both hiring hard and well-rated,
  a fundable-growth signal.
- **Category trend tracking** — run the same `categorySlug` on a schedule (see below) to watch how
  a category's job count and skill mix shifts month over month.

### FAQ

#### Is this scraping HTML?

No. It calls the same public JSON API (`gladiator.hirist.tech/job/search` and `/job/category/`)
that the site's own React front end calls, which is why it needs no browser and costs a fraction
of a browser-based scraper.

#### Does Hirist require login to see this data?

No — Hirist's job search results and listing pages are fully public. (A separate, personalised
"my job feed" endpoint on the site does require a logged-in session; this actor does not use it
and never asks for credentials.)

#### Can I search by keyword AND category AND location at once?

Yes. All three combine in a single request — `keyword` narrows the free-text match, `categorySlug`
restricts to one of Hirist's 12 tech categories, and `locations` further restricts by city/state.
`experienceMinYears`/`experienceMaxYears` and `postedWithinDays` layer on top of that.

#### Is salary always present?

No. Many listings hide it. When Hirist publishes a band the fields carry it in lakhs per annum
(LPA); when it's hidden, both fields are simply absent from the record rather than showing as
zero, so "not disclosed" never looks like a real number.

#### What does `includeJobDescription` cost me?

Nothing extra — you are only ever charged per delivered job record, never per HTTP request. It
does make the run slower (one extra request per job) and use more of our compute, which is why it
defaults to off.

### Billing

Pay per event: one `job-scraped` event per delivered record, charged only **after** the record is
validated and stored. Empty results, blocked pages and duplicates are never charged. Store
discounts apply automatically on paid Apify plans.

### Run on a schedule

Apify Console → this Actor → **Schedules** → **Add schedule** → pick a cadence (e.g. daily) →
**Save**. It reruns with the same input automatically — useful for tracking a category or keyword
over time without re-triggering it by hand.

### Use in Claude, ChatGPT & any MCP agent

This actor runs as an MCP server, so an AI agent can call it directly:

```
https://mcp.apify.com/?tools=themineworks/hirist-jobs-scraper
```

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("themineworks/hirist-jobs-scraper").call(run_input={
    "keyword": "java developer",
    "maxJobs": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Legal and compliance

This actor collects only publicly available information — the same data any visitor can see
without logging in. It does not access private or authenticated areas, does not attempt to bypass
paywalls, and collects no personal data beyond what the source already publishes openly. You are
responsible for using the output in line with the source site's terms and with the data
protection law that applies to you.

MIT © [The Mine Works](https://apify.com/themineworks)

# Actor input Schema

## `keyword` (type: `string`):

Free-text job search, e.g. 'java developer' or 'react native'. Leave empty to browse a category instead (see categorySlug).

## `categorySlug` (type: `string`):

Browse a Hirist job category. Combined with keyword if both are set; used alone (as the browse mode) if keyword is empty.

## `locations` (type: `array`):

City, state or country names to filter by, e.g. 'Bangalore', 'Hyderabad', 'Remote'. Leave empty for all locations.

## `experienceMinYears` (type: `integer`):

Only return jobs whose experience band overlaps this minimum.

## `experienceMaxYears` (type: `integer`):

Only return jobs whose experience band overlaps this maximum.

## `postedWithinDays` (type: `integer`):

Only return jobs posted within the last N days.

## `maxJobs` (type: `integer`):

Maximum jobs to return across all pages.

## `includeJobDescription` (type: `boolean`):

Fetch the full HTML job description for every job (one extra request per job — slower and costs more compute, but no extra charge to you).

## `proxyConfiguration` (type: `object`):

Hirist's job API is public and unauthenticated; the Apify default proxy is enough. Add a group only if you see blocking.

## Actor input object example

```json
{
  "keyword": "java developer",
  "categorySlug": "",
  "locations": [],
  "maxJobs": 10,
  "includeJobDescription": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "java developer",
    "categorySlug": "",
    "locations": [],
    "maxJobs": 10,
    "includeJobDescription": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/hirist-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "java developer",
    "categorySlug": "",
    "locations": [],
    "maxJobs": 10,
    "includeJobDescription": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/hirist-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "java developer",
  "categorySlug": "",
  "locations": [],
  "maxJobs": 10,
  "includeJobDescription": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call themineworks/hirist-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=themineworks/hirist-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/FW4Z1coYJmHfmjnnu/builds/Gb2gnF76vsZUReGws/openapi.json
