# Hirist Jobs Scraper & API: Recruiter Activity, Applicants (`s_actors/hirist-jobs-scraper`) Actor

Scrape hirist.tech jobs in India with recruiter activity on every job: applications, views, recruiter actions and last active date. Every job of a skill, whole board, newest first, AmbitionBox ratings, job alerts. Excel, CSV, JSON.

- **URL**: https://apify.com/s\_actors/hirist-jobs-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** Jobs, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.96 / 1,000 jobs

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Hirist Jobs Scraper & API: Recruiter Activity, Applicants, Every Job of a Skill

Scrape **Hirist jobs** (hirist.tech, India's tech job board) to Excel, CSV or JSON **without login**, with the **recruiter activity** the job page shows. What sets it apart:

- **Is the recruiter active? Does anyone read the applications?** Every job comes with the numbers from its Hirist page: **applications**, **views**, **recruiter actions** (applications the recruiter has acted on; Hirist sells alerts about them in Hirist Pro), the **recruiter's last active date**, their **Top Recruiter** badges, and whether the job came from an ATS. Filter by **recruiter active in the last N days**, **only recruiters who act on applications** and **max applicants** (less competition). In our test of 100 jobs, recruiters of 73 had logged in within 3 days, only **26 had acted on any application**, and the median job had 202 applicants.
- **Every job of a skill, not only title matches.** Hirist's search box matches job titles: "python" finds about 900 jobs. This Actor reads Hirist's skill tag: **about 8,500 Python jobs** (java 3,900 against 860, React.js 2,350). Other scrapers call the search box.
- **The whole board, fast.** No keyword = every job of the categories you pick or all ~27,000 Hirist jobs, read 1,000 a request (the whole board in under a minute). **Newest first** and Hirist's own **posted within**, city, remote and category filters, plus **jobs for freshers** (0 years).
- **Company profile from AmbitionBox:** rating, reviews, company type (Foreign MNC, Indian MNC, startup), employees in India, headquarters, benefits and ratings by job role. Filter by **minimum company rating**.
- **Everything in one price:** full description (not cut at 4,000 characters), must-have and nice-to-have skills, experience range, salary in lakhs per annum when shown, recruiter name and title, diversity flags. **$1.20 per 1,000 jobs.**
- **Job alerts, no reposts.** Schedule it and get only the jobs you have not seen.

```json
{ "keywords": ["python"], "locations": ["Bangalore"], "postedWithin": "pastWeek", "recruiterActiveWithinDays": 3, "maxApplicants": 150 }
```

No Hirist account, no cookies. Use it as a **Hirist jobs API**: one call returns clean JSON with the fields above.

#### What you get

**One row per job.** Real examples, September 2026:

| job | company | location | posted | applications | recruiter actions | recruiter last active | rating |
|---|---|---|---|---|---|---|---|
| Principal Software Engineer - Backend | MakeMyTrip | Gurgaon | 2026-09-17 | 292 | 26 | 2026-09-24 | 3.5 |
| Product Data Analyst - SQL | RAAPID | Ahmedabad | 2026-09-18 | 491 | 43 | 2026-09-22 | |
| Enterprise Architect | Tiger Analytics | Chennai, Bangalore, Hyderabad | 2026-09-21 | 191 | 2 | 2026-09-28 | 3.8 |
| Software Principal Engineer | Dell Technologies | Bangalore | 2026-09-24 | 53 | 0 | 2026-09-24 | 3.7 |
| Data Analyst - Banking & Payments | iXceed Solutions | Remote | 2026-09-29 | 8 | 0 | 2026-09-29 | 4.0 |

In our test of 100 jobs (python, java, react, devops, data analyst): **100 had applications, views and recruiter actions**, 89 the recruiter's last active date (the other 11 came from an ATS or show none), 64 the AmbitionBox rating, 99 must-have skills, 100 the full description (37 longer than 4,000 characters) and 6 a salary (most Hirist recruiters hide it).

| Field | Description |
|---|---|
| `jobId`, `jobUrl`, `title`, `role` | The job, its Hirist page and the role name |
| `applicants`, `views` | Applications and views so far, as on the job page |
| `recruiterActions`, `recruiterActionRate` | Applications the recruiter has acted on, and their share of all applications |
| `recruiterName`, `recruiterTitle`, `recruiterUrl`, `recruiterLastActive`, `recruiterDaysSinceActive`, `recruiterTopRecruiterTimes` | Who posted the job, when they were last active on Hirist, how many times they were a Top Recruiter |
| `postedViaAts` | The job came from a third-party hiring tool (Hirist then shows no recruiter activity) |
| `postedDate`, `postedAt`, `daysSincePosted` | When the job was posted |
| `companyName`, `companyLogo`, `companyRating`, `companyReviews`, `companyType`, `companyEmployeesIndia`, `companyFounded`, `companyIndustry`, `companyHeadquarters`, `companyBenefits`, `companyRoleRatings`, `companyAbout`, `companyUrl` | The employer and its AmbitionBox profile |
| `location`, `locations`, `workplaceType` | Cities; `remote`, `hybrid` (remote or office), `on-site` |
| `experienceLevel`, `experienceMinYears`, `experienceMaxYears` | Required experience ("3-6 years") |
| `category`, `skills`, `mandatorySkills`, `optionalSkills` | Hirist category and skill tags, must-have and nice-to-have |
| `salaryText`, `salaryMinLpa`, `salaryMaxLpa`, `salaryMin`, `salaryMax`, `salaryYearlyMin`, `salaryYearlyMax`, `salaryCurrency`, `salaryHidden` | Salary in lakhs per annum and in rupees a year, when the recruiter shows it |
| `isPremium`, `isHiringDrive`, `isConfidential`, `womenPreferred`, `womenBackToWork`, `differentlyAbledFriendly`, `exDefenceFriendly` | Hirist flags: premium job, Hirist Talent Bridge hiring drive, diversity hiring |
| `isClosed`, `description`, `descriptionHtml`, `applyUrl`, `easyApply` | Whether the job is closed; the full description; the company's own apply page if any |
| `searchKeyword`, `searchSkill`, `searchCategory`, `searchLocation`, `searchUrl`, `isNew`, `scrapedAt` | Which search found the job; job alerts |

Four table views: **Jobs**, **Recruiter activity**, **Companies** and **Details**.

#### How it works

| Step | What happens |
|---|---|
| 1. Listings | Each keyword: Hirist's skill tag when it has one (react → React.JS, data engineer → Data Engineering), otherwise the title search. No keyword: the categories, or all 12. Your links, recruiter profiles. Hirist applies city, remote and date filters itself; 1,000 jobs a request |
| 2. Newest first | With **Newest first** or job alerts the Actor reads the whole listing and orders it by the posting time |
| 3. Job pages | For each job: the Hirist job page data (recruiter activity, description, company profile) |
| 4. Filters and clean-up | Experience, recruiter activity, applicants, rating, salary, title words, companies; closed jobs are dropped. Removed jobs, reposts (same title, company and cities) and jobs seen by a job alert are not charged |

#### Why this Actor

| | This Actor | Typical Hirist scraper |
|---|---|---|
| Applications and views | ✅ | ⚠️ Some |
| Recruiter actions, recruiter last active, Top Recruiter badges, ATS flag | ✅ | ❌ |
| Filters: recruiter active in N days, recruiter acts on applications, max applicants | ✅ | ❌ |
| Every job of a skill (python: ~8,500) | ✅ Hirist skill tag | ❌ Title search (~900) |
| No keyword: whole board or any category | ✅ ~27,000 jobs | ⚠️ One default category |
| Newest first | ✅ | ❌ |
| AmbitionBox rating | ✅ With company type, size, benefits, role ratings | ⚠️ Rating and reviews |
| Full description | ✅ Included, full length | ⚠️ Extra requests, cut at 4,000 characters |
| Jobs for freshers (0 years) | ✅ | ⚠️ Some |
| Job alerts (only new jobs) | ✅ Seen jobs not charged | ⚠️ Some |
| Price per 1,000 jobs | **$1.20** with everything | $2.50-$5 |

#### Pricing

Pay per event, no subscription needed. Apify Scale and Business plans pay less:

| Event | Free and Starter plans | Scale plan | Business plan |
|---|---|---|---|
| Run start | $0.0045 | $0.0045 | $0.0045 |
| Job (all fields: recruiter activity, company profile, full description) | $0.0012 | $0.00108 | $0.00096 |

**1,000 jobs = $1.20.** Free: jobs removed by your filters, reposts, closed jobs, jobs already seen by a job alert. Platform usage is included. Set a maximum cost per run in the run options: the Actor stops there.

#### Ready-made tasks

| Task | What it does |
|---|---|
| [Hirist Jobs for Freshers (0 Years Experience)](https://apify.com/s_actors/hirist-jobs-scraper/examples/hirist-jobs-for-freshers) | Every Hirist job open to freshers (0 years), newest first, with recruiter activity |
| [Hirist Remote Jobs in India](https://apify.com/s_actors/hirist-jobs-scraper/examples/hirist-remote-jobs) | Remote tech jobs from the past 2 weeks, newest first |
| [Hirist Jobs in Bangalore With Active Recruiters](https://apify.com/s_actors/hirist-jobs-scraper/examples/hirist-jobs-bangalore-active-recruiters) | This week's Bangalore jobs whose recruiter was active in the last 3 days and acts on applications |

#### Job alerts

1. Set your keywords, locations and filters, turn on **Only new jobs**, give the alert a name.
2. Save it as a task and add a **schedule** (every morning, with "Posted within: Past 3 days").
3. Send the results by email, Slack, Google Sheets, Make, Zapier or **n8n** with Apify integrations.

The first run returns the current jobs, newest first; next runs return only jobs not seen before.

#### FAQ

**What are recruiter actions?** The number Hirist shows on each job page as "Recruiter actions": how many applications the recruiter has acted on. Together with the applications count it tells you whether the job is read at all: `recruiterActionRate` = actions / applications. Hirist Pro members get notified about them; here they are on every row.

**What does "posted through a third-party tool" mean?** Some companies send jobs to Hirist from their hiring software (an ATS). Hirist then shows no recruiter last active date; `postedViaAts` is true, and **Skip jobs posted through an ATS** removes them.

**Why do I get more jobs than on the Hirist search page?** Hirist's search box matches job titles. Hirist also tags every job with the skills it asks for, and the Actor reads that list: "python" returns every job that requires Python, not only jobs with Python in the title. Turn on **Title must contain the keyword** for title matches only.

**Does Hirist show salaries?** Only when the recruiter chooses to (about 6 in 100 jobs). The salary is in lakhs per annum (`salaryMinLpa`, `salaryMaxLpa`) and in rupees a year. **Only jobs with a salary** keeps those.

**Which locations work?** The names Hirist uses: Indian cities ("Bangalore", "Pune", "Hyderabad", "Gurgaon", "Noida", "Mumbai", "Chennai", "Kolkata"), states ("Karnataka", "Maharashtra"), "Delhi NCR" (Delhi, Gurgaon, Noida, Greater Noida, Faridabad, Ghaziabad), "Remote" and Gulf and other countries ("Dubai", "Singapore", "US"). Common spellings are recognised (Bengaluru, Gurugram).

**Do I need a Hirist account?** No. Only job pages any visitor can open are read. Candidate data is not collected.

#### Use with the API and AI agents

Run it from the Apify API, the JavaScript or Python client, **n8n**, Make or Zapier, or from AI agents through the [Apify MCP server](https://mcp.apify.com) (Claude, ChatGPT, Cursor). One call: `POST https://api.apify.com/v2/acts/s_actors~hirist-jobs-scraper/run-sync-get-dataset-items` with the input above returns the jobs as JSON. Set **Description** to "None" for smaller answers.

#### Other job tools

| Actor | What it does |
|---|---|
| [StepStone Jobs Scraper](https://apify.com/s_actors/stepstone-jobs-scraper) | StepStone.de and .at jobs with salary estimates for most jobs, exact matches only, English jobs in Germany |

#### Is it legal?

The Actor reads public Hirist job pages that anyone can open without an account, as a visitor does. It does not log in or collect candidate profiles. Recruiter names and titles are shown on the public job pages; use such data according to the laws that apply to you (India's DPDP Act, GDPR and similar) and Hirist's terms.

# Actor input Schema

## `keywords` (type: `array`):

Skill, technology or job title, one per line: "python", "react", "java", "devops", "data engineer", "machine learning". A Hirist skill returns every job tagged with it (python: about 8,500 jobs; Hirist's own search box finds about 900); anything else is a Hirist title search. Empty = every job of the categories below, or the whole Hirist board (about 27,000 jobs).

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

City, state or country as on Hirist: "Bangalore" (or Bengaluru), "Pune", "Hyderabad", "Delhi NCR", "Gurgaon", "Noida", "Mumbai", "Chennai", "Kolkata", "Remote", "Dubai". Hirist filters by them itself; several = any of them. Empty = everywhere.

## `categories` (type: `array`):

Hirist's categories: "Backend Development", "Frontend Development", "Full Stack", "Mobile Applications", "AI/ML", "Data Engineering", "Data Analytics & BI", "DevOps / SRE", "Quality Assurance", "CyberSecurity", "Platform Engineering / SAP/Oracle", "Emerging Technologies". Without keywords = every job of these categories; with keywords = only keyword jobs in them.

## `remoteOnly` (type: `boolean`):

Adds Hirist's "Remote" location. Every row has workplaceType (remote, hybrid = remote or office, on-site).

## `experienceYears` (type: `integer`):

Only jobs whose experience range includes this many years. 0 = jobs for freshers (entry level). Empty = any. Removed jobs are free.

## `postedWithin` (type: `string`):

Hirist's own date filter. Every row has postedDate and daysSincePosted.

## `maxJobsPerSearch` (type: `integer`):

Per keyword, category or link. With only a location (no keyword or category) this is the total for the whole board. The Actor reads Hirist 1,000 jobs a request, so large pulls are fast.

## `sortBy` (type: `string`):

Newest first = the Actor reads the whole search and orders it by the posting time.

## `recruiterActiveWithinDays` (type: `integer`):

Keep jobs whose recruiter logged in to Hirist in the last N days (0 = today), as the job page shows ("Last Active"). Jobs posted through an ATS have no date and are removed. Removed jobs are free.

## `onlyRespondingRecruiters` (type: `boolean`):

Keep jobs where the recruiter has already acted on applications ("Recruiter actions" on the job page is above 0). The share is in recruiterActionRate.

## `maxApplicants` (type: `integer`):

Keep jobs with at most this many applications so far (less competition), e.g. 100.

## `excludeAtsJobs` (type: `boolean`):

Hirist marks jobs imported from a third-party hiring tool: their recruiter activity is not shown (postedViaAts = true).

## `minCompanyRating` (type: `number`):

Keep jobs of companies rated at least this on AmbitionBox (1-5, as shown on Hirist), e.g. 3.5. Companies without a rating are removed. Removed jobs are free.

## `onlyWithSalary` (type: `boolean`):

Keep jobs that show the salary (lakhs per annum). Most Hirist recruiters hide it.

## `keywordMatch` (type: `string`):

Skill = every job tagged with the skill; a keyword that is not a skill falls back to the title search.

## `titleMustMatchKeyword` (type: `boolean`):

On = only jobs whose title has every word of the keyword ("python" drops a "Backend Engineer" job that asks for Python). Removed jobs are free.

## `titleInclude` (type: `array`):

Keep only jobs whose title contains one of these words, e.g. "senior", "lead".

## `titleExclude` (type: `array`):

Remove jobs whose title contains one of these words, e.g. "intern", "manager".

## `companyExclude` (type: `array`):

Remove jobs of companies whose name contains one of these, e.g. staffing agencies.

## `skipDuplicates` (type: `boolean`):

Companies often post one job many times: same title + company + cities = one row.

## `searchUrls` (type: `array`):

Pages such as hirist.tech/k/python-jobs (skill), hirist.tech/c/ai-ml-jobs (category), hirist.tech/search/data-engineer, with their loc and posting filters.

## `recruiterUrls` (type: `array`):

Recruiter profiles, e.g. https://www.hirist.tech/r/180511-talent-bridge-bangalore.html: all their open jobs (Talent Bridge = Hirist's hiring drives).

## `jobUrls` (type: `array`):

Links of single jobs, e.g. https://www.hirist.tech/j/flatworld-agentic-ai-engineer-aiml-1675409, or just the number 1675409.

## `includeJobDetails` (type: `boolean`):

Recruiter activity (applications, views, recruiter actions, last active), recruiter name, full description and the company's AmbitionBox profile: one request per job, included in the price. Off = faster runs with the listing fields only.

## `descriptionFormat` (type: `string`):

The full job description is included at no extra cost.

## `onlyNewJobs` (type: `boolean`):

Remembers the jobs of earlier runs with the same alert name and returns only new ones, newest first. Schedule the Actor daily for a Hirist job alert to Slack, email or a sheet. Jobs already seen are free.

## `monitorName` (type: `string`):

Separate memory for each alert: use a different name for each search you schedule.

## `maxConcurrency` (type: `integer`):

How many Hirist requests run at once.

## `debugLog` (type: `boolean`):

Log every retry.

## Actor input object example

```json
{
  "keywords": [
    "python"
  ],
  "locations": [
    "Bangalore"
  ],
  "remoteOnly": false,
  "postedWithin": "anyTime",
  "maxJobsPerSearch": 100,
  "sortBy": "hirist",
  "onlyRespondingRecruiters": false,
  "excludeAtsJobs": false,
  "onlyWithSalary": false,
  "keywordMatch": "skill",
  "titleMustMatchKeyword": false,
  "skipDuplicates": true,
  "includeJobDetails": true,
  "descriptionFormat": "text",
  "onlyNewJobs": false,
  "monitorName": "default",
  "maxConcurrency": 10,
  "debugLog": false
}
```

# Actor output Schema

## `overview` (type: `string`):

The main job fields with recruiter activity.

## `recruiters` (type: `string`):

Recruiter, last active date, applications, views and recruiter actions.

## `companies` (type: `string`):

AmbitionBox rating, reviews, type, size and benefits of each company.

## `details` (type: `string`):

Category, skills, description.

## `all` (type: `string`):

Every field of every job.

# 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 = {
    "keywords": [
        "python"
    ],
    "locations": [
        "Bangalore"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/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 = {
    "keywords": ["python"],
    "locations": ["Bangalore"],
}

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

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "python"
  ],
  "locations": [
    "Bangalore"
  ]
}' |
apify call s_actors/hirist-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/hirist-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PLFO25Lf58RdJ6nn4/builds/ctjUa8QAeZ40qwztP/openapi.json
