# Foundit Jobs Scraper: India Jobs, Salary & Skills (`cprussin/foundit-jobs`) Actor

Scrape Foundit (formerly Monster India) jobs by keyword and city: title, company, locations, experience range, salary, skills, posted date and job URL; full description optional. India plus Gulf and Southeast Asia jobs. New-job monitoring. No login. $2 per 1,000 jobs.

- **URL**: https://apify.com/cprussin/foundit-jobs.md
- **Developed by:** [Connor Prussin](https://apify.com/cprussin) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

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

## Foundit Jobs Scraper: India Jobs, Salary & Skills

**Foundit Jobs Scraper** exports job listings from Foundit (foundit.in, formerly Monster India) as clean JSON, CSV or Excel. It reads the same public search data the foundit.in website loads, no login needed:

- ✅ **Jobs by keyword and city**: any query (`python developer`, `data analyst`, `sales manager`, ...) in any city (`Bangalore`, `Pune`, `Mumbai`, `Delhi`, ...), or everywhere.
- ✅ **Experience and salary**: years of experience range, yearly salary range with currency (INR, plus SGD, AED, ... for Gulf and Southeast Asia jobs) when the recruiter discloses it.
- ✅ **Job details**: title, company, locations, key skills, employment and job type, industries, functions, posted and updated dates, applicant count, job URL and description snippet (full description optional).
- ✅ **Newest first**: sort by date and turn on monitoring mode to get only jobs you haven't seen.
- ✅ Deduplicated across searches, so a job that matches two searches is returned (and billed) once.
- ✅ Fast, light and polite: plain JSON requests, one at a time, no browser. Pay only for jobs written to your dataset.

### Start in one minute

Click **Start** with the prefilled input:

```json
{
  "queries": ["python developer"],
  "locations": ["Bangalore"],
  "maxItems": 20
}
```

You get: 20 python developer jobs in Bangalore, newest first, with `title`, `companyName`, `experienceMin`/`experienceMax`, `salaryMin`/`salaryMax`, `skills` and `jobUrl`.

**Cost:** $0.04: 20 jobs × $0.002, plus the $0.00005 actor-start fee.

### Use with an AI assistant

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client (`https://mcp.apify.com?tools=cprussin/foundit-jobs` loads only this actor), then paste:

```text
Use the Apify actor cprussin/foundit-jobs to get the 20 newest data engineer jobs in Pune on Foundit, and summarize the salary range and the most requested skills.
```

### Recipes

#### Data jobs in two cities

Newest data analyst and data engineer jobs in Pune and Hyderabad.

```json
{
  "queries": ["data analyst", "data engineer"],
  "locations": ["Pune", "Hyderabad"],
  "sortBy": "date",
  "maxItems": 40
}
```

#### Companies hiring sales staff

Sales jobs in Mumbai; group by `companyName` to see who is hiring most.

```json
{
  "queries": ["sales manager"],
  "locations": ["Mumbai"],
  "maxItems": 50
}
```

#### Remote jobs with full descriptions

Remote DevOps jobs with the full description, for screening.

```json
{
  "queries": ["devops engineer"],
  "locations": ["Remote"],
  "maxItems": 20,
  "includeDescription": true
}
```

#### Daily new-job alert

Schedule it daily: after the first run you get (and pay for) only jobs not returned before.

```json
{
  "queries": ["python developer"],
  "locations": ["Bangalore"],
  "sortBy": "date",
  "maxItems": 50,
  "onlyNew": true
}
```

### Who uses Foundit job data?

- **Recruiters and staffing agencies**: see which companies are hiring for a skill in a city right now, with experience and pay.
- **Sales and lead generation**: companies hiring many engineers or sales staff are growing and buying; reach them first.
- **Job seekers and job boards**: build your own feed or alerts for Indian jobs with salary and skills.
- **HR and market analysts**: benchmark salaries and in-demand skills by role, city and experience level.
- **AI agents**: give an LLM live Indian job listings through the Apify API or MCP server.

### How does the Foundit jobs scraper work?

1. Add search queries and (optionally) locations.
2. The actor calls Foundit's public search API for each query × location, 20 jobs per page, about one request per second.
3. It pages through results until `maxItems` jobs in total, or the end of the results.
4. You get one dataset item per job, newest first (or in Foundit's relevance order).

### How do I choose which Foundit jobs to scrape?

| Field                | Description                                                                 | Example                     |
| -------------------- | --------------------------------------------------------------------------- | --------------------------- |
| `queries`            | Search keywords. Each query is searched in every location                   | `["java developer", "SAP"]` |
| `locations`          | City or country filters (optional), or `Remote`                             | `["Bangalore", "Pune"]`     |
| `sortBy`             | `date` (recently posted or refreshed first) or `relevance`                  | `"date"`                    |
| `maxItems`           | Max jobs in total, across all searches                                      | `500`                       |
| `includeDescription` | Add the full job description (plain text)                                   | `true`                      |
| `onlyNew`            | Monitoring: only jobs not returned by an earlier run with the same searches | `true`                      |
| `proxyConfiguration` | Optional Apify Proxy (not needed normally)                                  | `{ "useApifyProxy": true }` |

- **Queries only**: all locations (India, plus the Gulf and Southeast Asia jobs Foundit lists). **Locations only**: all jobs in the city.
- Locations work like the foundit.in location box: `Bangalore` and `Bengaluru` both match "Bengaluru / Bangalore". Use one city per entry.

### What data do you get for each Foundit job?

```json
{
  "jobId": "61745075",
  "title": "Machine Learning Engineer (AI/ML)",
  "companyName": "Rarr Technologies Private Limited",
  "companyId": "1248443",
  "companyLogoUrl": null,
  "locations": ["Bengaluru / Bangalore"],
  "country": "India",
  "remote": false,
  "experienceMin": 6,
  "experienceMax": 9,
  "salaryMin": 1300000,
  "salaryMax": 1500000,
  "salaryCurrency": "INR",
  "skills": [
    "Python",
    "Machine Learning",
    "Artificial Intelligence",
    "REST",
    "cloud",
    "Tensorflow",
    "gRPC services",
    "MLOps tools",
    "data pipelines"
  ],
  "employmentTypes": ["Full time"],
  "jobTypes": ["Permanent Job"],
  "industries": [],
  "functions": ["Others"],
  "postedAt": "2026-08-07T11:47:09.000Z",
  "updatedAt": "2026-10-02T20:54:50.000Z",
  "closesAt": "2026-12-01T18:30:00.000Z",
  "applicants": 368,
  "urgentlyHiring": false,
  "jobUrl": "https://www.foundit.in/job/machine-learning-engineer-ai-ml-rarr-technologies-private-limited-bengaluru-bangalore-61745075",
  "applyUrl": null,
  "descriptionSnippet": "Role Overview We are looking for an experienced Data Science & Machine Learning Engineer with strong expertise in AI/ML, Python, and Deep Learning to develop, deploy, and optimize machine learning solutions. Key Responsibilities - Develop and deploy ML/AI models using Python. - Work with ML ...",
  "searchQuery": "python developer",
  "searchLocation": "Bangalore",
  "scrapedAt": "2026-10-03T13:05:58.599Z"
}
```

- `salaryMin`/`salaryMax` are yearly amounts in `salaryCurrency` (1300000 = ₹13 lakh a year). `null` when the salary is hidden, confidential or not disclosed.
- `experienceMin`/`experienceMax` are years; 0–0 usually means freshers (or not stated).
- `companyName` is `null` when the recruiter lists the job as a confidential company.
- `applyUrl` is set when the job is applied for on an external site; otherwise apply on `jobUrl`.
- `description` (plain text) is added only with `includeDescription: true`.

### How much does it cost to scrape Foundit jobs?

Pay-per-event, only for jobs written to your dataset:

| Event | Price      |
| ----- | ---------- |
| Job   | **$0.002** |

That's **$2 per 1,000 jobs**. The default input (20 python developer jobs in Bangalore) costs $0.04. If you set a **maximum cost per run**, the actor stops cleanly when it reaches it.

### Tips for scraping Foundit jobs

- **Daily new jobs:** use `sortBy: "date"` with `onlyNew`, schedule it daily and send new jobs to Google Sheets, Slack or a webhook with Apify integrations.
- **Hiring leads:** run a skill across several cities, then group by `companyName` to see who is hiring the most.
- **Salary benchmarks:** filter on `salaryCurrency: "INR"` and aggregate `salaryMin`/`salaryMax` by query, city or experience.
- **Skills demand:** count `skills` across thousands of jobs for a role to see what employers ask for.

### How do I monitor Foundit for new jobs?

Turn on `onlyNew` and run the actor on an [Apify schedule](https://docs.apify.com/platform/schedules) (e.g. daily; save the input as a task and schedule the task).

- The first run is a baseline and returns jobs as usual. Later runs return, and charge for, only jobs (by `jobId`) not returned before. Skipped jobs are never charged.
- Keep `sortBy: "date"` so new jobs come first; `maxItems` counts only new jobs.
- State lives in your account in the key-value store `foundit-jobs-state`, one record per set of searches (queries × locations). Changing them starts a new baseline. It remembers the latest 50,000 jobs.
- Add a Slack, email or webhook integration to the task to get new-job alerts.

### Foundit jobs scraper FAQ

**Is this an official Foundit API?** No. It reads the public search results foundit.in shows to logged-out visitors, and respects foundit.in's robots.txt.

**Why are some jobs outside my city?** Foundit matches multi-city jobs and nearby or related locations. Filter on `locations` if you need exact matches.

**Why do I see Singapore or UAE jobs?** Foundit also lists Gulf and Southeast Asia jobs. Add a location such as `India` or a city to restrict results.

**Do I need a proxy?** No. The Foundit API answers Apify's servers directly. You can still enable Apify Proxy; the actor then switches IP automatically if a request is blocked.

**Can I use it through the API or with AI agents?** Yes. Call it through the Apify API, the Apify MCP server or any Apify integration.

**Disclaimer:** This actor is not affiliated with, endorsed by or sponsored by Foundit. Foundit is a trademark of its owner. You are responsible for complying with Foundit's terms and applicable laws when using the data.

### Related actors

- [hirist-iimjobs-jobs](https://apify.com/cprussin/hirist-iimjobs-jobs?fpr=to54nm): India tech jobs from Hirist and management jobs from iimjobs, with experience, salary and skills.
- [wellfound-jobs](https://apify.com/cprussin/wellfound-jobs?fpr=to54nm): Startup jobs from Wellfound (AngelList Talent) with salary, equity and company data.
- [new-business-registrations](https://apify.com/cprussin/new-business-registrations?fpr=to54nm): New LLC and corporation filings from state open-data portals.
- [trustpilot-reviews](https://apify.com/cprussin/trustpilot-reviews?fpr=to54nm): Trustpilot reviews, ratings and TrustScore for any company.

# Actor input Schema

## `queries` (type: `array`):

Keywords as you would type them on foundit.in, e.g. <code>python developer</code>, <code>data analyst</code>, <code>sales manager</code>. Each query is searched in every location below. Leave empty to list all jobs in the locations.

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

Optional city or country filter, one per entry, e.g. <code>Bangalore</code>, <code>Pune</code>, <code>Mumbai</code>, <code>Delhi</code>, <code>Singapore</code> or <code>Remote</code>. Leave empty to search everywhere (India, plus Gulf and Southeast Asia jobs Foundit lists).

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

<code>date</code>: most recently posted or refreshed jobs first (best for monitoring). <code>relevance</code>: Foundit's default ranking.

## `maxItems` (type: `integer`):

Stop after this many jobs in total, across all searches. Each job is billed as one event.

## `includeDescription` (type: `boolean`):

Add the full job description (plain text) to each job. Every job always has a short <code>descriptionSnippet</code>.

## `onlyNew` (type: `boolean`):

Return only jobs not returned by an earlier run with the same queries and locations. Schedule the actor (e.g. daily) for new-job alerts: the first run is a baseline, later runs output (and bill) only new jobs. State is kept in the key-value store "foundit-jobs-state" in your account.

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

Optional Apify Proxy. Not needed normally: the Foundit API answers datacenter IPs directly. If set, the actor switches to a new IP whenever a request is blocked or rate-limited.

## Actor input object example

```json
{
  "queries": [
    "python developer"
  ],
  "locations": [
    "Bangalore"
  ],
  "sortBy": "date",
  "maxItems": 20,
  "includeDescription": false,
  "onlyNew": false
}
```

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

// Run the Actor and wait for it to finish
const run = await client.actor("cprussin/foundit-jobs").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 = {
    "queries": ["python developer"],
    "locations": ["Bangalore"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("cprussin/foundit-jobs").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 '{
  "queries": [
    "python developer"
  ],
  "locations": [
    "Bangalore"
  ],
  "maxItems": 20
}' |
apify call cprussin/foundit-jobs --silent --output-dataset

```

## MCP server setup

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

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/Bb0sBWvohnS5hFSR7/builds/c90hYR0m1XzQoKngb/openapi.json
