# Foundit Scraper — Jobs in India, Gulf & Asia, No Phones (`highbrow_fame/foundit-jobs`) Actor

Job ads from foundit (ex Monster) in India, the Gulf, Singapore, Malaysia, Hong Kong, the Philippines and Indonesia: title, company, experience, salary, places, skills, date, full ad. No phones.

- **URL**: https://apify.com/highbrow\_fame/foundit-jobs.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 job delivereds

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 Scraper — Jobs in India, Gulf & Asia, No Phones

Get job ads from foundit (formerly Monster India, Monster Gulf and Monster Asia) — foundit.in, founditgulf.com, foundit.sg, foundit.my, foundit.hk, foundit.com.ph and foundit.id: title, company, whether a company or a consultant posted it, the experience range, the salary when it is shown, locations, remote or not, skills, industries, when it was posted and refreshed, applicants, and the link to apply — and, if you want, the full ad, roles, the job's cities with state, the complete skill list and views. Paste your foundit search links — or just type a job title and a city.

**Why this one**

- 🔗 **Your search, as you set it up.** Set every filter you like on foundit — experience, salary, freshness, location, industry, company or consultant — and paste the link. Or type keywords and places here ("data analyst" in "Hyderabad", "accountant" in "Dubai") and choose the site, experience, salary, freshness, work from home and "posted by" below.
- ⚡ **Fast.** A live test run read five searches on three foundit sites — data analysts in Bengaluru with 3 years' experience from the last 15 days, sales jobs paying 10-25 lakhs newest first, accountants in Dubai, engineers at companies in Singapore, java jobs in Pune for 5 years' experience — 3,724 jobs in 75 seconds. Another run read "python" in Bengaluru to the end of what foundit shows: 9,572 jobs in 5 minutes.
- 🌏 **Seven countries, one tool.** India, the Gulf, Singapore, Malaysia, Hong Kong, the Philippines and Indonesia run on the same foundit engine; links from any of them work, and the form has a site switch.
- 🔒 **No phone numbers, no recruiter names.** Companies and agencies are named by their company name only. The recruiter's name and phone that foundit keeps with the jobs posted on it are never read. Phone numbers (Indian, Gulf, Singapore and Hong Kong formats) and e-mail addresses in titles and ads become `[phone removed]` / `[e-mail removed]` or go with their sentence, and the lines that name a contact person ("call Rumana-9…", "HR Name: …", "Recruiter Info / <name>", "please contact: / <name>, Manager …", "Regards, / <name>") are taken out.
- 💸 **You pay only for jobs delivered.** A link that is not a foundit search, or a place foundit does not know, comes back as a free record with the reason.

### What you get

For every job:

| Field | What it is |
|---|---|
| `title`, `jobId`, `url` | the job ad on foundit |
| `company`, `companyId`, `companyJobsUrl`, `companyLogo` | who posted it, and their page of jobs on foundit |
| `employerType` | `company` or `consultant` (a recruitment agency), when foundit says |
| `experience`, `experienceMin`, `experienceMax` | foundit's experience line ("3-6 Years") and its years |
| `salary`, `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryPeriod`, `salaryConfidential` | the salary as foundit shows it and its numbers (a year, in the site's currency); `salaryConfidential` when the employer keeps it hidden |
| `locationText`, `locations`, `isRemote` | where, as foundit shows it, as a list, and whether the job is remote |
| `skills`, `industries`, `functions`, `jobTypes`, `employmentTypes` | the job's skills and categories |
| `postedAt`, `refreshedAt`, `postedAgo`, `expiresAt` | first posted, last refreshed by the employer, foundit's "2 days ago", and when the ad closes |
| `applicants`, `quickApply`, `isWalkIn`, `isUrgentlyHiring`, `isGreatPlaceToWork` | how many applied, and foundit's flags |
| `postedOnFoundit`, `applyUrl` | whether the employer posted the ad on foundit, or foundit gathered it from a career site or LinkedIn — then `applyUrl` is where to apply |
| `site` | India, Gulf, Singapore, Malaysia, Hong Kong, Philippines or Indonesia |
| `input`, `position`, `scrapedAt`, `status`, `error` | which search it came from, and why a search gave nothing |

With **Open every job for the full ad** also: `description`, `roles`, `workLocations` (city, state, country), `skillList`, `nationalities`, `views` — and `detailsError` if a job went offline between the search and its page.

#### Example

A real record from a live run with the full ad — the prefilled search, "python" in Bengaluru, 25 September 2026:

```json
{
  "input": "https://www.foundit.in/srp/results?query=python&locations=Bengaluru",
  "position": 105,
  "jobId": "68396292",
  "url": "https://www.foundit.in/job/python-developer-artech-infosystems-private-limited-bengaluru-bangalore-68396292",
  "title": "python Developer",
  "company": "Artech Infosystems Private Limited",
  "companyId": 898802,
  "companyJobsUrl": "https://www.foundit.in/search/artech-infosystems-private-limited-898802-jobs-career",
  "companyLogo": "https://media.monsterindia.com/logos/xe_artchpinx/jdlogo.gif",
  "employerType": "company",
  "experience": "3-6 Years",
  "experienceMin": 3,
  "experienceMax": 6,
  "salary": "2,50,000-10,00,000 INR",
  "salaryMin": 250000,
  "salaryMax": 1000000,
  "salaryCurrency": "INR",
  "salaryPeriod": "year",
  "salaryConfidential": false,
  "locationText": "Bengaluru",
  "locations": ["Bengaluru"],
  "isRemote": false,
  "skills": ["Data Analysis", "Django", "Flask", "Rest Apis", "Sql", "Git", "Docker", "Unit Testing", "Microservices", "Cloud Computing"],
  "industries": [],
  "functions": ["Others"],
  "jobTypes": [],
  "employmentTypes": ["Full time"],
  "postedAt": "2026-09-23T05:07:06.000Z",
  "refreshedAt": "2026-09-23T05:07:06.000Z",
  "postedAgo": "2 days ago",
  "expiresAt": "2026-11-21T18:30:00.000Z",
  "applicants": 220,
  "isWalkIn": false,
  "isUrgentlyHiring": false,
  "isGreatPlaceToWork": false,
  "quickApply": true,
  "postedOnFoundit": true,
  "applyUrl": null,
  "site": "India",
  "description": "Hiring: Python Developer | Bangalore | Hybrid\nArtech is hiring experienced Python Developers for an exciting opportunity in Bangalore.\nExperience: 3–6 Years\nLocation: Bangalore\nWork Mode: Hybrid\nCTC: Up to 10 LPA\nPreference: Bangalore local candidates\nInterested candidates can share their updated CV at:\nStrong experience in Python\nHands-on experience with Django and/or Flask\n…",
  "roles": ["Other Roles"],
  "workLocations": [{ "city": "Bengaluru / Bangalore", "state": "Karnataka", "country": "India" }],
  "skillList": ["Data Analysis", "Django", "Flask", "Rest Apis", "Sql", "Git", "Docker", "Unit Testing", "Microservices", "Cloud Computing"],
  "nationalities": ["Indian"],
  "views": 97,
  "status": "OK",
  "scrapedAt": "2026-09-25T18:32:30.059Z"
}
```

(Under "share their updated CV at:" the ad had foundit's own "\[HIDDEN TEXT]" mask and a "Contact:" line with a mobile number: both were taken out, together with the "Required Skills" heading next to them.)

### How to use it

1. Paste **Search links** from foundit, one per line — or type **Keywords** and **Places** (every keyword is searched in every place), pick the **foundit site** and choose the filters.
2. Set **Max jobs per search**, and tick **Open every job for the full ad** if you need the description, roles, the job's state and the full skill list.
3. Press **Start**, and download the results from the **Output** tab as JSON, CSV or Excel.

To follow new jobs, save your input as a task with **Freshness** set to "Last 1 day" and **Sort by** "Newest first", and schedule it daily.

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

### Pricing

You are charged **per job delivered** — see the price on this page. Opening jobs for the full ad costs nothing extra, only time (about 6 jobs a second: 2,286 jobs with their full ads in 6 minutes in a live run). Links that are not foundit searches and places foundit does not know are free.

### FAQ

**How many jobs per search?** foundit shows a search up to about 9,600 jobs, 100 a page; after that its pages only repeat jobs already shown, and the run stops there. A live run read "python" in Bengaluru, which foundit counts at 11,461 jobs: 9,572 different jobs. For more, split a big search with filters (experience, freshness, places). Smaller searches are read to the end: 707 of 707 java jobs in Pune for 5 years' experience, 195 of 195 accountant jobs in Dubai.

**Are the filters obeyed?** Yes: foundit applies them, and the run checks the salary range itself. In one live run, 29 of 29 data analyst jobs in Bengaluru from a "3 years, last 15 days" link had a range that includes 3 years and were refreshed within 14 days; 707 of 707 java jobs in Pune with **Your experience** 5 included 5 years; 2,000 of 2,000 jobs from a "company jobs" link on foundit.sg came from companies; 166 of 166 shown salaries in a "10-25 lakhs" link touched that range. foundit counts a job in a range when its pay range overlaps it (a 2.5-10 lakh job is in 3-6), and it places jobs whose salary is confidential too (627 of 793 in that search). It let 4 jobs through whose shown pay is outside the range: the run left those out.

**Why is the salary often empty?** Most jobs on foundit do not show one. foundit gathers most of its jobs from employers' career sites and LinkedIn, and those rarely have a salary: 25 of 707 java jobs in Pune showed one, 1,243 of 2,000 engineering jobs in Singapore. When the employer marks the salary confidential, foundit still sends the numbers to the page — they are not given out here; `salaryConfidential` is `true`.

**What if foundit does not know my place?** foundit quietly ignores a place it does not know and shows remote jobs only. The run checks every place first: one that foundit does not know comes back as a free `NOT_FOUND` record instead of a list of unrelated remote jobs.

**Why are there remote jobs in my city search?** foundit adds remote jobs to every place search: 25 of the 707 java jobs in Pune and 12 of the 195 accountant jobs in Dubai were remote, the rest were in the place. `isRemote` tells them apart. Tick **Work from home only** for remote jobs alone.

**In what order does "Newest first" come?** By `refreshedAt` — when the employer last refreshed the ad (792 of 792 steps in order in a live run). An ad first posted long ago (`postedAt`) can come first if it was refreshed today.

**Why no phone numbers or recruiter names?** They are personal data. Every job has its `url`, and `applyUrl` for jobs gathered from other sites. The recruiter's name and phone that foundit keeps with jobs posted on it are never read, and walk-in venues are not either. foundit masks many contacts in the ads itself; the rest are taken out by rules that know how job ads write them. Rules can miss an unusual wording: in a live run with 2,286 full ads, one consultant's name got through in a "Consultant Name : …" line; that wording is caught now, and a check of the next run's 2,279 full ads found no name left. That is why the full ad is off by default; titles go through the same rules.

**Why is the company sometimes shortened?** Some small agencies register on foundit as "\<owner's name> (Proprietor of <business>)". The run gives the business name only, and no company page link for them (its address spells the owner's name). Other companies are named exactly as foundit publishes them.

**Which foundit sites work?** foundit.in, founditgulf.com, foundit.sg, foundit.my, foundit.hk, foundit.com.ph and foundit.id — links from any of them, or the **foundit site** switch for keywords and places. The salary filter in lakhs is for foundit.in; on the other sites set the salary on foundit and paste the link.

**Is this affiliated with foundit or Quess?** No. This is an independent tool that reads public job ads on foundit.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

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

Search on foundit, set the filters you want (experience, salary, freshness, location, industry, company or consultant …) and paste the address of the results page. One per line. foundit.in, founditgulf.com, foundit.sg, foundit.my, foundit.hk, foundit.com.ph and foundit.id links work: foundit.in/srp/results?query=python\&locations=Bengaluru, or foundit.in/search/python-jobs-in-bengaluru.

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

Or search here without a link: job titles, skills or companies (data analyst, java, nurse, Infosys). Each keyword is searched in each place below, or in the whole country when there is no place. The filters below apply.

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

Cities, states or countries as foundit writes them (Bengaluru, Delhi NCR, Mumbai, Karnataka; Dubai; Kuala Lumpur). A place without keywords gives all its jobs. "Remote" gives remote jobs.

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

Which foundit the keywords and places are searched on. Links always use the site they come from.

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

Optional: only jobs whose experience range includes this many years, as foundit's own Experience filter (0 = freshers).

## `minSalaryLakhs` (type: `integer`):

Optional, foundit.in only: foundit's salary filter in lakhs of rupees a year. A job counts when its pay range overlaps yours. Jobs whose salary is confidential are placed by foundit.

## `maxSalaryLakhs` (type: `integer`):

Optional, foundit.in only: the top of the salary range, in lakhs a year.

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

Optional: only jobs posted within this many days.

## `employerType` (type: `string`):

Optional: jobs from companies, or from consultants (recruitment agencies).

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

Optional: only jobs foundit marks as work from home.

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

Relevance (foundit's default) or newest first.

## `maxListingsPerSearch` (type: `integer`):

Stops each search after this many jobs. foundit lets a search be read to about 9,600 jobs.

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

Off by default. Adds the full job description, roles, the job's cities with state and country, the complete skill list and views. One more request per job, so slower. Phone numbers, e-mail addresses and sentences that name a contact person are taken out of the ad by rules, which can miss an unusual wording — see the README.

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

How many searches to work on at the same time.

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

Used only when foundit turns a request down: the first try goes out directly.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.foundit.in/srp/results?query=python&locations=Bengaluru"
  ],
  "site": "in",
  "postedWithinDays": "any",
  "employerType": "any",
  "workFromHome": false,
  "sortBy": "relevance",
  "maxListingsPerSearch": 30,
  "includeDetails": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# 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 = {
    "searchUrls": [
        "https://www.foundit.in/srp/results?query=python&locations=Bengaluru"
    ],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/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 = {
    "searchUrls": ["https://www.foundit.in/srp/results?query=python&locations=Bengaluru"],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/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 '{
  "searchUrls": [
    "https://www.foundit.in/srp/results?query=python&locations=Bengaluru"
  ],
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/foundit-jobs --silent --output-dataset

```

## MCP server setup

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