# Naukrigulf Jobs Scraper (`epicscrapers/naukrigulf-jobs-scraper`) Actor

\[⭐$0.8/1k] Scrape NaukriGulf.com - the leading job portal for UAE, Saudi, Qatar, Kuwait, Bahrain and Oman. Search by keyword, location, experience and freshness. Extract titles, company details, descriptions, industry type, functional area, posted dates and more. Up to 10,000 results.

- **URL**: https://apify.com/epicscrapers/naukrigulf-jobs-scraper.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** Lead generation, Jobs, Automation
- **Stats:** 121 total users, 39 monthly users, 98.6% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.80 / 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/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

## NaukriGulf Jobs Scraper ⭐

![NaukriGulf Jobs Scraper Banner](https://raw.githubusercontent.com/jwlben11/hosted-images/c72def4a4aaed9f912bc493106a19e694806bd02/naukrigulf-banner.svg)

**The richest job data from the Gulf's #1 hiring platform — from $0.80 per 1,000 results.**

Search NaukriGulf.com by keyword, location, experience, and freshness. Get back 29 structured fields per job: full descriptions in both HTML and clean text, company profiles, industry and functional area, salary hints, sponsorship flags, and more. Up to 10,000 results per run. No login. No API key.

***

### What Makes This Different

Most NaukriGulf scrapers give you a job title, a company name, and a wall of raw HTML. This one goes further:

- **Full descriptions in two formats** — raw HTML and clean plain text, ready for parsing or display without extra processing
- **Complete company profiles** — the full employer description, not just the company name
- **Parsed industry & functional area** — returned as clean string arrays, not buried in markup
- **Listing-type flags** — know instantly whether a job is sponsored, easy-apply, or posted by a top employer
- **29 fields per job** — job ID, location, experience range, vacancies, logo URL, posted timestamp, consultant flag, and more

***

### What You Can Build With It

#### Recruitment Intelligence

Track which companies are scaling across UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, and Oman. Identify hiring surges by monitoring weekly runs. Spot which industries are expanding and where — before your competitors do.

#### Salary Benchmarking

Gulf job descriptions frequently include compensation details, housing allowances, and transport benefits. The clean-text description field makes it straightforward to extract and compare packages across cities, roles, and seniority levels.

#### Skill & Talent Demand Analysis

Surface trending skills, certifications, and qualifications across the GCC. Track demand for specific technologies, language requirements, and industry expertise — and align your recruiting or training strategy accordingly.

#### Market Entry & Competitive Analysis

Understand the hiring landscape before opening a new regional office. Identify where talent concentrations exist, which channels employers prefer, and what your competitors are hiring for — all from a single dataset.

***

### The Data

Every job returns **29 structured fields**:

| Field | Description | Example |
|---|---|---|
| `jobId` | Unique job identifier | `190526000214` |
| `title` | Job title | `Python Developer` |
| `company` | Hiring company name | `TASC Outsourcing` |
| `companyId` | Unique company identifier | `23461` |
| `companySlug` | URL-friendly company ID | `tasc-outsourcing-jobs-cid-77310` |
| `companyUrl` | Company profile URL | `https://www.naukrigulf.com/tasc-outsourcing-jobs-cid-77310` |
| `companyType` | Employer type | `Consultant` |
| `companyProfile` | Full company description | `As TASC Outsourcing, we delivered...` |
| `logoUrl` | Company logo image URL | `https://media.naukrigulf.com/logo.png` |
| `location` | City and country | `Abu Dhabi - United Arab Emirates (UAE)` |
| `experienceMin` | Minimum years required | `8` |
| `experienceMax` | Maximum years required | `9` |
| `descriptionHtml` | Full description in raw HTML | `<p>About the Role:</p><ul>...` |
| `description` | Full description in clean text | `About the Role:\n- Design and develop...` |
| `jobUrl` | Relative path to the job page | `python-developer-jobs-in-abu-dhabi...` |
| `url` | Full job listing URL | `https://www.naukrigulf.com/python-developer...` |
| `postedDate` | UNIX timestamp of posting | `1779163200` |
| `vacancies` | Number of open positions | `1` |
| `isEasyApply` | Supports one-click apply | `false` |
| `isSponsored` | Sponsored / paid listing | `false` |
| `isTopEmployer` | Company is a top employer | `false` |
| `isConfidentialCompany` | Company identity is hidden | `false` |
| `industryType` | Industry categories | `["Other"]` |
| `functionalArea` | Functional area / department | `["Other"]` |
| `keywords` | Search query used | `Python Developer` |
| `searchLocation` | Location filter used | `UAE` |
| `isConsultant` | Posted by a recruitment agency | `true` |
| `jobSource` | Origin of the listing | `TAG` |
| `scrapedAt` | ISO 8601 scrape timestamp | `2026-06-15T17:26:03.233Z` |

***

### Input

| Parameter | Required | Description |
|---|---|---|
| `keywords` | ✅ | Job title, skill, or company name |
| `location` | ❌ | City or country (e.g. `UAE`, `Dubai`, `Riyadh`) |
| `experience` | ❌ | Minimum years of experience (e.g. `3`) |
| `freshness` | ❌ | Days since posting: `1`, `3`, `7`, `15`, `30`, or `60` |
| `clusterCountry` | ❌ | One or more countries (UAE, Saudi Arabia, Qatar, etc.) |
| `maxResults` | ❌ | Max jobs to return — up to 10,000 (default: `50`) |
| `proxy` | ❌ | Optional Apify proxy configuration |

#### Example

```json
{
  "keywords": "Python Developer",
  "location": "UAE",
  "experience": "3",
  "freshness": "7",
  "maxResults": 100
}
```

```json
{
  "jobId": "190526000214",
  "title": "Python Developer",
  "company": "TASC Outsourcing",
  "location": "Abu Dhabi - United Arab Emirates (UAE)",
  "experienceMin": 8,
  "experienceMax": 9,
  "description": "About the Role:\nWe are seeking a seasoned Python Developer...",
  "descriptionHtml": "<p>About the Role:</p>\n<p>We are seeking a seasoned Python Developer...</p>",
  "url": "https://www.naukrigulf.com/python-developer-jobs-in-abu-dhabi-uae-in-tasc-outsourcing-8-to-9-years-n-cd-23461-jid-190526000214",
  "postedDate": 1779163200,
  "isEasyApply": false,
  "isSponsored": false,
  "industryType": ["Other"],
  "functionalArea": ["Other"],
  "vacancies": 1,
  "companyType": "Consultant",
  "companyProfile": "As TASC Outsourcing, we delivered innovative, effective hiring solutions...",
  "logoUrl": null,
  "scrapedAt": "2026-06-15T17:26:03.233Z"
}
```

***

### Pricing

**From $0.80 per 1,000 results.** You're charged only for items pushed to the dataset — no minimums, no hidden fees.

| Volume | Estimated Cost |
|---|---|
| 500 jobs | ~$0.40 |
| 2,000 jobs | ~$1.60 |
| 10,000 jobs | ~$8.00 |

Lightweight and efficient — typically 2–3 compute units per 1,000 jobs.

***

### Coverage

All MENA countries on NaukriGulf.com: **UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Oman, Bahrain, Morocco, Jordan, Lebanon, Algeria, Tunisia, and Libya.** Use the `clusterCountry` multi-select to filter by one or more countries, or `location` to search by city. Leave both empty for all regions.

Export in any format from Apify Storage — JSON, JSONL, CSV, Excel, HTML, or XML — or pull data directly via the Apify API.

***

### How It Works

The scraper runs in two phases. First, it submits your query and paginates through all matching results, collecting job IDs and metadata. Then it fetches full details — descriptions, company profiles, industry data — for each job concurrently.

Rate limits and server errors are handled automatically with retries and exponential backoff. Removed listings (404s) are skipped gracefully. Every job is deduplicated by `jobId`, and a `scrapedAt` timestamp records exactly when each record was collected.

***

### FAQ

**Do I need a login or API key?**
No. The scraper accesses only publicly available data on NaukriGulf.com — no account, cookies, or credentials required.

**Can I run this on a schedule?**
Yes. Schedule weekly or daily runs on Apify to maintain a continuously fresh dataset. Use the `freshness` filter to pull only new listings since your last run.

**How many results can I get per run?**
Up to 10,000. Set `maxResults` to any value between 1 and 10,000. The scraper paginates automatically until it hits your cap or exhausts available listings.

**What if I only want jobs from one country?**
Use the `clusterCountry` array to select one or more GCC countries, or set the `location` field to a specific city like `Dubai` or `Riyadh`.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by NaukriGulf.com, Info Edge (India) Limited, or any of their subsidiaries.** All trademarks are the property of their respective owners. This Actor accesses only publicly available data. You are solely responsible for ensuring your use complies with the site's Terms of Service and applicable laws.

# Actor input Schema

## `directUrls` (type: `array`):

Paste one or more naukrigulf.com search URLs. Each URL is searched as-is with its own filters built into the URL — shared filters below <b>do not</b> apply.<br><br>Example: <code>https://www.naukrigulf.com/accountant-jobs?country=14\&citysrp=14.5</code>

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

Job titles, skills, or company names to search. Each keyword is searched using the shared filters below (location, experience, freshness, country, etc.).

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

City or country to narrow keyword results. Examples: <code>Dubai</code>, <code>Abu Dhabi</code>, <code>Saudi Arabia</code>, <code>UAE</code>.

## `experience` (type: `string`):

Minimum years of experience required. Enter a number like <code>3</code> or <code>5</code>.

## `freshness` (type: `string`):

Only show jobs posted within this many days.

## `clusterCountry` (type: `array`):

Restrict keyword searches to one or more countries. Leave empty for all countries.

## `clusterCity` (type: `string`):

City cluster ID to narrow keyword results (e.g. <code>14.5</code> for Riyadh, <code>17.49</code> for Dubai). Combine with <b>Countries</b> above.

## `clusterInd` (type: `string`):

Industry cluster IDs, comma-separated (e.g. <code>25,10</code> for Accounting + Banking).

## `companyId` (type: `string`):

Filter keyword results to a specific company by its ID.

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

Maximum jobs per URL and per keyword. For example, 2 URLs + 3 keywords with <code>50</code> max = up to <b>250</b> jobs total.

## `proxy` (type: `object`):

Optional proxy settings for geo-targeted scraping. Default uses UAE residential proxies.

## Actor input object example

```json
{
  "directUrls": [
    "https://www.naukrigulf.com/accountant-jobs?country=14&citysrp=14.5"
  ],
  "keywords": [
    "Java Developer",
    "SEO Specialist"
  ],
  "location": "Dubai",
  "experience": "3",
  "maxResults": 50,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AE"
  }
}
```

# Actor output Schema

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

Link to the default dataset containing all scraped job listings.

# 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": [
        "Python Developer"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/naukrigulf-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": ["Python Developer"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/naukrigulf-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "Python Developer"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AE"
  }
}' |
apify call epicscrapers/naukrigulf-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=epicscrapers/naukrigulf-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bpNQG2BbydWWGPI5y/builds/iQ6Ekg6tvtap23qSx/openapi.json
