# India Job Inventory Feed: भारत Jobs (`getascraper/india-job-inventory-feed`) Actor

A source-level India job inventory feed that aggregates Apna, CutShort, Internshala, and Instahyre records without asserting buyer-market coverage gaps.

- **URL**: https://apify.com/getascraper/india-job-inventory-feed.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 10 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 job postings

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🇮🇳 India Job Inventory Feed: भारत Jobs

<table width="100%" style="table-layout:fixed;border-collapse:collapse">
<tr><td colspan="4" style="padding:14px 18px;background:#EAF6F5;border-top:3px solid #0F766E;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-radius:8px 8px 0 0"><span style="font-size:16px;font-weight:700;color:#1C1917">Build a single India job inventory from five distinct sources.</span> <span style="font-size:15px;color:#57534E">Bring Apna, CutShort, Internshala, Instahyre, Wellfound, and Hirist results into one canonical dataset while keeping source identity and links.</span></td></tr>
<tr><td colspan="4" style="padding:10px 14px;background:#0F766E;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1"><span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">India jobs sources and inventory</span> <span style="color:#EAF6F5;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Apna, CutShort, Internshala, Instahyre, and the combined India job feed</span></td></tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#FFFFFF;border-radius:0 0 0 8px"><span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-Bqf3sZlaZvWnVZbe1-X4r5SBrUub-CompressJPEG.Online_img%28512x512%29_%2813%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/apna-co-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Apna.co Jobs</a></span><br><span style="color:#57534E;font-size:11px">Blue and grey collar roles</span></td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#FFFFFF"><span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-hgMCIk2Sb7HnSumQC-QS4Q1rKbjd-unnamed_%287%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/cutshort-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">CutShort Jobs</a></span><br><span style="color:#57534E;font-size:11px">Technology and startup roles</span></td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#FFFFFF"><span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-4dMyE80KpfCIKroD4-JPR6apPnmU-unnamed_%2811%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/internshala-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Internshala Monitor</a></span><br><span style="color:#57534E;font-size:11px">Internships and entry-level jobs</span></td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#EAF6F5;border-radius:0 0 8px 0"><span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-8hG15V7QtjKUpwAt3-GucaVgd5Jo-s11728_indian_flag_logo_isolated_on_white_background_-styliz_104" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/india-job-inventory-feed" style="color:#0F766E;text-decoration:none;font-weight:700;font-size:13px">India Job Feed</a></span><br><span style="color:#0F766E;font-size:11px;font-weight:700">&#10148; You are here</span></td>
</tr>
</table>

<table width="100%" style="display:table;width:100%;border-collapse:collapse">
<tr>
<td style="padding:24px 28px;background:#EAF6F5;border:1px solid #B9DFDA;border-top:4px solid #0F766E;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">One canonical India jobs feed built from five public sources</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Combine Apna, CutShort, Internshala, Instahyre, Wellfound, and Hirist listings into a single dataset while keeping each source's identity and links.</span>
</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%;border-collapse:collapse">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #B9DFDA;border-radius:10px 0 0 10px;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0F5D56">🧩 Distinct members</span><br><span style="font-size:12px;color:#24534E">Keep every source listing separate.</span></td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #B9DFDA;border-left:none;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0F5D56">🔗 Safe clustering</span><br><span style="font-size:12px;color:#24534E">Compare related listings without merging them.</span></td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #B9DFDA;border-left:none;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0F5D56">🧭 Change context</span><br><span style="font-size:12px;color:#24534E">Track lifecycle states and source quality.</span></td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #B9DFDA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0F5D56">📤 Feed exports</span><br><span style="font-size:12px;color:#24534E">Use canonical rows, JSONL chunks, or XML.</span></td>
</tr>
</table>

Job-data teams can use this bilingual discovery feed for भारत jobs, India technology roles, and global startup hiring. It is designed for product managers, HR-tech teams, labor-market analysts, and feed operations teams that need source-linked records.

### 🔎 What this feed does

