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

The Naukrigulf Jobs Scraper extracts Gulf job listings from Naukrigulf.com for the UAE, Saudi Arabia, Qatar and more, capturing titles, companies, experience ranges, skills, full descriptions, posting dates and original employer salaries — ideal for recruiting and salary benchmarking.

- **URL**: https://apify.com/piotrv1001/naukrigulf-jobs-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 job listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🚀 Naukrigulf Jobs Scraper

Easily extract job postings from Naukrigulf.com, one of the largest job boards in the Gulf. The **Naukrigulf Jobs Scraper** turns a keyword and a location, or any Naukrigulf search URL, into structured job data for the UAE, Saudi Arabia, Qatar, Kuwait, Oman and Bahrain. You get **the employer's original salary, experience ranges, full descriptions and posting dates**.

### ✨ Features

- 💼 **Complete Job Data**: Title, company, location, experience range (min/max years), skills, job highlights, AI summary, full description, number of vacancies, posting date and job URL for every result.
- 💰 **Original Salary, Not Converted**: The salary range and currency exactly as the employer posted it (for example `SAR 3,200–4,500`). Hidden salaries are flagged with `salaryHidden: true` and left empty, never shown as zero or guessed.
- 📝 **Full Job Details**: Employment type, on-site or remote, industry, job function, required education, nationality and gender preference, desired candidate profile and the exact original posting date.
- 📍 **Strict Location Check**: An unknown place is rejected with a clear message. It is never quietly replaced with a search of the whole Gulf.
- 🕵️ **Confidential Employers Kept Honest**: Jobs posted as "Confidential Company" are flagged, with no guessed employer and no merging.
- 🔍 **Search or Paste URLs**: Use keyword + location, or paste Naukrigulf search pages (`…/accountant-jobs-in-dubai`) and single job pages.
- 🎯 **Filters**: Years of experience (jobs whose range includes it) and posting date (last 1, 3, 7, 15, 30 or 60 days).
- 🔒 **No Personal Data**: Recruiter names, emails and phone numbers are not collected and are removed from descriptions.

### 🛠️ How It Works

1. **Describe the search**: Enter a job title or keyword and a Gulf city or country. Or paste Naukrigulf URLs.
2. **Choose the depth**: Keep it fast with job listings only, or turn on **Scrape full job details** to get salaries, employment type, industry, education and more.
3. **Run the Scraper**: Download the jobs as JSON, CSV or Excel, or pull them through the API.

### ⚙️ Input

| Field                       | Description                                                                                               |
| --------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Job title or keyword**    | What to search for, e.g. `accountant`, `software engineer`, `nurse`. Empty means all jobs.                |
| **Location**                | A Gulf city or country, e.g. `Dubai`, `Riyadh`, `Doha`, `Saudi Arabia`, `UAE`. Empty means all locations. |
| **Naukrigulf URLs**         | Optional. Search pages or single job pages. Job pages always include full details.                        |
| **Years of experience**     | Only jobs whose experience range includes this number.                                                    |
| **Posted within**           | Only jobs posted in the last 1, 3, 7, 15, 30 or 60 days.                                                  |
| **Scrape full job details** | Adds the original salary, employment type, industry, job function, education and candidate profile.       |
| **Max results**             | Maximum number of jobs to save (default 50).                                                              |

### 💰 Pricing

Pay only for the jobs you get, with no monthly fee and no extra platform usage costs:

| Event                                                                          | Price    | Per 1,000 |
| ------------------------------------------------------------------------------ | -------- | --------- |
| **Actor start**: once per run, per GB of memory                                | $0.00005 | –         |
| **Job listing**: a job saved from search results                               | $0.001   | $1.00     |
| **Job detail**: a job saved with full details (charged instead of the listing) | $0.0015  | $1.50     |

Jobs that no longer exist are not charged. If full details can't be loaded for a job, it is saved and charged as a plain listing, and `detailStatus` says why.

### 📊 Sample Output Data

One job with **Scrape full job details** enabled (description and profile shortened):

