# Naukrigulf Scraper: Gulf Jobs in 12 Languages (`fayoussef/naukrigulf-scraper`) Actor

Scrape Naukrigulf.com jobs across the UAE, Saudi Arabia, Qatar, Kuwait, Bahrain and Oman. Search in Arabic, Hindi, Malayalam, Tagalog and 8 more, and read every result back in your language. Filters on what the site hides: salary, nationality and gender requirements, agency vs direct employer.

- **URL**: https://apify.com/fayoussef/naukrigulf-scraper.md
- **Developed by:** [youssef farhan](https://apify.com/fayoussef) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.96 / 1,000 job 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

## Naukrigulf Scraper: Gulf Jobs in 12 Languages

**Naukrigulf Scraper extracts job listings from naukrigulf.com across the UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman and the wider Middle East. You can search in Arabic, Hindi, Malayalam, Tagalog, Urdu and 7 more languages, and read every result back in the language you chose. It returns 40+ fields per job, including the salary, nationality requirement, gender requirement and agency-vs-direct-employer status that the job board's own search cannot filter on.**

No login. No cookies. No browser. Pure HTTP against the site's own public JSON endpoints, which is why a thousand jobs take minutes rather than hours.

***

### What makes this different from the other Naukrigulf scrapers

There are a dozen scrapers for this board. They return the same rows. Here is what this one does that they do not:

| | This Actor | Typical Naukrigulf scraper |
|---|---|---|
| Search keywords in your own language | 12 languages, 36 common Gulf roles | English only |
| Results labelled in your own language | Yes, every row, no AI cost | English only |
| Nationality requirement, parsed and grouped | Yes, plus an "open to any nationality" flag | Raw text at best, usually absent |
| Gender requirement flagged | Yes | Absent |
| Salary published vs hidden, told apart | Yes, explicit `salaryDisclosed` | Empty cell, indistinguishable from zero |
| Agency vs direct employer | Yes, `employerType` | Absent |
| Filter on facts the site hides | 10 filters applied after the full record is read | Site filters only |
| Rows removed by your filters | Free | Usually charged |
| Job detail enrichment | Always included in the per-job price | Often a second charged event |

The last two rows matter more than they look. This Actor reads the full job record for every candidate, applies your filters, and **charges only for the jobs it actually hands you**. A recent test run read 483 jobs to find the 20 that matched a strict filter set, and billed for 20.

***

### What is Naukrigulf?

Naukrigulf.com is the Gulf edition of Naukri, India's largest job board, operated by Info Edge. It carries roughly 40,000 live vacancies at any time, concentrated in the UAE (about 17,700), Saudi Arabia (7,200), Egypt (4,900), Qatar (2,000) and the rest of the GCC. It is the primary board for the Indian, Pakistani, Bangladeshi, Nepali and Filipino workforce that staffs the Gulf economy.

***

### Why does the language support matter?

Because the board's audience mostly does not read English as a first language, but the board's index is English-only. A Malayalam speaker searching `നഴ്സ്` gets zero results from a board holding hundreds of nursing vacancies.

This Actor fixes that in two directions:

**Going in**, your keyword is matched against a lexicon of 36 common Gulf roles in 12 languages and rewritten to the English term the board indexes. `محاسب`, `लेखाकार`, `comptable`, `hisabrakshak` and `akuntan` all become `accountant`. Your original wording is kept on every row as `searchKeywordAsTyped`. An unrecognised keyword is passed through untouched, so nothing is ever silently dropped.

**Coming back**, every row carries a `localized` block: the country, city, work mode, employment type, gender requirement, nationality groups, experience band, employer type and salary-disclosure status, translated, plus a glossary of the column names so a spreadsheet reads on its own. Translation is dictionary-based and offline: it costs nothing, adds no latency, needs no API key, and cannot hallucinate.

Job titles and descriptions are never machine-translated. They stay exactly as the employer wrote them.

**Supported languages:** English, العربية (Arabic), हिन्दी (Hindi), اردو (Urdu), বাংলা (Bengali), മലയാളം (Malayalam), தமிழ் (Tamil), नेपाली (Nepali), Filipino, Français (French), Русский (Russian), Bahasa Indonesia.

***

### Quick start

1. Type what you are looking for in **Job titles or keywords**, in any supported language.
2. Pick a country or city under **Where**.
3. Set **Maximum jobs**, which is also your cost ceiling.
4. Optionally pick an **Output language**.
5. Run it.

Everything else has a working default. A minimal input:

```json
{
  "searchKeywords": ["محاسب"],
  "location": "dubai",
  "maxItems": 100,
  "outputLanguage": "ar"
}
```

A recruiter's lead-generation run, keeping only direct employers who publish a salary:

```json
{
  "searchKeywords": ["civil engineer", "quantity surveyor"],
  "location": "saudi-arabia",
  "maxItems": 500,
  "datePosted": "7",
  "gccOnly": true,
  "directEmployersOnly": true,
  "salaryDisclosedOnly": true,
  "minMonthlySalaryUsd": 3000
}
```

A job seeker filtering out roles they cannot apply for:

```json
{
  "searchKeywords": ["നഴ്സ്"],
  "location": "gulf",
  "maxItems": 200,
  "outputLanguage": "ml",
  "excludeNationalityRestricted": true,
  "excludeGenderRestricted": true,
  "workModes": ["On-site"]
}
```

***

### Input

Seven fields are visible by default. Everything else is folded into collapsed sections.

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchKeywords` | list | `["accountant"]` | Job titles in any supported language. Empty means every job in the location. |
| `location` | select | `gulf` | Country or city. `gulf` covers all six GCC states. |
| `maxItems` | integer | `100` | Total jobs returned, and your cost ceiling. |
| `outputLanguage` | select | `en` | Language for the `localized` block. |
| `datePosted` | select | any | Sent to the site's own search: last 1, 3, 7, 15, 30 or 60 days. |
| `experienceLevel` | select | any | Sent to the site's own search, as one of its six bands. |
| `sortBy` | select | `date` | Newest first, or most relevant. |

**Advanced filters and fields (collapsed):** `startUrls`, `gccOnly`, `workModes`, `employmentTypes`, `minMonthlySalaryUsd`, `salaryDisclosedOnly`, `directEmployersOnly`, `excludeNationalityRestricted`, `excludeGenderRestricted`, `excludeExpired`, `maxAgeDays`, `includeDescription`, `includeHtmlDescription`, `includeRecruiterContacts`.

**Proxy (collapsed):** `proxyConfiguration`. Leave it empty. This Actor reaches Naukrigulf directly, so a proxy makes runs slower and more expensive for no benefit.

#### Which filters cost you requests?

Three depths, cheapest first:

- **`location`, `datePosted`, `experienceLevel`** are honoured by Naukrigulf's own search. They cost nothing.
- **`gccOnly` and `maxAgeDays`** are decided from the search result, before the job's detail page is read. A job they reject never costs a request.
- **Everything else** needs the full job record, because the site does not expose salary, work mode, nationality or employer type in search results at all. That is exactly why this Actor can filter on them and the site cannot.

Nothing removed by a filter is charged, at any depth.

***

### Output

One flat row per job, plus a nested `localized` block. Four ready-made table views in the dataset: **Overview**, **Salary**, **Eligibility** and **Recruiter contacts**.

```json
{
  "jobId": "280826000812",
  "title": "Sales Director, FMCG",
  "url": "https://www.naukrigulf.com/sales-director-uae-fmcg-jobs-in-dubai-...",
  "companyName": "Confidential Company",
  "employerType": "Direct employer",
  "isConsultancy": false,
  "city": "Dubai",
  "country": "United Arab Emirates (UAE)",
  "countryCode": "AE",
  "isGcc": true,
  "workMode": "On-site",
  "employmentType": "Full-time",
  "experienceMinYears": 12,
  "experienceMaxYears": 18,
  "experienceBand": "11 - 15 years",
  "vacancies": 1,
  "salaryDisclosed": true,
  "salaryMonthlyUsdMin": 8001,
  "salaryMonthlyUsdMax": 15000,
  "salaryLocalCurrency": "AED",
  "education": "Any Graduation, MBA/PG Diploma in Business Mgmt(Marketing)",
  "nationalityRequirement": "Any Arab National, Any European National, Any Nationality",
  "nationalityGroups": ["Arab Nationals", "Europeans/CIS", "Any Nationality"],
  "isNationalityRestricted": false,
  "genderRequirement": "Any",
  "isGenderRestricted": false,
  "skills": ["Distribution Management", "Revenue Growth", "Sales Strategy"],
  "industry": "Perfumery / Toiletries / Personal Care / Cosmetics",
  "functionalArea": "Sales / Business Development",
  "postedAt": "2026-08-28T11:11:49Z",
  "postedDaysAgo": 0,
  "isExpired": false,
  "expiringSoon": false,
  "isEasyApply": true,
  "isExternalPosting": false,
  "description": "Job Overview:\nWe are looking for an experienced...",
  "recruiterEmail": "hr@example.ae",
  "searchKeyword": "accountant",
  "searchKeywordAsTyped": "محاسب",
  "localized": {
    "language": "ar",
    "direction": "rtl",
    "country": "الإمارات العربية المتحدة",
    "city": "دبي",
    "workMode": "في الموقع",
    "employmentType": "دوام كامل",
    "experienceBand": "11 - 15 سنة",
    "employerType": "صاحب عمل مباشر",
    "salaryDisclosure": "الراتب معلن",
    "labels": { "salary": "الراتب", "nationality": "الجنسية" }
  }
}
```

#### A field the employer left blank is `null`, never a default

This is the single most important thing about the output. Two thirds of Gulf postings hide their salary. `salaryDisclosed: false` and `salaryMonthlyUsdMin: null` say "the employer did not publish this", which is a different fact from "this job pays nothing". Filters honour the same rule: an unknown value never counts as a match, so a search for salaries above $3,000 will never quietly hand you jobs that publish no salary at all.

***

### Pricing

Pay per event. Two events, no compute-unit charges on top.

| Event | Price | When |
|---|---|---|
| Actor start | $0.001 | Once per run |
| Job result | $0.0012 | Per job delivered to your dataset |

That is **$1.20 per 1,000 jobs**, with the full job record, the description, the derived Gulf fields and the localisation all included. Jobs your filters remove are free.

| Run | Cost |
|---|---|
| 100 jobs | $0.12 |
| 1,000 jobs | $1.20 |
| 10,000 jobs | $12.00 |
| Daily monitor, 200 new jobs a day, 30 days | $7.23 |

Higher Apify plans get a discount on the per-job event. Free-plan runs are capped at 25 jobs and one keyword, but return every field a paid run returns, so you can check the schema fits your pipeline before paying anything.

***

### Frequently asked questions

#### Do I need a Naukrigulf account or an API key?

No. Both endpoints this Actor reads are the site's own public front-end APIs, served without authentication.

#### Do I need a proxy?

No. Naukrigulf is fronted by Akamai Bot Manager, which fingerprints the TLS handshake rather than the request. This Actor uses a real Chrome TLS fingerprint, which the site answers normally from an ordinary datacenter IP. A proxy field exists as an override; leaving it empty is faster and cheaper.

#### How many jobs can I get in one run?

Up to 50,000. The board holds roughly 40,000 live vacancies in total, and deep pagination works past 10,000 results, so a full-market sweep is possible in a single run.

#### Can I monitor a market for new postings?

Yes. Set `sortBy` to newest first and `datePosted` to the last 1 or 3 days, then schedule the Actor. Runs are resumable: if the platform migrates a run mid-scrape, it continues from its checkpoint instead of paying to re-scrape what it already delivered.

#### Why does "Newest first" return jobs that do not exactly match my keyword?

Because Naukrigulf's own keyword matching is semantic: searching `driver` also matches related roles the board considers adjacent. Sorting by date discards the relevance ranking, so those adjacent matches surface. Switch `sortBy` to **Most relevant** when you want exact titles.

#### Are recruiter email addresses included?

Where the employer published contact details with the posting, yes, and you can switch them off with `includeRecruiterContacts`. You are responsible for using contact data lawfully, including under UAE and Saudi data-protection law and the GDPR where it applies.

#### Can I tell which jobs accept a one-click application?

Yes. `isEasyApply` is true when the application stays on Naukrigulf, which is the
same thing its "Easy Apply" badge means. `isExternalPosting` is the plainer fact
underneath: the posting was aggregated from elsewhere on the web or redirects on
apply, so there is no one-click application.

#### What about work mode showing as null?

Some Naukrigulf listings arrive through partner feeds rather than being posted directly, and the board itself holds no work-mode or employment-type value for them. The Actor reports that honestly as `null` rather than guessing "On-site".

***

## دليل بلغات أخرى · अन्य भाषाओं में · Sa ibang wika · Guide en français

### العربية

**كاشط وظائف Naukrigulf** يستخرج الوظائف من موقع naukrigulf.com في الإمارات والسعودية وقطر والكويت والبحرين وعُمان ومنطقة الشرق الأوسط الأوسع.

- **ابحث بالعربية.** اكتب `محاسب` أو `مهندس` أو `ممرض` وسيتم مطابقتها تلقائياً بالمصطلح الإنجليزي الذي يفهرسه الموقع.
- **اقرأ النتائج بالعربية.** كل وظيفة تحتوي على كتلة `localized` بالدولة والمدينة ونمط العمل ونوع التوظيف والجنسية المطلوبة ومستوى الخبرة، مترجمة، مع قاموس لأسماء الأعمدة.
- **حقول لا يوفرها أي كاشط آخر:** هل الراتب معلن أم مخفي، هل الوظيفة مقصورة على جنسيات محددة، هل هي مقصورة على جنس واحد، وهل المُعلن صاحب عمل مباشر أم شركة توظيف.
- **فلاتر مجانية.** الوظائف التي تستبعدها الفلاتر لا تُحتسب عليك إطلاقاً.
- **السعر:** 1.20 دولار لكل 1000 وظيفة، شاملاً الوصف الكامل وجميع الحقول.

مثال على المدخلات: `{"searchKeywords": ["محاسب"], "location": "dubai", "outputLanguage": "ar"}`

### हिन्दी

**Naukrigulf जॉब स्क्रैपर** naukrigulf.com से UAE, सऊदी अरब, क़तर, कुवैत, बहरीन और ओमान की नौकरियाँ निकालता है।

- **हिन्दी में खोजें।** `लेखाकार`, `ड्राइवर`, `नर्स` लिखिए, यह अपने आप उस अंग्रेज़ी शब्द से मिला दिया जाएगा जिसे साइट पहचानती है।
- **हिन्दी में पढ़िए।** हर नौकरी के साथ `localized` ब्लॉक आता है: देश, शहर, कार्य प्रणाली, रोज़गार का प्रकार, राष्ट्रीयता और अनुभव, सब अनुवादित, साथ में कॉलम नामों की शब्दावली।
- **वे जानकारियाँ जो साइट छिपाती है:** वेतन घोषित है या नहीं, नौकरी किसी विशेष राष्ट्रीयता तक सीमित है या नहीं, किसी एक लिंग तक सीमित है या नहीं, और नियोक्ता सीधा है या भर्ती एजेंसी।
- **फ़िल्टर मुफ़्त हैं।** फ़िल्टर से हटाई गई नौकरियों का कोई शुल्क नहीं।
- **मूल्य:** $1.20 प्रति 1,000 नौकरियाँ, पूरे विवरण सहित।

### اردو

**Naukrigulf جاب سکریپر** naukrigulf.com سے متحدہ عرب امارات، سعودی عرب، قطر، کویت، بحرین اور عمان کی ملازمتیں نکالتا ہے۔

- **اردو میں تلاش کریں۔** `اکاؤنٹنٹ`، `ڈرائیور`، `نرس` لکھیں، یہ خود بخود اُس انگریزی اصطلاح سے مل جائے گا جسے سائٹ پہچانتی ہے۔
- **اردو میں پڑھیں۔** ہر ملازمت کے ساتھ ترجمہ شدہ `localized` بلاک آتا ہے: ملک، شہر، کام کا طریقہ، ملازمت کی قسم، قومیت اور تجربہ۔
- **وہ معلومات جو سائٹ چھپاتی ہے:** تنخواہ ظاہر کی گئی ہے یا نہیں، ملازمت کسی مخصوص قومیت تک محدود ہے یا نہیں، اور آجر براہِ راست ہے یا بھرتی ایجنسی۔
- **قیمت:** ہر 1,000 ملازمتوں کے لیے $1.20۔

### മലയാളം

**Naukrigulf ജോബ് സ്ക്രാപ്പർ** naukrigulf.com-ൽ നിന്ന് യുഎഇ, സൗദി അറേബ്യ, ഖത്തർ, കുവൈറ്റ്, ബഹ്‌റൈൻ, ഒമാൻ എന്നിവിടങ്ങളിലെ ജോലികൾ ശേഖരിക്കുന്നു.

- **മലയാളത്തിൽ തിരയുക.** `നഴ്സ്`, `ഡ്രൈവർ`, `അക്കൗണ്ടന്റ്` എന്ന് ടൈപ്പ് ചെയ്യുക; സൈറ്റ് തിരിച്ചറിയുന്ന ഇംഗ്ലീഷ് പദവുമായി അത് സ്വയം പൊരുത്തപ്പെടും.
- **മലയാളത്തിൽ വായിക്കുക.** ഓരോ ജോലിക്കും വിവർത്തനം ചെയ്ത `localized` ബ്ലോക്ക് ഉണ്ട്: രാജ്യം, നഗരം, ജോലി രീതി, തൊഴിൽ തരം, ദേശീയത, പരിചയം.
- **സൈറ്റ് മറയ്ക്കുന്ന വിവരങ്ങൾ:** ശമ്പളം വെളിപ്പെടുത്തിയോ, ജോലി ഏതെങ്കിലും ദേശീയതയിൽ പരിമിതമാണോ, തൊഴിലുടമ നേരിട്ടാണോ അതോ ഏജൻസിയാണോ.
- **വില:** 1,000 ജോലികൾക്ക് $1.20.

### Filipino

**Naukrigulf Job Scraper** ay kumukuha ng mga trabaho mula sa naukrigulf.com sa UAE, Saudi Arabia, Qatar, Kuwait, Bahrain at Oman.

- **Maghanap sa Filipino.** I-type ang `nars`, `drayber`, `akawntant` at awtomatiko itong itutugma sa terminong Ingles na kilala ng site.
- **Basahin sa Filipino.** Bawat trabaho ay may `localized` block: bansa, lungsod, paraan ng trabaho, uri ng trabaho, nasyonalidad at karanasan.
- **Ang mga detalyeng itinatago ng site:** nakasaad ba ang sahod, limitado ba ang trabaho sa ilang nasyonalidad lamang, at direktang employer ba o ahensya ng rekrutment.
- **Libre ang mga filter.** Hindi ka sinisingil sa mga trabahong tinanggal ng iyong mga filter.
- **Presyo:** $1.20 kada 1,000 trabaho.

### Français

**Naukrigulf Job Scraper** extrait les offres d'emploi de naukrigulf.com aux Émirats arabes unis, en Arabie saoudite, au Qatar, au Koweït, à Bahreïn et à Oman.

- **Cherchez en français.** Saisissez `comptable`, `chauffeur` ou `infirmier` : le terme est automatiquement rapproché de l'intitulé anglais indexé par le site.
- **Lisez en français.** Chaque offre comporte un bloc `localized` : pays, ville, mode de travail, type de contrat, nationalité et expérience, traduits, avec un glossaire des noms de colonnes.
- **Les informations que le site n'expose pas :** salaire indiqué ou masqué, poste réservé à certaines nationalités, poste réservé à un genre, employeur direct ou cabinet de recrutement.
- **Les filtres sont gratuits.** Les offres écartées par vos filtres ne sont jamais facturées.
- **Tarif :** 1,20 $ pour 1 000 offres, description complète incluse.

***

### Notes

This Actor is unofficial and is not affiliated with, endorsed by, or connected to Naukrigulf, Naukri or Info Edge. It reads only publicly available job listings, the same ones any visitor sees without logging in. Field availability depends entirely on what each employer chose to publish; a field the employer left blank comes back as `null`.

You are responsible for using the data lawfully, including any personal data in recruiter contact fields.

Need a scraper for a different site? [Suggest it here](https://automationbyexperts.com/apify) or email youssefarhan24@gmail.com.

# Actor input Schema

## `searchKeywords` (type: `array`):

What to search for. Type in English or in your own language: محاسب, नर्स, ഡ്രൈവർ, comptable and perawat all work, and are matched to the English title the board indexes. Leave empty to get every job in the location you picked.

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

Country or city to search in. "All Gulf countries" covers the six GCC states in one run.

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

How many jobs to return in total, across every keyword. You are charged per job delivered, so this is also your cost ceiling.

## `outputLanguage` (type: `string`):

Adds a `localized` block to every job with the country, city, work mode, employment type, nationality and experience translated, plus a glossary of the column names. Job titles and descriptions always stay in the employer's own words.

## `datePosted` (type: `string`):

Only return jobs posted in the last N days. Naukrigulf keeps postings for about 60 days, so leaving this open returns older ones too.

## `experienceLevel` (type: `string`):

Filter by the experience band the employer asked for.

## `sortBy` (type: `string`):

Newest first is best for monitoring a market. Most relevant is best for a one-off search on a specific title.

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

Optional. Paste Naukrigulf job page URLs (the kind ending in -jid-<number>) to scrape exactly those, in addition to the keyword search.

## `gccOnly` (type: `boolean`):

Drop anything outside the UAE, Saudi Arabia, Qatar, Kuwait, Bahrain and Oman. Useful because Naukrigulf also carries Egyptian, Levantine and North African postings.

## `workModes` (type: `array`):

Keep only these work modes. Leave empty for all of them.

## `employmentTypes` (type: `array`):

Keep only these employment types. Leave empty for all of them.

## `minMonthlySalaryUsd` (type: `integer`):

Keep only jobs whose published salary band reaches this figure. Naukrigulf publishes salary in monthly USD bands. Jobs that hide their salary are dropped by this filter.

## `salaryDisclosedOnly` (type: `boolean`):

Roughly two thirds of Gulf postings hide the salary. Turn this on to keep only the ones that state it.

## `directEmployersOnly` (type: `boolean`):

Drop postings placed by recruitment consultancies and agencies, keeping only companies hiring for themselves.

## `excludeNationalityRestricted` (type: `boolean`):

Many Gulf postings name the nationalities they will consider. Turn this on to keep only roles that are open to any nationality.

## `excludeGenderRestricted` (type: `boolean`):

Turn this on to drop postings that ask for male or female candidates specifically.

## `excludeExpired` (type: `boolean`):

Drop vacancies the board has already closed. On by default.

## `maxAgeDays` (type: `integer`):

A second, exact age cut applied after the fetch, in case you need a tighter window than the Posted within options offer.

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

Adds the description and the candidate profile as clean plain text, with the bullet structure preserved.

## `includeHtmlDescription` (type: `boolean`):

Adds the description exactly as the employer formatted it. Off by default because it roughly doubles the size of each row.

## `includeRecruiterContacts` (type: `boolean`):

Adds the contact name, job title, email, phone, website and address that Naukrigulf publishes with the posting, where the employer provided them. You are responsible for using contact data lawfully, including under UAE and Saudi data-protection law and the GDPR where it applies.

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

Optional override. This Actor reaches Naukrigulf directly and needs no proxy, so leaving this empty is both faster and cheaper. Set it only if your own network requires a specific egress.

## Actor input object example

```json
{
  "searchKeywords": [
    "accountant"
  ],
  "location": "gulf",
  "maxItems": 100,
  "outputLanguage": "en",
  "datePosted": "",
  "experienceLevel": "",
  "sortBy": "date",
  "gccOnly": false,
  "workModes": [],
  "employmentTypes": [],
  "salaryDisclosedOnly": false,
  "directEmployersOnly": false,
  "excludeNationalityRestricted": false,
  "excludeGenderRestricted": false,
  "excludeExpired": true,
  "includeDescription": true,
  "includeHtmlDescription": false,
  "includeRecruiterContacts": true,
  "proxyConfiguration": {}
}
```

# Actor output Schema

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

All scraped jobs. Switch between the Overview, Salary, Eligibility and Recruiter contacts views in the table.

## `summary` (type: `string`):

Jobs pushed, pages read, how many rows the Advanced filters removed, and any errors.

# 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 = {
    "searchKeywords": [
        "accountant"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/naukrigulf-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 = { "searchKeywords": ["accountant"] }

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/naukrigulf-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 '{
  "searchKeywords": [
    "accountant"
  ]
}' |
apify call fayoussef/naukrigulf-scraper --silent --output-dataset

```

## MCP server setup

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