# Foundit Scraper - Jobs, Salaries, Skills & Recruiter Leads (`scrapesage/foundit-scraper`) Actor

Scrape Foundit (formerly Monster) jobs across India, the Gulf & SE Asia - title, salary, experience, skills, company profile & recruiter phone leads. Filters, full descriptions & monitor mode. Independent tool, not affiliated with foundit.

- **URL**: https://apify.com/scrapesage/foundit-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Jobs, Lead generation, MCP servers
- **Features:** Limited permissions, Single-tenant, Server interface
- **Stats:** 95 total users, 18 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 job listings

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Scraper - Jobs, Salaries, Skills & Recruiter Leads (India, Gulf & SE Asia)

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by foundit or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "foundit" is referenced only to describe the publicly available website this Actor collects data from.

Extract **structured job data from Foundit** (formerly **Monster** - foundit.in, founditgulf.com, foundit.sg/.my/.id/.hk): **experience ranges, full skill lists, industry & function taxonomy, recruiter names**, plus **salary, company profile and the recruiter's direct phone number** wherever the posting publishes them. Optionally add the **full job description** and a **deduplicated recruiter/company lead list** for staffing and B2B outreach.

No login, no cookies, no browser - fast JSON extraction from Foundit's own search API. Requests go through Apify datacenter IPs first and switch to in-region residential IPs whenever Foundit refuses them.

### What you get

This actor reads Foundit's own `middleware/jobsearch` API, so every job arrives as structured data, and one run can also add the full description and a deduplicated recruiter/company lead list. How often each field is filled depends on what the employer publishes; the shares below come from 80 India jobs read on 23 October 2026.

| Data | Filled |
|---|---|
| Job title, company, location, recruiter name, posted and closing dates, apply or job URL | every job |
| Min/max **experience** range | every job |
| **Skills** list (+ synonyms), industries, functions | most jobs (69-77 of 80) |
| Designations, company logo | about 2 in 5 jobs |
| Structured min/max **salary** + currency (annual & monthly) | only when the employer publishes one (5 of 80; the rest show "0-0") |
| Role categories, qualifications, nationalities, company profile | a few jobs (3-5 of 80) |
| **Recruiter direct phone** (lead) | only on postings that expose it (2 of 80; placeholders such as 9999999999 are dropped) |
| Deduplicated **recruiter/company lead list** | opt-in |
| Full job **description** | opt-in, one extra request per job |
| Lead score (0-100), monitor mode (only new / changed) | every run |
| Regions | India, Gulf and 4 SE Asian markets in one actor |

### Use cases