```json
[
    {
        "id": "130926000235",
        "url": "https://www.naukrigulf.com/senior-accountant-jobs-in-doha-qatar-in-integral-uniforms-4-to-6-years-n-cd-370483-jid-130926000235",
        "title": "Senior Accountant",
        "companyName": "Integral Uniforms",
        "companyId": "370483",
        "companyUrl": "https://www.naukrigulf.com/integral-uniforms-careers-cid-370483",
        "isConfidentialCompany": false,
        "location": "Doha - Qatar",
        "experienceMinYears": 4,
        "experienceMaxYears": 6,
        "vacancies": 1,
        "skills": ["Audit", "Financial Reporting", "Internal Controls", "Senior Bookkeeper"],
        "highlights": [
            "Prepare monthly management reports and IFRS financial statements",
            "Reconcile bank, customer, supplier, and inter-company accounts"
        ],
        "summary": "Manage finance functions including accounting, reporting, costing, cash flow, and compliance, requiring strong accounting skills and experience in manufacturing.",
        "description": "About the Role\nWe are looking for a hands-on Senior Accountant to run our finance function end to end…",
        "latestPostedAt": "2026-09-13T05:39:27.000Z",
        "isEasyApply": true,
        "isConsultant": false,
        "jobSource": "POSTED",
        "companyType": "Corporate",
        "employmentType": "Full-time",
        "workplaceType": "On-site",
        "industry": "Textiles  Clothing / Apparels / Fashion / Accessories",
        "jobFunction": "Accounts / Taxation / Audit / Company Secretary",
        "education": "Bachelor of Commerce, Master of Commerce",
        "nationality": "Any Nationality",
        "gender": "Any",
        "desiredCandidateProfile": "Requirements\nEssential\n\n- Bachelor's degree in Accounting or Finance…",
        "salaryHidden": false,
        "salaryMin": 4000,
        "salaryMax": 5000,
        "salaryCurrency": "QAR",
        "salaryPeriod": "MONTH",
        "salaryNote": null,
        "postedAt": "2026-09-13T05:39:27.000Z",
        "isExpired": false,
        "detailStatus": "ok",
        "scrapedAt": "2026-09-23T06:04:01.103Z"
    }
]
```

### ❓ FAQ

**Why is the salary empty for most jobs?** Most Gulf employers hide the salary. Those jobs have `salaryHidden: true`, and the salary fields stay empty rather than showing a guess.

**Why don't the salaries match what Naukrigulf shows me?** Naukrigulf shows salaries converted into the visitor's currency and in broad brackets. This scraper returns the amount and currency the employer actually posted.

**Why was my location rejected?** Naukrigulf ignores places it doesn't know and searches everywhere instead. The scraper stops you before that happens. Use a Gulf city or country as written on Naukrigulf, e.g. `Abu Dhabi`, `Jeddah`, `Kuwait`.

**Which URLs can I paste?** Keyword and location search pages such as `https://www.naukrigulf.com/accountant-jobs-in-dubai`, `…/jobs-in-riyadh` or `…/nurse-jobs`, and single job pages. Other pages, such as company pages, are skipped and listed in the `RUN_SUMMARY` record.

**Is there a limit per search?** Naukrigulf serves up to 45,000 results per search. Split larger searches by location or keyword.

Hire across the Gulf with better data from the **Naukrigulf Jobs Scraper**. 🚀

# Actor input Schema

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

What to search for, e.g. `accountant`, `software engineer`, `civil engineer`, `nurse`. Leave empty to get every job in the location.

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

A Gulf city or country, e.g. `Dubai`, `Abu Dhabi`, `Riyadh`, `Jeddah`, `Doha`, `Kuwait`, `Saudi Arabia`, `UAE`. Unknown places are rejected instead of silently searching everywhere. Leave empty to search all locations.

## `startUrls` (type: `array`):

Search pages such as `https://www.naukrigulf.com/accountant-jobs-in-dubai` or single job pages. Other page types are skipped and listed in the run summary.

## `experienceYears` (type: `integer`):

Only jobs whose experience range includes this many years.

## `postedWithinDays` (type: `string`):

Only jobs posted recently.

## `scrapeDetails` (type: `boolean`):

Open every job and add the employer's original salary range and currency (or a hidden-salary flag), employment type, workplace type, industry, job function, education, nationality, desired candidate profile and exact posting date. Charged as a job detail instead of a job listing. Job page URLs always include full details.

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

Maximum number of jobs to save.

## `proxyConfiguration` (type: `object`):

Proxy used to reach naukrigulf.com. The default works for most runs.

## Actor input object example

```json
{
  "keywords": "accountant",
  "location": "Saudi Arabia",
  "postedWithinDays": "any",
  "scrapeDetails": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "keywords": "accountant",
    "location": "Saudi Arabia",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/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": "accountant",
    "location": "Saudi Arabia",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/naukrigulf-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": "accountant",
  "location": "Saudi Arabia",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/naukrigulf-jobs-scraper --silent --output-dataset

```

## MCP server setup

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