# Foundit Jobs Scraper (`deriverge/foundit-jobs-scraper`) Actor

Jobs from Foundit, formerly Monster, in India, Singapore, Malaysia, the Philippines, Hong Kong and the Gulf, with experience in years, skills, applicant counts and the full description. Search by keyword, city, experience and posting date, or paste a Foundit search link.

- **URL**: https://apify.com/deriverge/foundit-jobs-scraper.md
- **Developed by:** [deriverge s.r.o.](https://apify.com/deriverge) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 9 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 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

## Foundit Jobs Scraper

Foundit, formerly Monster in India, the Gulf and Southeast Asia, runs job sites for India, Singapore, Malaysia, the Philippines, Hong Kong and the Gulf. This actor searches any of them and returns one row per job: title, company, cities, experience range in years, skills, applicant and view counts, the closing date and the full description. Pick a **Country site**, type a skill such as `python` and click **Start**. Most employers hide the salary: 21 of 600 jobs in one September 2026 run showed it. It costs $0.50 per 1,000 jobs on the Free plan ($0.25 on Business), and the $5 of monthly credit in Apify's Free plan covers about 10,000 jobs.

### What data does it return?

| Field | Description |
|---|---|
| `title`, `company` | Job title as posted, e.g. `python developer`, and the company, empty when the employer hides its name. |
| `employerType` | `Company` for a direct employer, `Consultant` for a recruitment agency. |
| `site` | The Foundit site the job comes from, e.g. `foundit.in` or `founditgulf.com`. |
| `location`, `cities`, `states`, `countries` | Places as the search results show them (`Pune, Indore`), and with full details the cities, states and countries as lists, e.g. `Maharashtra` and `Madhya Pradesh`. |
| `experienceText`, `experienceMin`, `experienceMax` | Required experience as shown (`4-9 Years`) and as whole years. Empty when the employer does not say. |
| `salaryText`, `salaryMin`, `salaryMax`, `salaryCurrency` | Yearly salary as Foundit shows it (`12,00,000-26,00,000 INR`) and as numbers in the site's currency. Empty when hidden. |
| `skills` | Skills the employer asks for, e.g. `FastAPI` and `Pytest`. |
| `functions`, `roles`, `industries` | Foundit's job function, role and industry, e.g. `Technology` or `Data Engineering`. Often `Others` or empty. |
| `employmentTypes`, `jobTypes` | For example `Full time`, and `Permanent Job` or `Work From Home`. |
| `applicants`, `views` | Applications received through Foundit so far, and how often the job was viewed. `views` needs full details. |
| `postedAt`, `updatedAt`, `closesAt` | When the job was posted, last updated and when it closes, in UTC. |
| `applyUrl` | The application page when it is outside Foundit, often a LinkedIn job or the employer's career site. |
| `companyAbout`, `companyIndustries` | Company profile and industries from the job page, filled for about a quarter of jobs. |
| `urgentlyHiring`, `greatPlaceToWork` | `true` when the employer marks the job as urgent, and when the company is certified as a Great Place to Work. |
| `description`, `descriptionHtml` | Full job description as plain text and as HTML. |
| `url`, `companyUrl` | The job page and the list of the company's jobs on Foundit. |

### How to scrape Foundit jobs

1. Pick the **Country site**. India (foundit.in) is the default; Singapore, Malaysia, the Philippines, Hong Kong and the Gulf each have their own site, jobs and currency.
2. Type skills, job titles or companies into **Keywords**, one per line. Each keyword is its own search; leave the field empty to read every job on the site.
3. Narrow the keyword searches with **Locations** (cities or regions as Foundit writes them, such as `Bengaluru`, `Pune` or `Dubai`; a job in any of them matches), **Countries** (on the Gulf site, e.g. `United Arab Emirates`), **Minimum experience (years)**, **Maximum experience (years)**, **Posted within** and **Work from home only**. **Sort by** Newest first puts the latest jobs on top.
4. To reuse a search built on the website, paste its address into **Search links from Foundit**; links from all six sites work. A link keeps the filters in its address; the form's location, experience, date and sort settings do not apply to it, and when **Keywords** is empty the run reads only the links.
5. Keep **Include full details** on for the description, company profile, location lists and views; the price is the same. Click **Start**, then export the **Output** as CSV, Excel or JSON or read it through the API. A run of 600 jobs with details took under a minute.

The input for a Gulf search sorted by date, as the API takes it:

```json
{
  "site": "GULF",
  "keywords": ["civil engineer", "quantity surveyor"],
  "countries": ["United Arab Emirates", "Saudi Arabia"],
  "minExperience": 5,
  "postedWithinDays": "7",
  "sortBy": "date",
  "maxItems": 300
}
```

### Example output

One job from a run on 28 September 2026, found by the keyword `python` on foundit.in. The two description fields are shortened. This employer has no company profile on Foundit, so `companyAbout` is empty.

```json
{
  "key": "foundit:IN:69126767",
  "jobId": "69126767",
  "site": "foundit.in",
  "title": "python developer",
  "url": "https://www.foundit.in/job/python-developer-tekintegral-consulting-private-limited-pune-indore-69126767",
  "company": "Tekintegral Consulting Private Limited",
  "companyId": "1254757",
  "companyUrl": "https://www.foundit.in/search/tekintegral-consulting-private-limited-1254757-jobs-career",
  "companyAbout": null,
  "companyIndustries": [],
  "employerType": "Consultant",
  "location": "Pune, Indore",
  "cities": [
    "Pune",
    "Indore"
  ],
  "states": [
    "Maharashtra",
    "Madhya Pradesh"
  ],
  "countries": [
    "India"
  ],
  "workFromHome": false,
  "experienceText": "4-9 Years",
  "experienceMin": 4,
  "experienceMax": 9,
  "salaryText": "12,00,000-26,00,000 INR",
  "salaryMin": 1200000,
  "salaryMax": 2600000,
  "salaryPeriod": "yearly",
  "salaryCurrency": "INR",
  "industries": [],
  "functions": [
    "Others"
  ],
  "roles": [
    "Other Roles"
  ],
  "employmentTypes": [
    "Full time"
  ],
  "jobTypes": [
    "Permanent Job"
  ],
  "skills": [
    "Python",
    "Micro Service",
    "Sql",
    "FastAPI",
    "Restapi",
    "Kubernets",
    "Mongo Db",
    "Pytest",
    "Migration",
    "Api"
  ],
  "postedAt": "2026-09-28T09:57:30.000Z",
  "updatedAt": "2026-09-28T09:57:30.000Z",
  "closesAt": "2026-11-26T18:30:00.000Z",
  "applicants": 29,
  "views": 13,
  "urgentlyHiring": false,
  "greatPlaceToWork": false,
  "applyUrl": null,
  "description": "Role: Python Developer\nClient : Infobeans\nLocation : Pune/Indore\nFULL TIME (INFOBEANS)\nWork Mode: Hybrid\n\nJob Description:\nExperience- 6+\nWe are looking for experienced Python Backend Engineers to work on an API migration initiative. The role involves migrating existing REST APIs from a Nuclio/Iguazio serverless environment to Python + FastAPI microservices running on Kubernetes, while maintaining functional and API contract parity with the existing services.\n...",
  "descriptionHtml": "<p><strong>Role: Python Developer</strong></p><p><strong>Client : Infobeans</strong></p><p><strong>Location : Pune/Indore</strong></p><p><strong>FULL TIME (INFOBEANS)</strong></p><p><strong>Work Mode: Hybrid</strong></p><p><strong> </strong></p><p><strong>Job Description:</strong></p><p><strong>Experience- 6+</strong></p><p>We are looking for experienced <strong>Python Backend Engineers</strong> to work on an API migration initiative. The role involves migrating existing REST APIs from a <strong>Nuclio/Iguazio serverless environment to Python + FastAPI microservices running on Kubernetes</strong>, while maintaining functional and API contract parity with the existing services.</p>...",
  "detailsIncluded": true,
  "searchQuery": "India: \"python\"",
  "scrapedAt": "2026-09-28T16:18:14.619Z"
}
```

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

| | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| 1,000 jobs | $0.50 | $0.40 | $0.325 | $0.25 |

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

A run of 10,000 jobs with full details costs $5.00 on the Free plan and $2.50 on Business. Foundit mixes advertisements into its results; the actor skips them, and you are not charged for them, for jobs removed by **Exclude keywords**, for a job that two of your searches share or for jobs held back by the new-only mode.

### Limits

- One Foundit search stops at 10,000 jobs. On 29 September 2026 `python` on foundit.in matched 29,952, so split a broad search by location, experience or posting date; the run log warns when a search is larger than that.
- Salaries are always yearly amounts, and on the Gulf site none of 200 `engineer` jobs showed one in September 2026.
- Experience is missing on about a third of jobs (206 of the 600), and `companyAbout` is filled on about a quarter.
- Without **Include full details** the rows keep `location` from the search results but have no description, views, company profile or location lists.
- When **Maximum jobs** is lower than the matches, the searches share it equally, a page of 100 at a time.
- If Foundit refuses requests with HTTP 403, the run stops and keeps the jobs it has returned.

### Daily alerts for new Foundit jobs

Turn on **Return only jobs new since the last run** and give the run a **Watch name** such as `python-pune`, or save it as a task, which keeps its own record. A scheduled run then returns only jobs that earlier runs under that name did not. Each job is remembered for 120 days. Its key includes the site code, e.g. `foundit:IN:69126767`, so jobs from different country sites never mix.

### FAQ

#### Is it legal to scrape Foundit?

Foundit shows these listings to every visitor without logging in, and the actor reads them with the same search and job requests the website makes. It does not collect recruiter or candidate profiles, and none of 600 descriptions from a September 2026 run contained an email address. You are responsible for how you use the data.

#### Which countries does the Gulf site cover?

Several. In a September 2026 run of 200 `engineer` jobs on founditgulf.com, 99 were in the United Arab Emirates, 64 in Egypt, 35 in Saudi Arabia, 5 in Qatar and 3 in Kuwait. Use **Countries** to keep only the ones you need.

### Related scrapers

- [Instahyre Jobs Scraper](https://apify.com/deriverge/instahyre-jobs-scraper)
- [Internshala Scraper](https://apify.com/deriverge/internshala-jobs-scraper)
- [Hirist Jobs Scraper](https://apify.com/deriverge/hirist-jobs-scraper)
- [JobStreet Jobs Scraper](https://apify.com/deriverge/jobstreet-jobs-scraper)

### Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the **Issues** tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the **API** tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.

# Changelog

This Actor's version history is a separate document: https://apify.com/deriverge/foundit-jobs-scraper/changelog.md

# Actor input Schema

## `site` (type: `string`):

Which Foundit site to search. Search links below can point to any of them.

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

What to search for, as in the Foundit search box: a job title, skill or company, for example "data analyst", "java" or "sales manager". Each keyword is its own search. Leave empty for all jobs.

## `countries` (type: `array`):

Only jobs in these countries, as Foundit writes them, for example United Arab Emirates, Saudi Arabia or Qatar on the Gulf site, or Singapore on the Singapore site.

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

Cities or regions as Foundit writes them, for example Bengaluru, Pune, Mumbai, Delhi, Hyderabad, Singapore, Kuala Lumpur or Dubai. A job in any of them matches.

## `minExperience` (type: `integer`):

Only jobs asking for at least this many years of experience.

## `maxExperience` (type: `integer`):

Only jobs asking for at most this many years; 0 to 2 finds fresher and junior jobs.

## `postedWithinDays` (type: `string`):

Only jobs posted or refreshed within this period.

## `workFromHome` (type: `boolean`):

Only remote jobs.

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

Order of the results, as on Foundit.

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

Foundit search addresses with your filters, for example https://www.foundit.in/srp/results?query=react\&locations=Pune or https://www.foundit.sg/search/data-analyst-jobs-in-singapore. Each link is its own search.

## `excludeKeywords` (type: `array`):

Drop jobs whose title or company contains any of these.

## `includeDetails` (type: `boolean`):

Opens each job for the full description (text and HTML), the company profile, cities, states and countries, and the number of views. The price is the same.

## `newOnly` (type: `boolean`):

Keeps a snapshot per watch name (or per saved task) and returns only jobs that were not there before. Schedule it daily for a job alert.

## `watchName` (type: `string`):

Name of the snapshot used by the new-only mode, for example "python-pune". Runs from a saved task get one automatically.

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

Hard cap on returned jobs. Foundit shows up to 10,000 jobs per search; when the cap is smaller, every search gets an equal share.

## Actor input object example

```json
{
  "site": "IN",
  "keywords": [
    "python"
  ],
  "postedWithinDays": "0",
  "workFromHome": false,
  "sortBy": "relevance",
  "includeDetails": true,
  "newOnly": false,
  "maxItems": 20
}
```

# Actor output Schema

## `jobs` (type: `string`):

One row per job with company, locations, experience, salary, skills, applicants and full description.

## `summary` (type: `string`):

Jobs matching and returned per search, details read, dropped rows and warnings.

# 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"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("deriverge/foundit-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"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("deriverge/foundit-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"
  ],
  "maxItems": 20
}' |
apify call deriverge/foundit-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deriverge/foundit-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/8c3YpvbMkM36nxrqm/builds/UIFHl7cqV85VKG7hR/openapi.json
