# MeroJob Scraper — Nepal Jobs for AI Agents & Recruiters (`fervent_bus/merojob-scraper`) Actor

Extract job data from MeroJob.com (Nepal's largest job board): titles, salaries, skills, deadlines. Filter by location, keywords, level. For AI recruitment tools, aggregators, research. Works with Claude, ChatGPT & AI agents via Apify MCP. Zero-competition Nepal source.

- **URL**: https://apify.com/fervent\_bus/merojob-scraper.md
- **Developed by:** [Archit Khurana](https://apify.com/fervent_bus) (community)
- **Categories:** Jobs, AI, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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?

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

## 🇳🇵 MeroJob Scraper - Nepal Job Board API

[![Apify](https://img.shields.io/badge/Apify-Actor-00d4aa?style=flat-square\&logo=apify)](https://apify.com)
[![Python](https://img.shields.io/badge/Python-3.11-blue?style=flat-square\&logo=python)](https://python.org)
[![License](https://img.shields.io/badge/License-Apache%202.0-green?style=flat-square)](LICENSE)

Extract structured job listings from **[MeroJob.com](https://merojob.com)**, Nepal's leading job portal with over 340K monthly visitors. Fast, reliable, and AI-agent ready.

***

### 🎯 Features

✅ **Official API Integration** - Uses MeroJob's public API for blazing-fast, reliable extraction\
✅ **Rich Structured Data** - Extract 15+ fields per job including salary, skills, company details\
✅ **Smart Filtering** - Filter by keywords, location, category, job level, salary range\
✅ **Pagination Support** - Extract up to 10,000+ jobs with automatic pagination\
✅ **Resume-Ready** - Handles interruptions gracefully and resumes where it left off\
✅ **Zero Maintenance** - API-based extraction means no breaking changes from HTML updates

***

### 📊 Output Schema

Each job listing includes:

| Field | Type | Description |
|-------|------|-------------|
| `jobTitle` | string | Job position title |
| `company` | string | Hiring company/organization name |
| `location` | string | Job location (city, district, province) |
| `salary` | object | Salary range (min, max, currency, unit) |
| `deadline` | string | Application deadline (ISO 8601) |
| `jobLevel` | string | Entry/Mid/Senior level |
| `jobType` | string | Full Time / Part Time / Contract |
| `industry` | string | Industry/sector |
| `skills` | array | Required skills |
| `categories` | array | Job categories/tags |
| `jobUrl` | string | Direct link to job posting |
| `postedAt` | string | Publication date (ISO 8601) |
| `description` | string | Full job description (HTML) |
| `education` | string | Required education level |
| `experience` | string | Experience requirement |

***

### 🚀 Quick Start

#### Basic Run (Latest 100 Jobs)

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

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

const run = await client.actor("YOUR_USERNAME/merojob-scraper").call({
  maxResults: 100
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} jobs from MeroJob`);
```

#### Advanced Filtering

```javascript
await client.actor("YOUR_USERNAME/merojob-scraper").call({
  keywords: "software engineer",
  location: "Kathmandu",
  jobLevel: "Mid Level",
  minSalary: 50000,
  maxResults: 500
});
```

***

### 🔧 Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keywords` | string | `""` | Search jobs by title/description keywords |
| `location` | string | `""` | Filter by city/district/province |
| `category` | string | `""` | Job category (IT, Marketing, Finance, etc.) |
| `jobLevel` | string | `""` | Entry Level / Mid Level / Senior Level |
| `minSalary` | number | `0` | Minimum salary (NPR/month) |
| `maxSalary` | number | `999999999` | Maximum salary (NPR/month) |
| `maxResults` | number | `100` | Maximum jobs to extract (1-10000) |

***

### 💡 Use Cases

#### 📈 **Market Research**

Analyze salary trends across industries and experience levels in Nepal's job market.

#### 🤖 **AI Job Matching**

Feed structured data to LLMs for personalized job recommendations.

#### 📧 **Job Alerts**

Build automated alerting systems for new positions matching criteria.

#### 📊 **Recruitment Analytics**

Track hiring trends, skill demands, and employer activity.

***

### 🤖 AI Agent Integration

This actor is **fully compatible with Claude, ChatGPT, and other AI agents** via the Apify MCP (Model Context Protocol):

```
Use the Apify MCP to run actor YOUR_USERNAME/merojob-scraper with keywords "data scientist" in Kathmandu
```

Perfect for:

- Claude Desktop + Apify MCP integration
- ChatGPT Actions with Apify
- Custom AI workflows via API

***

### 📝 Example Output

```json
{
  "jobTitle": "Senior Software Engineer",
  "company": "Tech Innovations Pvt. Ltd.",
  "location": "Kathmandu, Bagmati Province",
  "salary": {
    "minimum": 80000,
    "maximum": 120000,
    "currency": "NRs",
    "unit": "Monthly"
  },
  "deadline": "2026-09-15T18:10:00Z",
  "jobLevel": "Senior Level",
  "jobType": "Full Time",
  "industry": "Information Technology",
  "skills": ["Python", "Django", "PostgreSQL", "AWS", "Docker"],
  "categories": ["Software Development", "Backend Engineering"],
  "jobUrl": "https://merojob.com/senior-software-engineer-456",
  "postedAt": "2026-08-15T10:30:00Z",
  "education": "Bachelor in Computer Science",
  "experience": "5+ years",
  "vacancies": 2
}
```

***

### ⚙️ Technical Details

- **Runtime**: Python 3.11 on Apify platform
- **Memory**: Runs efficiently on 1024 MB
- **Speed**: ~100 jobs/minute via API
- **Cost**: ~$0.01 per 1000 jobs (typical)
- **Maintenance**: Zero (API-based, no HTML parsing)

***

### 🛠️ Development

```bash
## Clone and install
git clone https://github.com/YOUR_USERNAME/merojob-scraper
cd merojob-scraper
pip install -r requirements.txt

## Run locally
python -m src

## Deploy to Apify
apify push
```

***

### 📄 License

Apache 2.0 - Free for commercial and personal use.

***

### 🙋 Support

- **Issues**: [GitHub Issues](https://github.com/YOUR_USERNAME/merojob-scraper/issues)
- **Apify Store**: [View on Apify](https://apify.com/YOUR_USERNAME/merojob-scraper)
- **Email**: support@example.com

***

**Compatible with Claude, ChatGPT & AI agents via Apify MCP** 🤖

# Actor input Schema

## `keywords` (type: `string`):

Search jobs by title or description (e.g., 'software engineer', 'marketing manager')

## `location` (type: `string`):

Filter by city, district, or province (e.g., 'Kathmandu', 'Pokhara', 'Lalitpur')

## `category` (type: `string`):

Filter by category (e.g., 'IT', 'Marketing', 'Finance')

## `jobLevel` (type: `string`):

Filter by experience level

## `minSalary` (type: `integer`):

Minimum monthly salary in Nepalese Rupees

## `maxSalary` (type: `integer`):

Maximum monthly salary (leave empty for no limit)

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

Maximum number of jobs to extract (1-10000)

## Actor input object example

```json
{
  "keywords": "engineer",
  "location": "",
  "category": "",
  "jobLevel": "",
  "minSalary": 0,
  "maxSalary": 999999999,
  "maxResults": 100
}
```

# Actor output Schema

## `results` (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": "engineer",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fervent_bus/merojob-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": "engineer",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("fervent_bus/merojob-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": "engineer",
  "maxResults": 100
}' |
apify call fervent_bus/merojob-scraper --silent --output-dataset

```

## MCP server setup

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