It collects public listings from [Apna](https://apify.com/getascraper/apna-co-scraper), [CutShort](https://apify.com/getascraper/cutshort-scraper), [Internshala](https://apify.com/getascraper/internshala-scraper), [Instahyre](https://apify.com/getascraper/instahyre-jobs-scraper), [Wellfound](https://wellfound.com/jobs), and [Hirist](https://www.hirist.tech/). It normalizes the returned records into one canonical dataset.

Each source member keeps its own `listingKey`, so downstream joins do not merge or remove source records.

Lifecycle states are conservative: `NEW`, `UPDATED`, `UNCHANGED`, `CLOSED`, and `REOPENED`. Closure detection is off by default. Source quality flags make incomplete or capped scans visible. CutShort closure detection is disabled in this version.

### 🎯 Who uses it

- **I am a job-data product manager** building India listings into our product while preserving the source identity behind each row.
- **I am an HR-tech analyst** comparing titles, locations, skills, and salary details where each source publishes them.
- **I am a labor-market researcher** collecting a reproducible job or internship inventory with lifecycle and source context.
- **I am a feed operations lead** delivering canonical records and export files without collapsing similar listings across sources.

### 🚀 How it works

<table width="100%" style="display:table;width:100%;border-collapse:collapse">
<tr>
<td style="padding:16px 14px;width:33%;background:#EAF6F5;border:1px solid #B9DFDA;border-radius:10px 0 0 10px;vertical-align:top"><span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 1</span><br><span style="font-size:14px;font-weight:700;color:#123B38">Choose a scope</span><br><span style="font-size:12px;color:#24534E">Set sources, a keyword, locations, and bounded limits.</span></td>
<td style="padding:16px 14px;width:33%;background:#EAF6F5;border:1px solid #B9DFDA;border-left:none;vertical-align:top"><span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 2</span><br><span style="font-size:14px;font-weight:700;color:#123B38">Receive source members</span><br><span style="font-size:12px;color:#24534E">Review canonical rows with source IDs, links, and quality flags.</span></td>
<td style="padding:16px 14px;width:33%;background:#EAF6F5;border:1px solid #B9DFDA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 3</span><br><span style="font-size:14px;font-weight:700;color:#123B38">Export or repeat</span><br><span style="font-size:12px;color:#24534E">Use the dataset or verified chunked exports for your workflow.</span></td>
</tr>
</table>

For later runs, choose `changesOnly` to emit meaningful lifecycle changes instead of unchanged rows. Monitoring state persists in a named store across Apify runs. Dataset rows are pushed first, and export records are read-back verified before state commits.

### ⚙️ Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `sources` | array of strings | No | Choose one or more boards: Apna, CutShort, Internshala, Instahyre, Wellfound, and Hirist. |
| `keyword` | string | No | Search by a job title, skill, or other simple term. |
| `locations` | array of strings | No | Add cities or regions, or leave empty for all available locations. |
| `companyNames` | list of names | No | Keep listings whose employer name contains one of these names. |
| `excludeKeywords` | list of words | No | Remove listings containing any of these words in the title, employer, location, or description. |
| `remoteOnly` | boolean | No | Keep only listings marked remote by the source. |
| `internshalaMode` | enum | No | Choose Internshala jobs or internships. |
| `includeDetails` | boolean | No | Include descriptions, skills, salary, and company details when published. Defaults to enabled. |
| `outputMode` | enum | No | Return all matching jobs or only new and changed jobs. Defaults to all. |
| `maxItemsPerSource` | integer | No | Maximum jobs from each selected board. Defaults to 100. |
| `maxPagesPerSource` | integer | No | Search depth on boards that support page limits. Defaults to 5 pages. |

### 🧾 Data table

The canonical dataset preserves source members and records only fields available from the selected source.

| Field | Type | Description |
| --- | --- | --- |
| `listingKey` | string | Stable source-namespaced member ID. |
| `sourcePlatform` | string | Source platform that produced the member. |
| `sourceRecordId` | string | Native ID used by the source member. |
| `inventoryType` | string | Job or internship when published by the source. |
| `title` | string | Listing title when published by the source. |
| `company` | string | Company name when published by the source. |
| `description` | string | Source-provided listing description when published. |
| `location` | string | Listing location when published by the source. |
| `salaryMin` | number | Lower salary or stipend value when published. |
| `salaryMax` | number | Upper salary or stipend value when published. |
| `salaryCurrency` | string | Salary currency when published by the source. |
| `salaryPeriod` | string | Salary period when published by the source. |
| `salaryRaw` | string | Original salary or stipend text when published. |
| `workArrangement` | string | Work arrangement when published by the source. |
| `isRemote` | boolean | Whether the source marks the listing as remote. |
| `isPartTime` | boolean | Whether the source marks the listing as part-time. |
| `contractTypes` | array of strings | Contract types when published by the source. |
| `skills` | array of strings | Skills when published by the source. |
| `postedAt` | string | Published date when available. |
| `validThrough` | string | Application or listing end date when available. |
| `listingUrl` | string | Direct source listing URL when available. |
| `applicationUrl` | string | Application URL when available. |
| `sourceUrl` | string | Original source URL when available. |
| `isActive` | boolean | Whether the record is currently considered active. |
| `lifecycleStatus` | string | Conservative `NEW`, `UPDATED`, `UNCHANGED`, `CLOSED`, or `REOPENED` state. |
| `firstSeenAt` | string | Time this source member was first recorded in its state scope. |
| `lastSeenAt` | string | Time this source member was most recently seen. |
| `closedAt` | string | Time the member was marked closed, if it was closed. |
| `changedFields` | array of strings | Canonical fields that changed when a change was detected. |
| `sourceComplete` | boolean | Whether the source scan was explicitly proven complete. |
| `sourceCapped` | boolean | Whether the source result reached its configured record cap. |
| `closureEligible` | boolean | Whether this source result can participate in closure checks. |

### 📦 Exports

The default dataset is the canonical output. Each successful run also writes verified chunks to the default key-value store:

- `EXPORT_JSONL_n`: newline-delimited canonical records.
- `EXPORT_ADZUNA_SHAPED_XML_n`: XML with an Adzuna-shaped field layout.
- `EXPORT_MANIFEST`: chunk metadata, checksums, and source context.
- `RUN_HEALTH`: child-run status and diagnostics.

The XML is explicitly Adzuna-shaped. It does not claim official Adzuna compatibility, certification, or partnership.

### 🛡️ Limits and safety

This feed does not claim complete India job-market coverage or prove market gaps. It returns records from the selected source runs only.

Missing source values stay absent. Similar listings remain separate source members, and `listingKey` remains the safe join key.

Closure detection requires an explicit opt-in, a non-latest pinned source build, an explicitly complete uncapped source scan, and repeated misses. Instahyre can be closure-eligible only under these safeguards. CutShort is not eligible for closure detection in this version.

### 🧮 Run economics

Each board has a different collection profile. Search pages are usually light, while some boards need extra visits for a full job page. In 20-row Cloud canaries, measured end-to-end platform cost ranged from about $0.01 to $0.32 per 1,000 returned rows at [Apify's $0.20 per compute unit rate](https://apify.com/pricing). This is an operational estimate, not a user charge, and it varies with result count, source availability, and search depth.

The sample was about $0.01-$0.02 per 1,000 rows for Apna, Wellfound, and Hirist, about $0.03-$0.09 for Instahyre, and about $0.27-$0.31 for Internshala. Instahyre's full-detail run used roughly 2.7 times the listing-only compute per returned row, while Internshala used about 1.2 times. Apna, Wellfound, and Hirist were similar in both modes because their listing responses already carried much of the detail. CutShort returned no rows in this canary, so no per-row estimate is claimed for it.

Use `includeDetails: false` for a low-cost discovery pass. Turn it on when descriptions, skills, salary, or application context matter. Full details do not create a second user-facing charge in this version, but they can take longer on sources that publish a separate detail page.

### 💰 Pricing

Pay per returned job record. Empty runs and runs with no returned records do not incur result charges. The primary Store event is one `Job posting` for each canonical row, and full details stay included in that row rather than creating a second user-facing charge.

This Actor is prepared for pay-per-event pricing. Once it is published, check the Store panel for the live rate for your plan.

### ⭐ Enjoying India Job Inventory Feed: भारत Jobs?

<table width="100%" style="display:table;width:100%;border-collapse:collapse">
<tr>
<td style="padding:20px 24px 14px;background:#EAF6F5;border:1px solid #B9DFDA;border-left:5px solid #0F766E;border-radius:10px 10px 0 0"><span style="font-size:20px;letter-spacing:4px;color:#123B38">⭐ ⭐ ⭐ ⭐ ⭐</span><br><span style="font-size:17px;font-weight:800;color:#123B38">Help other job-data teams find a source-linked India hiring feed.</span><br><span style="font-size:14px;color:#24534E">A rating helps product managers, analysts, and feed operations teams assess this Actor. Your feedback guides future improvements.</span></td>
</tr>
<tr>
<td style="padding:0;background:#0F766E;border:1px solid #B9DFDA;border-top:none;border-radius:0 0 10px 10px;text-align:center"><a href="https://apify.com/getascraper/india-job-inventory-feed/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a></td>
</tr>
</table>

### ❓ FAQ

##### Does this combine source listings into one record?

No. Each Apna, CutShort, Internshala, Instahyre, Wellfound, and Hirist source member keeps a distinct `listingKey`, so similar records remain traceable to their original source.

##### भारत jobs feed कैसे काम करता है?

Choose sources and a scope, then run the Actor. It returns canonical rows with source member IDs, lifecycle information, links, and reliability flags.

##### When can a listing be marked closed?

Only when closure detection is enabled and its strict source conditions are satisfied. Closure detection is off by default, and CutShort cannot close in this version.

##### Do the filters work across every board?

Yes. Keyword, location, company, excluded-word, and remote-only filters are applied to every selected board. Boards also receive their own native filters where available. If a board does not publish an employer or remote signal, that record cannot pass a matching filter that requires it.

##### Should I request full job details?

Request full details when you need descriptions, skills, salary, or application context. It can take longer and use more platform compute on some boards, while other boards already include most details in their listing response.

##### Is the XML an official Adzuna feed?

No. The XML uses an Adzuna-shaped layout for downstream mapping. It is not an official Adzuna integration or a promise of compatibility.

### 🔗 Other actors

- [💼 Apna.co Jobs Scraper: India Blue & Grey Collar Listings](https://apify.com/getascraper/apna-co-scraper) ↗: Collect public Apna.co job listings.
- [CutShort Jobs Scraper: India Tech Salaries](https://apify.com/getascraper/cutshort-scraper) ↗: Collect CutShort roles and source-published salary data.
- [🎓 Internshala Scraper: Jobs & Internship Monitor](https://apify.com/getascraper/internshala-scraper) ↗: Track Internshala jobs and internships.
- [💼 Instahyre Jobs Scraper: India tech jobs & hiring monitor](https://apify.com/getascraper/instahyre-jobs-scraper) ↗: Track Instahyre technology roles and source-published hiring data.
- [🇨🇳 51job Scraper 前程无忧: China jobs, salaries and hiring data](https://apify.com/getascraper/51job-scraper) ↗: Collect China job listings and source-published hiring data.

# Actor input Schema

## `sources` (type: `array`):

Choose the job boards to search.

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

Enter a job title, skill, or search term, such as software engineer or Python.

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

Add cities or regions, or leave this empty to use all available locations.

## `companyNames` (type: `array`):

Keep listings whose published company name contains any value you enter. Leave empty to include every company.

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

Remove listings containing any value in the public title, company, location, skills, work arrangement, or description when details are included.

## `remoteOnly` (type: `boolean`):

Keep only listings that the job board explicitly marks as remote, work from home, WFH, or work from anywhere. Listings without that signal are excluded.

## `internshalaMode` (type: `string`):

Choose whether Internshala should return jobs or internships.

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

Include descriptions, skills, salary, and company information when published by the job board.

## `outputMode` (type: `string`):

Choose every matching listing, or only listings that are new or changed since the previous run.

## `maxItemsPerSource` (type: `integer`):

Maximum jobs to collect from each selected board. Higher values return more data and may take longer.

## `maxPagesPerSource` (type: `integer`):

How many result pages to check on supported boards. More pages can find more jobs and may take longer.

## Actor input object example

```json
{
  "sources": [
    "apna",
    "cutshort",
    "internshala",
    "instahyre",
    "wellfound",
    "hirist"
  ],
  "keyword": "",
  "locations": [],
  "companyNames": [],
  "excludeKeywords": [],
  "remoteOnly": false,
  "internshalaMode": "jobs",
  "includeDetails": true,
  "outputMode": "all",
  "maxItemsPerSource": 100,
  "maxPagesPerSource": 5
}
```

# Actor output Schema

## `canonicalDataset` (type: `string`):

No description

## `runHealth` (type: `string`):

No description

## `exportManifest` (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 = {
    "sources": [
        "apna",
        "cutshort",
        "internshala",
        "instahyre",
        "wellfound",
        "hirist"
    ],
    "keyword": "",
    "locations": [],
    "companyNames": [],
    "excludeKeywords": [],
    "remoteOnly": false,
    "internshalaMode": "jobs",
    "includeDetails": true,
    "outputMode": "all",
    "maxItemsPerSource": 100,
    "maxPagesPerSource": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/india-job-inventory-feed").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 = {
    "sources": [
        "apna",
        "cutshort",
        "internshala",
        "instahyre",
        "wellfound",
        "hirist",
    ],
    "keyword": "",
    "locations": [],
    "companyNames": [],
    "excludeKeywords": [],
    "remoteOnly": False,
    "internshalaMode": "jobs",
    "includeDetails": True,
    "outputMode": "all",
    "maxItemsPerSource": 100,
    "maxPagesPerSource": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/india-job-inventory-feed").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 '{
  "sources": [
    "apna",
    "cutshort",
    "internshala",
    "instahyre",
    "wellfound",
    "hirist"
  ],
  "keyword": "",
  "locations": [],
  "companyNames": [],
  "excludeKeywords": [],
  "remoteOnly": false,
  "internshalaMode": "jobs",
  "includeDetails": true,
  "outputMode": "all",
  "maxItemsPerSource": 100,
  "maxPagesPerSource": 5
}' |
apify call getascraper/india-job-inventory-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/india-job-inventory-feed"
        }
    }
}

```

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/8hG15V7QtjKUpwAt3/builds/GOOjXbEpg8Fhj4Wrq/openapi.json