- **Recruitment & sourcing** - pull live openings by title, city, experience, and salary across India, the Gulf, and SE Asia; benchmark compensation and in-demand skills.
- **Staffing & B2B lead generation** - turn postings into leads: recruiter name, company profile, and (on SME/staffing postings) the recruiter's **direct phone number**. Score by `leadScore` and export straight to your CRM.
- **Job boards & aggregators** - feed your board or newsletter with structured, deduplicated job data including salary and skills.
- **Labour-market intelligence** - track hiring volume, salary bands, and skill demand by role, industry, and city over time.
- **Competitor & client monitoring** - schedule daily runs with monitor mode to catch only newly posted or changed jobs for specific companies or queries.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) - the free plan is enough to try this actor.
2. Open the **Foundit Scraper**, pick a **region**, enter **search queries** (and optional **locations**), then click **Start**.
3. Watch job records stream into the dataset table.
4. **Export** as JSON, CSV, Excel, or XML - or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "region": "india",
    "searchQueries": ["software engineer", "data analyst"],
    "locations": ["Bangalore", "Mumbai"],
    "sortBy": "date",
    "freshnessDays": 7,
    "includeRecruiterLeads": true,
    "includeDescription": false,
    "maxResults": 100
}
```

- **region** - `india` (foundit.in), `gulf` (founditgulf.com), `singapore`, `malaysia`, `indonesia`, `hongkong`. (`philippines` is still accepted, but foundit.ph now redirects to a parked domain page, so that run ends with a $0 note.)
- **searchQueries** - job titles / keywords, combined with every location.
- **locations** - optional cities/regions (e.g. `Bangalore`, `Dubai`, `Singapore`). Leave empty to search the whole region.
- **startUrls** - paste Foundit search-result or individual job URLs; each is auto-detected.
- **sortBy** - `relevance`, `date`, or `salary`. **freshnessDays** - keep only jobs posted within N days (0 = no limit).
- **includeDescription** *(default false)* - fetch each job's page for the full description (one extra request per job).
- **includeRecruiterLeads** *(default false)* - also emit one deduplicated `recruiterLead` record per recruiter/company, with direct phone when the posting exposes it.
- **experienceYears / salaryMin / employmentType / industry / keyword** - client-side filters. Foundit labels nearly every job "Full time", so `Internship`, `Contract` and `Part time` are matched on the job's type tags or its title words (for example "Marketing Intern", "Java Developer Contract").
- **locations** go to Foundit's own search, which adds remote jobs and nearby cities to thin searches (in October 2026 a Jakarta search returned only remote jobs, and Dubai and Hong Kong searches about 7 in 10 local ones). Check `location` on each row when the place matters.
- **maxResults** *(default 100)* - set `0` for no limit (explicit opt-in; use with a run timeout).
- **monitorMode** *(default false)* - output only new/changed jobs across runs; pairs with [Schedules](https://docs.apify.com/platform/schedules).

### Output

One record per job (`type: "job"`), plus optional recruiter/company leads (`type: "recruiterLead"`):

```json
{
    "type": "job",
    "jobId": "57626955",
    "title": "Senior Platform Software Engineer",
    "company": "Oracle",
    "companyProfile": "Oracle Corporation is an American multinational computer technology corporation…",
    "companyLogoUrl": "https://media.foundit.in/logos/…/jdlogo.gif",
    "isGreatPlaceToWork": false,
    "location": "Bengaluru",
    "region": "india",
    "experienceLabel": "6-10 Years",
    "minExperienceYears": 6,
    "maxExperienceYears": 10,
    "salaryLabel": "20-32 Lakhs",
    "salaryCurrency": "INR",
    "minSalary": 2000000,
    "maxSalary": 3200000,
    "salaryConfidential": false,
    "skills": ["Software Architecture", "Debugging", "API versioning", "Software testing"],
    "designations": ["Software Engineer/Programmer"],
    "industries": ["IT/Computers - Hardware & Networking"],
    "functions": ["Software Development"],
    "employmentTypes": ["Full time"],
    "recruiterName": "Priya Sharma",
    "recruiterId": "704548",
    "recruiterPhone": "98xxxxxx21",
    "showContactDetails": true,
    "applyUrl": "https://careers.oracle.com/jobs/…",
    "jobUrl": "https://www.foundit.in/job/senior-platform-software-engineer-oracle-india-57626955",
    "isExternalApply": false,
    "postedAt": "2026-07-01T12:25:01.000Z",
    "postedLabel": "5 hours ago",
    "closingAt": "2026-08-15T18:30:00.000Z",
    "isUrgentlyHiring": false,
    "leadScore": 90,
    "searchQuery": "software engineer",
    "searchLocation": "Bangalore",
    "scrapedAt": "2026-07-02T04:00:00.000Z"
}
```

```json
{
    "type": "recruiterLead",
    "recruiterName": "Priya Sharma",
    "recruiterPhone": "98xxxxxx21",
    "company": "Acme Staffing LLP",
    "companyProfile": "Recruitment & staffing services across IT and BFSI…",
    "industries": ["Recruitment/Staffing"],
    "regionLabel": "India",
    "sampleJobTitle": "Telecaller",
    "sampleJobUrl": "https://www.foundit.in/job/telecaller-acme-delhi-58120033",
    "jobCountInRun": 6,
    "leadScore": 95,
    "scrapedAt": "2026-07-02T04:00:00.000Z"
}
```

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

This Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

- **Job listing** - One job record: title, company, salary, experience, skills, industry, recruiter & apply URL.
- **Recruiter / company lead** - One deduplicated recruiter/company lead with profile and, when the posting exposes it, the recruiter's direct phone.
- **Full job description** - Full job-description text fetched from the job page (only when includeDescription is on).

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** - start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** - official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** - run it daily with `monitorMode` + `freshnessDays` to capture only new postings; perfect for job boards and lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/foundit-scraper').call({
    region: 'india',
    searchQueries: ['data analyst'],
    locations: ['Bangalore'],
    includeRecruiterLeads: true,
    maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} jobs & recruiter leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps - no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** - multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** - push new recruiter leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** - get notified when a monitored search finds new jobs.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** - auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** - pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** - trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** - ask your assistant to "find data-analyst jobs in Bangalore posted this week and list recruiter contacts" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **hiring, jobs & B2B-lead stack**:

- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** - filter-based job postings, no login.
- **[Multi-ATS Job Scraper](https://apify.com/scrapesage/multi-ats-job-scraper)** - Greenhouse, Lever, Ashby & Workday boards.
- **[Glassdoor Scraper](https://apify.com/scrapesage/glassdoor-scraper)** - company reviews, ratings & interviews.
- **[JobStreet Singapore Scraper](https://apify.com/scrapesage/jobstreet-singapore-scraper)** - SEA jobs, salaries & company leads.
- **[Glints Scraper](https://apify.com/scrapesage/glints-scraper)** - SEA jobs, salaries & company leads.
- **[IndiaMART Scraper](https://apify.com/scrapesage/indiamart-scraper)** - India B2B supplier & product leads.
- **[LinkedIn Company Scraper](https://apify.com/scrapesage/linkedin-company-scraper)** - firmographics & B2B leads.
- **[Google Maps Scraper](https://apify.com/scrapesage/google-maps-scraper)** - local business places, leads & contacts.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** - emails, phones & socials from any site.

### Tips

- **Coverage**: Foundit caps deep pagination per query. To exhaust a big market, split runs by query and/or by `locations` (city by city), and use `sortBy: "date"` with `freshnessDays` for recency.
- **Leads**: turn on `includeRecruiterLeads` and sort by `leadScore` - SME/staffing postings are where the recruiter's direct phone appears.
- **Cost control**: leave `includeDescription` off unless you need full JD text - the search record already carries salary, skills, company and recruiter data.
- **Proxies**: keep the default (Apify Proxy, no group). The actor then tries datacenter IPs first and switches to in-region residential IPs when Foundit refuses them; pick the RESIDENTIAL group to use residential for every request.

### FAQ

**Is Foundit the same as Monster?** Yes - Monster's APAC & Middle-East business was rebranded **Foundit**. This actor covers foundit.in (India), founditgulf.com (Gulf/MENA), and foundit.sg/.my/.id/.hk. Foundit's Philippines site (foundit.ph) no longer runs: the domain now redirects to a parked page.

**Do I need a Foundit login or API key?** No. The actor reads Foundit's own public search endpoint - no account, cookies, or browser needed.

**Where do recruiter phone numbers come from?** From the posting itself. Foundit publishes the recruiter's direct number on SME/staffing postings that opt in (`showContactDetails`); large corporates usually hide it, so `recruiterPhone` is populated for the subset that exposes it - never fabricated.

**Why is `salary` usually empty?** Most Foundit postings do not publish a salary: in a sample of 80 India jobs on 23 October 2026, 75 showed "0-0" and one was marked confidential. The actor then sets `salaryConfidential: true` and leaves the numbers `null` rather than guessing.

**Can I export to Google Sheets, CSV, or Excel?** Yes - one click in the dataset view, or automatically every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new jobs automatically?** Turn on `monitorMode`, set `freshnessDays`, and create a [Schedule](https://docs.apify.com/platform/schedules); optionally add a [webhook](https://docs.apify.com/platform/integrations/webhooks) to push new leads into your CRM.

**Is scraping Foundit legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA and India's DPDP Act for personal data) and Foundit's terms.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by foundit or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"foundit" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official foundit product, is not authorised or certified by foundit, and does not distribute foundit software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome - this actor is actively maintained.

# Actor input Schema

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

Job titles or keywords to search on Foundit, e.g. "software engineer", "data analyst", "accountant". Each query is combined with every location below.

## `region` (type: `string`):

Which Foundit market to search. India (foundit.in) and Gulf/Middle East (founditgulf.com) are the largest; Singapore, Malaysia, Indonesia and Hong Kong use the same engine. Foundit's Philippines site no longer runs (foundit.ph redirects to a parked page).

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

City / region filters, e.g. "Bangalore", "Mumbai", "Dubai", "Singapore". Leave empty to search the whole region. Each location is combined with every query.

## `startUrls` (type: `array`):

Paste Foundit search-result URLs or individual job URLs (…/job/…). Each is auto-detected and scraped.

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

Result ordering requested from Foundit.

## `freshnessDays` (type: `integer`):

Keep only jobs posted within this many days (e.g. 1, 3, 7, 15, 30). 0 = no date limit. Ideal for daily monitoring runs.

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

Fetch each job's page for the complete job description (one extra request per job). Off by default for faster, cheaper runs - the search record already carries company, salary, skills, recruiter and apply URL.

## `includeRecruiterLeads` (type: `boolean`):

In addition to jobs, emit one deduplicated lead record per recruiter/company - name, company profile, logo and (when the posting exposes it) the recruiter's direct phone number. Great for staffing & B2B outreach.

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

Keep only jobs whose experience range reaches at least this many years.

## `salaryMin` (type: `integer`):

Keep only jobs whose disclosed maximum salary is at least this value (in the region's currency, annual). Confidential-salary jobs are kept.

## `employmentType` (type: `string`):

Keep only jobs matching this employment type, e.g. "Full time", "Part time", "Contract", "Internship".

## `industry` (type: `string`):

Keep only jobs whose industry contains this text, e.g. "IT", "Banking", "Healthcare".

## `keyword` (type: `string`):

Keep only jobs whose title, skills, company or role contains this text.

## `maxResults` (type: `integer`):

Maximum number of job records to return. Set to 0 for no limit (explicit opt-in; use with a run timeout).

## `monitorMode` (type: `boolean`):

Track jobs across runs in a key-value store and output only jobs that are new or whose details changed. Works alongside Apify Schedules for daily new-job alerts.

## `monitorStoreName` (type: `string`):

Named key-value store for monitor-mode state (lowercase letters, digits, hyphens).

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

Keep the default (Apify Proxy, no group): the actor tries datacenter IPs first and switches to in-region residential IPs when Foundit refuses them. Pick the RESIDENTIAL group to use residential for every request; any other choice is used exactly as given.

## `urlsFromFile` (type: `string`):

Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.

## Actor input object example

```json
{
  "searchQueries": [
    "software engineer"
  ],
  "region": "india",
  "sortBy": "relevance",
  "freshnessDays": 0,
  "includeDescription": false,
  "includeRecruiterLeads": false,
  "maxResults": 100,
  "monitorMode": false,
  "monitorStoreName": "foundit-scraper-monitor",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "urlsFromFile": ""
}
```

# Actor output Schema

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

All scraped job and recruiter-lead records as JSON items in the default dataset.

# 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": [
        "software engineer"
    ],
    "urlsFromFile": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/foundit-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 = {
    "searchQueries": ["software engineer"],
    "urlsFromFile": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/foundit-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 '{
  "searchQueries": [
    "software engineer"
  ],
  "urlsFromFile": ""
}' |
apify call scrapesage/foundit-scraper --silent --output-dataset

```

## MCP server setup

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