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

Collect public Foundit job listings across India and Southeast Asia.

- **URL**: https://apify.com/fetch_cat/foundit-jobs-scraper.md
- **Developed by:** [Fetch Cat](https://apify.com/fetch_cat) (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 $1.75 / 1,000 job saveds

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

Collect public Foundit job listings across India and Southeast Asia for recruiting research, labor-market analysis, and scheduled job monitoring. Export stable job URLs, employers, locations, normalized salary and experience, skills, posting age, and native-versus-syndicated provenance.

### Use cases

- Monitor newly posted roles by keyword and city.
- Track public hiring activity for a named employer.
- Compare salary, experience, and skill demand across Foundit markets.
- Feed normalized job records to spreadsheets, databases, dashboards, the Apify API, or MCP clients.

### Input

| Field | Purpose |
| --- | --- |
| `keywords` | Required job titles, skills, or search phrases. |
| `market` | Foundit country site: `IN` (default), `SG`, `MY`, or `ID`. |
| `locations` | Optional locations within the selected market. |
| `company` | Optional exact employer-name filter. |
| `postedWithinDays` | Keep jobs publicly dated within 1–60 days; listings without a public posting age are excluded when this filter is set. |
| `maxItems` | Stop after 1–1,000 unique jobs. |
| `includeDescription` | Fetch public detail pages when full descriptions are needed. |

Example:

```json
{"keywords":["software engineer"],"market":"IN","locations":["Bengaluru"],"postedWithinDays":7,"maxItems":100,"includeDescription":true}
```

### Input recipes

**Recent roles:** combine one focused keyword, a market/location, and `postedWithinDays`. Rows without a public date are excluded so the monitor does not silently include unverifiable-old jobs.

**Employer tracking:** set `company` to the exact public employer name. The Actor compares names case-insensitively and omits unrelated employers.

**Regional analysis:** run the same keywords separately with `market` set to `IN`, `SG`, `MY`, or `ID`; locations should belong to the selected country site.

**Fast monitoring:** set `includeDescription` to `false` when card-level fields are sufficient. Enable it when full public descriptions are needed. If a detail page is unavailable or too slow to respond, the job is still saved with its listing fields; unavailable description fields remain empty.

### Output

Each dataset item represents one public Foundit job. Core fields include `id`, `url`, `applyUrl`, `title`, `companyName`, `locations`, `salary`, `experience`, `skills`, `description`, `postedAt`, `postingAgeDays`, `sourceType`, and `scrapedAt`. Optional fields are `null` when Foundit does not publicly expose them; the Actor does not invent enrichment.

### API, MCP, and integrations

Run the Actor from Apify Console, schedules, the Apify API, webhooks, or an MCP client. Read records from the default dataset as JSON, CSV, Excel, XML, RSS, or JSONL. Use `id` for deduplication and `scrapedAt` for collection provenance.

### Pricing

The Actor uses pay-per-event pricing. The primary **Job saved** event is charged only when a public job record is successfully delivered to the dataset. See the live [Pricing tab](https://apify.com/fetch_cat/foundit-jobs-scraper/pricing) for current prices and plan-tier discounts; platform usage may apply according to your Apify plan.

### Limitations and responsible use

Only anonymously accessible public Foundit search, listing, and employer surfaces are supported. The Actor does not use applicant data, recruiter-account data, login-only content, CAPTCHA bypasses, or job application automation. Fields vary by market and listing source. Foundit can change routes and access controls.

### FAQ

#### Can I use this through the API or MCP?

Yes. All inputs are schema-defined and results are available from the default dataset.

#### Does it scrape private recruiter or applicant data?

No. It is limited to public job and employer information.

#### Why are some salary or skill fields empty?

Foundit does not expose every field on every listing. Missing public values remain `null` or empty arrays.

#### How should I monitor new jobs?

Use a narrow keyword/location query, set `postedWithinDays`, save the task, and schedule it in Apify.

#### Is this affiliated with Foundit?

No. This is an independent data extraction tool for public information.

### Related Actors

For other hiring sources, try:

- [LinkedIn Jobs Scraper](https://apify.com/fetch_cat/linkedin-jobs-scraper)
- [Google Jobs Scraper](https://apify.com/fetch_cat/google-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/fetch_cat/indeed-jobs-scraper)
- [Glassdoor Jobs Scraper](https://apify.com/fetch_cat/glassdoor-jobs-scraper)
- [JobStreet Job Listings Scraper](https://apify.com/fetch_cat/jobstreet-job-listings-scraper)

### Support

Report reproducible issues with the input shape, affected public URL, expected behavior, and observed behavior. Never include credentials or private data.

# Changelog

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

# Actor input Schema

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

One or more job titles, skills, or search phrases.

## `market` (type: `string`):

Country site to search: India, Singapore, Malaysia, or Indonesia.

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

Optional locations within the selected Foundit market.

## `company` (type: `string`):

Optional exact public employer-name filter.

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

Keep jobs publicly marked as posted within this many days.

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

Maximum number of unique public jobs to save.

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

Fetch public job detail pages to include full descriptions when available.

## Actor input object example

```json
{
  "keywords": [
    "software engineer"
  ],
  "market": "IN",
  "locations": [
    "Bengaluru"
  ],
  "maxItems": 100,
  "includeDescription": true
}
```

# Actor output Schema

## `overview` (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 = {
    "keywords": [
        "software engineer"
    ],
    "locations": [
        "Bengaluru"
    ]
};

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

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

```

## MCP server setup

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