# Foundit Jobs Scraper – India Job Listings API (`unnoted/foundit-job-listings`) Actor

Get job listings from foundit.in for any keyword and city: title, company, locations, experience and salary ranges, skills, industry, function, posted date, applicant count and apply link. Filter by experience and days since posted. Export JSON, CSV or Excel. No login needed. Unofficial.

- **URL**: https://apify.com/unnoted/foundit-job-listings.md
- **Developed by:** [Unnoted](https://apify.com/unnoted) (community)
- **Categories:** Jobs
- **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

### What does Foundit Jobs Scraper – India Job Listings API do?

Foundit Jobs Scraper collects the public job listings of foundit.in (formerly Monster India) for any keyword and location: title, company, locations, experience and salary ranges, skills, industry, function and role, posted date, applicant count and the apply link, as typed values ready to export or call by API.

Unofficial, not affiliated with foundit.

**Main features:** search by keyword, up to 100,000 jobs per run, no login needed, export to JSON, CSV or Excel, and full API and scheduling support on Apify.

### What data can you get from foundit?

Each job is one row with these fields:

| Field | Description |
|---|---|
| `jobId` | foundit id of the job (always filled) |
| `url` | foundit page of the job (always filled) |
| `title` | Job title (always filled) |
| `companyName` | Hiring company (or the recruitment agency that posted the job); empty when the employer is confidential |
| `companyId` | foundit id of the company |
| `companyUrl` | foundit page listing the company's jobs |
| `companyLogoUrl` | Company logo, when the job has one |
| `locations` | Cities, states or countries of the job |
| `experienceMin` | Minimum experience asked, in years (empty when the job gives no range) |
| `experienceMax` | Maximum experience asked, in years |
| `salaryMin` | Lowest yearly salary offered (empty when the job shows none) |
| `salaryMax` | Highest yearly salary offered |
| `salaryCurrency` | Currency of the salary (e.g. INR) |
| `salaryHidden` | Whether the employer keeps the salary confidential |
| `skills` | Skills listed on the job |
| `employmentTypes` | Employment types (e.g. Full time) |
| `jobTypes` | Job tags such as Work From Home |
| `industries` | Industries of the job |
| `functions` | Job functions |
| `roles` | Job roles |
| `postedAt` | When the job was posted (ISO 8601) |
| `updatedAt` | When the job was last updated (ISO 8601) |
| `expiresAt` | When the job closes for applications (ISO 8601) |
| `totalApplicants` | How many people applied through foundit |
| `isUrgentlyHiring` | Whether the job is marked as urgently hiring |
| `applyUrl` | External page to apply on (the company's careers site, LinkedIn and so on); empty when you apply on foundit |
| `searchQuery` | The keyword that found the job (empty for a location-only search) |
| `searchLocation` | The location filter of the search, if any |
| `scrapedAt` | When the job was collected (ISO 8601) |

### How to scrape foundit with Foundit Jobs Scraper – India Job Listings API

1. Open Foundit Jobs Scraper – India Job Listings API on Apify and go to the **Input** tab.
2. In **Search keywords**, enter `java developer`.
3. In **Max jobs**, enter `20`.
4. Click **Start** and wait for the run to finish. A small run like this one takes under a minute.
5. Open the **Output** tab to see the results, or download them as JSON, CSV, Excel or HTML.

### Input

See the **Input** tab for every option. The fields:

| Field | Name | What it does | Default |
|---|---|---|---|
| `searchQueries` | Search keywords | Job titles, skills or companies to search for, one per line (e.g. java developer, sales manager, nurse). Each keyword is a separate search. |  |
| `location` | Location | City, state or country to search in, as foundit names it (e.g. Bangalore, Pune, Delhi, Maharashtra). Leave empty for all of India and abroad. With no keywords, the run lists every job in this location. |  |
| `experienceYears` | Your experience (years) | Only jobs whose experience range includes this many years (e.g. 3 matches 1-3, 2-4 and 3-5 years). Leave empty for any experience. |  |
| `postedWithinDays` | Posted within (days) | Only jobs posted in the last N days (e.g. 1 for the last day, 7 for the last week). Leave empty for any date. |  |
| `sort` | Sort by | Order of the results: foundit's relevance order, or the newest jobs first. Options: `relevance` (Relevance), `newest` (Newest first). | `"relevance"` |
| `maxItems` | Max jobs | Maximum number of jobs in total, across all searches. You pay only for jobs saved. | `100` |

Example input:

```json
{
  "searchQueries": [
    "java developer"
  ],
  "maxItems": 20
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One real result:

```json
{
  "jobId": "69373637",
  "url": "https://www.foundit.in/job/senior-java-developer-antal-international-est-patelnagar-delhi-mumbai-mumbai-city-navi-mumbai-69373637",
  "title": "Senior Java Developer",
  "companyName": "Antal International Est Patelnagar Delhi",
  "companyId": "562688",
  "companyUrl": "https://www.foundit.in/search/antal-international-est-patelnagar-delhi-562688-jobs-career",
  "companyLogoUrl": null,
  "locations": [
    "Mumbai",
    "Mumbai City",
    "Navi Mumbai"
  ],
  "experienceMin": 10,
  "experienceMax": 15,
  "salaryMin": 2500000,
  "salaryMax": 3200000,
  "salaryCurrency": "INR",
  "salaryHidden": false,
  "skills": [
    "Java 17 / Java 21 (Virtual Threads)",
    "Spring Boot 3.x",
    "Hibernate/JPA",
    "Reactive Stack (Spring WebFlux / Netty)",
    "RabbitMQ (Partitioning strategies, event driven webhooks, stream processing)",
    "Relational: PostgreSQL",
    "MySQL (Sharding, Query Optimization). NoSQL & Caching: Redis",
    "MongoDB",
    "GRPC",
    "Protobuf",
    "Swagger / OpenAPI 3.0",
    "CastleMock",
    "Kibana (ELK)",
    "Zipkin/Jaeger distributed tracing",
    "JUnit 5",
    "Testcontainers",
    "GitLab CI/CD",
    "Veracode static/dynamic security analysis",
    "Spring Cloud",
    "Spring Security",
    "Apache Kafka",
    "Apache Flink",
    "Apache Storm",
    "Oracle Db",
    "Memcached",
    "Restful Apis",
    "Json",
    "Xml",
    "Apigee",
    "Postman",
    "Splunk",
    "Grafana",
    "Prometheus",
    "Mockito",
    "Jenkins",
    "Docker",
    "Kubernetes",
    "Owasp",
    "Sonarqube",
    "Fortify"
  ],
  "employmentTypes": [
    "Full time"
  ],
  "jobTypes": [],
  "industries": [],
  "functions": [
    "Others"
  ],
  "roles": [
    "Other Roles"
  ],
  "postedAt": "2026-10-07T11:59:29.000Z",
  "updatedAt": "2026-10-07T11:59:29.000Z",
  "expiresAt": "2026-12-05T18:30:00.000Z",
  "totalApplicants": 42,
  "isUrgentlyHiring": false,
  "applyUrl": null,
  "searchQuery": "java developer",
  "searchLocation": null,
  "scrapedAt": "2026-10-08T06:46:51.273Z"
}
```

### How much does it cost to scrape foundit?

Foundit Jobs Scraper – India Job Listings API uses pay-per-event pricing: **$2.00 per 1,000 jobs** (Job). You pay only for jobs saved to the dataset; platform usage is included in the price. Each run also has Apify's standard start fee of a fraction of a cent.

| Jobs | Price |
|---|---|
| 100 | $0.20 |
| 1,000 | $2.00 |
| 10,000 | $20.00 |

Set **Max items** (and the run's maximum cost in the run options) to cap what a run can spend. The run stops when either limit is reached.

### Use cases

- **Job market research in India:** see which companies hire for a skill in each city, and how many people apply.
- **Salary benchmarking:** collect the salary and experience ranges of a role across cities, as numbers you can sort and average.
- **Skills demand:** count which skills appear most in the jobs for a role or industry.
- **Job boards and aggregators:** feed fresh Indian listings with apply links into your own site or app.
- **Alerts:** schedule a daily run with "Posted within" 1 and get only new jobs into Google Sheets, Slack or your database.

### Tips

- Put several keywords in **Search keywords** to run several searches at once. Jobs found by more than one search are saved once.
- Use **Location** with the name foundit uses (Bangalore, Delhi, Gurgaon, Pune, Hyderabad). Leave the keywords empty to list every job in a location.
- Set **Your experience (years)** to get only jobs whose experience range includes you.
- Use **Posted within (days)** and **Sort by** "Newest first" on a schedule to collect only new jobs.
- One search gives up to about 9,600 jobs. For more, split it by location or by more specific keywords.

### FAQ

#### Is it legal to scrape foundit?

Foundit Jobs Scraper – India Job Listings API collects only data that foundit shows publicly to every visitor, and it leaves out personal data such as private profiles and contact details. Our Actors are ethical and do not extract private user data. Results could still contain personal data in titles or descriptions written by uploaders. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You are responsible for how you use the data.

#### Can I use it through an API?

Yes. Every Apify Actor has an API: start runs, pass input and read results over HTTP, or use the JavaScript and Python clients. See the **API** tab on the Actor page for ready-made examples.

#### Can I schedule runs and connect other apps?

Yes. Use Apify **Schedules** to run Foundit Jobs Scraper – India Job Listings API every hour, day or week, and integrations (Make, Zapier, Google Sheets, webhooks and more) to send the results where you need them.

#### Why did I get fewer results than expected?

The run stops at **Max items** or at the run's maximum cost, whichever comes first. foundit may also return fewer results for rare search terms. Duplicates across search terms are saved once. Check the run's `RUN_SUMMARY` record in the key-value store for the inputs that returned nothing.

#### What if it stops working?

Sites change. We run a daily check of our own and fix breakages quickly. If something looks wrong, open an issue in the **Issues** tab with the run link and we'll look at it.

#### Why is the salary empty on some jobs?

Many jobs give no salary, and some employers keep it confidential. salaryHidden is true when the employer hides it; the salary fields then stay empty, as on the site.

#### Why is the company empty on some jobs?

Some employers post as a confidential company, and foundit hides their name. The company fields then stay empty.

#### Are salaries yearly?

Yes. salaryMin and salaryMax are the yearly amounts in salaryCurrency (almost always INR).

#### Why do some jobs have an applyUrl?

foundit also lists jobs from company career sites and other job boards. For those, applyUrl is the page to apply on; for jobs posted on foundit it is empty.

#### Is the full job description included?

No. The output holds the listing fields shown in search results; open the job URL for the full description.

### Not included

No personal data: recruiter names, recruiter ids and contact phone numbers or emails are left out. Full job descriptions, company reviews and candidate data are not included.

### More Actors from us

- [AliExpress Search Scraper – Products & Prices](https://apify.com/unnoted/aliexpress-product-search)
- [BBB Scraper – Business Ratings & Accreditation](https://apify.com/unnoted/bbb-business-search)
- [Bilibili Scraper – Video Search & Stats API](https://apify.com/unnoted/bilibili-video-scraper)
- [Bumeran Jobs Scraper – LATAM Job Listings](https://apify.com/unnoted/bumeran-job-listings)
- [Google Jobs Scraper – Job Listings API](https://apify.com/unnoted/google-jobs-listings)
- [Google Play Reviews Scraper – App Reviews API](https://apify.com/unnoted/google-play-reviews-scraper)
- [Google Trends Scraper – Interest & Related Queries](https://apify.com/unnoted/google-trends-data)
- [Idealo Scraper – Price Comparison Data](https://apify.com/unnoted/idealo-price-search)
- [Kleinanzeigen Scraper – Listings & Prices](https://apify.com/unnoted/kleinanzeigen-listings-scraper)
- [Mercari Japan Scraper – Listings & Prices API](https://apify.com/unnoted/mercari-japan-search)
- [Resident Advisor Scraper – RA Event Listings](https://apify.com/unnoted/resident-advisor-events)
- [Sainsbury's Scraper – UK Grocery Prices](https://apify.com/unnoted/sainsburys-grocery-search)
- [Tokopedia Scraper – Product Search & Prices](https://apify.com/unnoted/tokopedia-product-search)
- [Workday Jobs Scraper – Any Careers Site](https://apify.com/unnoted/workday-jobs-scraper)
- [Yandex Maps Scraper – Places & Business Data](https://apify.com/unnoted/yandex-maps-places)

# Actor input Schema

## `searchQueries` (type: `array`):

Job titles, skills or companies to search for, one per line (e.g. java developer, sales manager, nurse). Each keyword is a separate search.

## `location` (type: `string`):

City, state or country to search in, as foundit names it (e.g. Bangalore, Pune, Delhi, Maharashtra). Leave empty for all of India and abroad. With no keywords, the run lists every job in this location.

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

Only jobs whose experience range includes this many years (e.g. 3 matches 1-3, 2-4 and 3-5 years). Leave empty for any experience.

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

Only jobs posted in the last N days (e.g. 1 for the last day, 7 for the last week). Leave empty for any date.

## `sort` (type: `string`):

Order of the results: foundit's relevance order, or the newest jobs first.

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

Maximum number of jobs in total, across all searches. You pay only for jobs saved.

## Actor input object example

```json
{
  "searchQueries": [
    "java developer"
  ],
  "sort": "relevance",
  "maxItems": 20
}
```

# Actor output Schema

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

One item per job.

## `runSummary` (type: `string`):

Items saved, inputs done, and how complete each field was.

# 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 = {
    "searchQueries": [
        "java developer"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("unnoted/foundit-job-listings").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 = {
    "searchQueries": ["java developer"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("unnoted/foundit-job-listings").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 '{
  "searchQueries": [
    "java developer"
  ],
  "maxItems": 20
}' |
apify call unnoted/foundit-job-listings --silent --output-dataset

```

## MCP server setup

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

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/Mooex4FGbccWpVRCC/builds/obLjn4ebffTiqrDLw/openapi.json
