# India Tech Jobs Scraper – Greenhouse, Lever & Ashby Careers (`beginthings/india-tech-jobs-scraper`) Actor

Scrape India-based job openings straight from company career pages on Greenhouse, Lever and Ashby. 30 top hirers (Paytm, Meesho, CRED, Groww, Databricks, Stripe, Okta...) built in, or add any company. Filter by city (Bengaluru, Pune, Hyderabad, NCR), keywords and date. Fresh, official, no login.

- **URL**: https://apify.com/beginthings/india-tech-jobs-scraper.md
- **Developed by:** [Begin Things](https://apify.com/beginthings) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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

## India Tech Jobs Scraper – Greenhouse, Lever & Ashby Careers

Get **fresh India job openings straight from company career pages**: Paytm, Meesho, CRED, Groww, Zeta, InMobi, Sarvam AI, Databricks, Okta, MongoDB, Zscaler, Stripe, GitLab, OpenAI and 15+ more, in one run. Filter by **city (Bengaluru, Hyderabad, Pune, Mumbai, Chennai, Delhi NCR)**, keywords, department and posting date. You can also add **any other company** that hires through Greenhouse, Lever or Ashby.

No login, no proxies, no browser. The Actor reads the official public job-board feeds that these ATS platforms publish for career sites, so the data is accurate, current and fast to get. A typical run across 30 companies finishes in **about 10 seconds**.

### What can this India jobs scraper do?

- 🇮🇳 **India-only filter.** Detects Indian locations from the job location, office list, state names and country code, and normalises cities (Bangalore → Bengaluru, Gurgaon/Noida → Delhi NCR).
- 🏢 **30 top India hirers built in**, or add your own as `lever:meesho`, `greenhouse:stripe`, `ashby:sarvam`, a bare slug (`groww`, with the ATS detected for you) or a careers URL (`https://jobs.lever.co/cred`).
- 🔎 **Filters:** cities, title keywords, excluded keywords, departments, posted within N days, remote roles open to India/APAC.
- 💰 **Salary** where the company publishes it (Ashby and Lever salary ranges).
- 📝 **Full job descriptions** (plain text and HTML) when you turn them on.
- ⚡ **Runs in seconds**, so you can schedule it daily for job alerts, recruiting intelligence or a job board.

### Who uses it?

- **Job seekers & communities:** daily alerts for "Backend Engineer in Bengaluru" across top startups.
- **Recruiters & staffing agencies:** see who is hiring for which roles in India, and where.
- **Job boards & newsletters:** a clean feed of fresh, direct-apply India tech jobs.
- **Market & salary research:** track hiring trends by company, city and department.

### How to use it

1. Click **Try for free**.
2. Keep **Include built-in list** on, or add companies under **Extra companies**.
3. Optionally set **Cities** (e.g. `Bengaluru`, `remote`) and **Title keywords** (e.g. `engineer`, `data`).
4. Click **Start**, then download the results as **JSON, CSV, Excel** or use the API.

#### Example input

```json
{
    "useDefaultCompanies": true,
    "companies": ["lever:meesho", "https://jobs.lever.co/cred"],
    "cities": ["Bengaluru", "remote"],
    "keywords": ["engineer", "developer", "data"],
    "excludeKeywords": ["intern"],
    "postedWithinDays": 30,
    "includeDescription": false,
    "maxItems": 500
}
```

#### Example output

```json
{
    "title": "Senior Software Engineer - Backend",
    "company": "Meesho",
    "location": "Bangalore, Karnataka",
    "allLocations": ["Bangalore, Karnataka"],
    "indianCities": ["Bengaluru"],
    "isIndia": true,
    "isRemote": false,
    "workplaceType": "onsite",
    "department": "Technology",
    "team": "Engineering",
    "employmentType": "Full Time Employee",
    "salary": null,
    "postedAt": "2026-10-12T09:31:00.000Z",
    "jobUrl": "https://jobs.lever.co/meesho/…",
    "applyUrl": "https://jobs.lever.co/meesho/…/apply",
    "ats": "lever",
    "boardSlug": "meesho",
    "jobId": "…",
    "scrapedAt": "2026-10-24T14:51:15.395Z"
}
```

A per-company summary (jobs found / matched) is saved in the key-value store as `SUMMARY`.

### How much does it cost?

You pay **per job returned**. Filtering happens before you are charged, so you only pay for jobs that match. Set **Max results** to cap the cost of a run. 1,000 India jobs costs about the same as a cup of chai. See the Pricing tab for exact numbers.

### How do I find a company's slug?

Open the company's careers page and click a job. If the URL looks like:

- `job-boards.greenhouse.io/<slug>/…` → `greenhouse:<slug>`
- `jobs.lever.co/<slug>/…` → `lever:<slug>`
- `jobs.ashbyhq.com/<slug>/…` → `ashby:<slug>`

Or just paste the URL into **Extra companies**.

### FAQ

**Is it legal?** The Actor only reads public job postings from the official public job-board APIs that Greenhouse, Lever and Ashby provide for embedding jobs on career sites. It collects no personal data and needs no login. You are still responsible for how you use the data.

**Why not Naukri or LinkedIn?** Many job seekers want direct-apply jobs from the company's own career page. They are fresher, have no duplicates and no recruiter spam. Use this Actor alongside a Naukri or LinkedIn scraper for full coverage.

**A company returned 0 jobs?** It may not use Greenhouse, Lever or Ashby, or it may use a different slug. Check the `SUMMARY` record and the run log.

**Need another ATS (Workday, SmartRecruiters, Darwinbox, Keka) or a custom feed?** Open an issue on the Issues tab and we will add it.

# Actor input Schema

## `useDefaultCompanies` (type: `boolean`):

Scan a curated list of companies that actively post India jobs on Greenhouse, Lever or Ashby (Paytm, Meesho, CRED, Zeta, Groww, InMobi, Sarvam AI, Databricks, Okta, MongoDB, Zscaler, Stripe, GitLab, OpenAI and more).

## `companies` (type: `array`):

Add any company. Use 'ats:slug' (e.g. 'lever:meesho', 'greenhouse:stripe', 'ashby:sarvam'), a bare slug ('groww' — we auto-detect the ATS), or a careers URL (e.g. https://jobs.lever.co/cred).

## `indiaOnly` (type: `boolean`):

Keep only openings located in India (detected from location, offices and country code). Turn off to get every job on the boards.

## `includeRemoteIndia` (type: `boolean`):

Also keep remote roles tagged India, APAC or Asia.

## `cities` (type: `array`):

Only keep jobs in these cities, e.g. Bengaluru, Hyderabad, Pune, Mumbai, Chennai, Delhi NCR, Gurugram, Noida. Add 'remote' to also keep remote roles. Leave empty for all of India.

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

Keep a job if its title, department or team contains any of these words, e.g. 'engineer', 'data', 'product manager', 'sales'. Case-insensitive.

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

Drop jobs whose title contains any of these words, e.g. 'intern', 'principal', 'director'.

## `departments` (type: `array`):

Only keep jobs whose department or team contains one of these, e.g. 'Engineering', 'Sales'.

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

Only keep jobs first published (or updated) in the last N days. 0 = no date filter.

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

Add the full job description as plain text and HTML. Makes results larger.

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

Maximum number of jobs to return (you are charged per result).

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

How many company boards to fetch in parallel.

## Actor input object example

```json
{
  "useDefaultCompanies": true,
  "companies": [
    "lever:meesho",
    "greenhouse:groww"
  ],
  "indiaOnly": true,
  "includeRemoteIndia": true,
  "postedWithinDays": 0,
  "includeDescription": false,
  "maxItems": 1000,
  "maxConcurrency": 8
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "companies": [
        "lever:meesho",
        "greenhouse:groww"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("beginthings/india-tech-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 = { "companies": [
        "lever:meesho",
        "greenhouse:groww",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("beginthings/india-tech-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 '{
  "companies": [
    "lever:meesho",
    "greenhouse:groww"
  ]
}' |
apify call beginthings/india-tech-jobs-scraper --silent --output-dataset

```

## MCP server setup

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