# GulfTalent Jobs Scraper - Every Job, Salary & Employer (`clearpath/gulftalent-jobs-scraper`) Actor

Every live GulfTalent job for your search terms, countries, cities and filters, or the whole board of 35,000+ jobs. Full descriptions, requirements, salary ranges where available, market salary benchmarks, closing dates, similar jobs and optional employer emails.

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

## Pricing

from $0.70 / 1,000 jobs

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

[![2,800+ GulfTalent jobs. Under 6 minutes. Full descriptions and salary ranges where available.](https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/gulftalent-refresh-144aa21765bb.png)](https://console.apify.com/actors/5rKD7CAZX6dSxxOFi/input)

From **Clearpath**, creators of [Indeed Jobs Scraper](https://apify.com/clearpath/indeed-jobs-scraper) and [StepStone.de Job Scraper](https://apify.com/clearpath/stepstone-de-job-scraper).

#### Get GulfTalent jobs with salary details

- **Thousands of jobs in minutes.** 2,839 jobs in 5 minutes 22 seconds, including full descriptions, salary benchmarks and similar jobs. Timing varies; employer contact lookup was off.
- **Salary ranges and market pay.** Get the job's salary range where available, plus the market median for its title and location. Salary data is available for some jobs, not every listing.
- **Full descriptions, ready to export.** Collect requirements, benefits, employer details and closing dates. Search by title, skill or company, filter by country or city, or leave search terms empty to collect the full board.

<a href="https://console.apify.com/actors/5rKD7CAZX6dSxxOFi/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/gulftalent-refresh-9e0f9f0df711.svg" width="244" height="48" alt="Get GulfTalent jobs"></a>

#### Try a small search

Open the [input page](https://console.apify.com/actors/5rKD7CAZX6dSxxOFi/input), switch to JSON and paste this to request up to 25 jobs with full details and salary benchmarks:

```json
{
  "searchTerms": [
    "engineer"
  ],
  "maxResults": 25,
  "includeJobDetails": true,
  "includeSalaryBenchmarks": true
}
```

Replace `engineer` with your own job title, skill or employer. `maxResults` is the total across your searches. Leave it empty for all matching jobs. Export as JSON, CSV or Excel. [Current pricing](https://apify.com/clearpath/gulftalent-jobs-scraper/pricing) applies; employer contact lookup is optional, slower and charged separately for jobs that return an email.

Example shown: Project Engineer at Tiger Group, Dubai. AED 8,000–10,000 per month, 5+ years of experience. Market median: AED 8,000 per month.

<table><tr><td style="padding:10px 14px;background:#2B3C81;border:none;border-radius:4px 4px 0 0"><span style="color:#FAFAF9;font-size:14px;font-weight:700">Clearpath Job Data</span><span style="color:#EEF0FF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Listings, salaries and company details</span></td></tr><tr><td style="padding:6px;border:1px solid #CAD0EA;border-top:none;border-radius:0 0 4px 4px;background:#EEF0FF"><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#DDE1FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-5rKD7CAZX6dSxxOFi-TYJpNSg7n5-gulftalent-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://console.apify.com/actors/5rKD7CAZX6dSxxOFi/input" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">GulfTalent</a></span><br><span style="color:#45546A;font-size:12px">You are here</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-6rcYeTIheXEqHWWBX-lafSkrHVf0-indeed-jobs-api-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/indeed-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Indeed</a></span><br><span style="color:#45546A;font-size:12px">Pay &amp; ratings</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-GiLUIZMS4N0QQ8W7O-iS7Xl8y42f-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/google-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Google Jobs</a></span><br><span style="color:#45546A;font-size:12px">Many boards</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-WefmR41HxSeENoZ7M-CYr5o45qXo-glassdoor-reviews-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/glassdoor-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Glassdoor</a></span><br><span style="color:#45546A;font-size:12px">Full ads &amp; pay</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-kam9EOjkCveB9j6ET-o4Yg9S4Dwg-workday-jobs-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/workday-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Workday</a></span><br><span style="color:#45546A;font-size:12px">Career sites</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-Z1aLN1Uv3ycPUkfTd-DwRlvqITvt-linkedin-jobs-scraper-icon.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/linkedin-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">LinkedIn</a></span><br><span style="color:#45546A;font-size:12px">Company profiles</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-sqkHGNG0toRTR3ORV-zgctRChWeu-wellfound-jobs-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/wellfound-api-ppe" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Wellfound</a></span><br><span style="color:#45546A;font-size:12px">Startup equity</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-iCOaV0PjtL6fLWy96-XamdcY6bH4-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/ashby-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Ashby</a></span><br><span style="color:#45546A;font-size:12px">Startup job boards</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-keGVAbEMrj3DrhJBX-DouWCU2GMR-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/lever-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Lever</a></span><br><span style="color:#45546A;font-size:12px">2,500+ boards</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-dAZ4bxSAzbE7CHIDn-m40A0nfhe4-himalayas-remote-jobs-scraper.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/himalayas-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Himalayas</a></span><br><span style="color:#45546A;font-size:12px">Remote jobs</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-rKPNMXYcPkNsb6QWr-8G2aCyA8Bf-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/cutshort-jobs-scraper" style="color:#2B3C81;text-decoration:none;font-weight:700;font-size:13px">Cutshort</a></span><br><span style="color:#45546A;font-size:12px">India tech jobs</span></span></td></tr></table>

#### Copy to your AI assistant

```text
Help me use clearpath/gulftalent-jobs-scraper on Apify. Read https://apify.com/clearpath/gulftalent-jobs-scraper.md for its documentation, input schema, pricing and limits. maxResults is the total across every search term and address, not per term. findEmployerContacts is off by default, is charged separately per job that got an employer email, and makes a run noticeably slower. includeJobDetails off gives a fast list without descriptions, requirements, closing dates or salary benchmarks. monitorMode needs the same monitorName across runs to compare them, and unchanged jobs are left out unless includeUnchanged is on. Choose settings for my requested outcome. If you cannot retrieve the page, ask me to paste the relevant sections. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### How to scrape GulfTalent jobs

Type a search term and set a limit. That is the whole setup.

```json
{
  "searchTerms": ["engineer"],
  "maxResults": 100
}
```

Leave `searchTerms` empty to collect every live job on GulfTalent. Leave `maxResults` empty to take every job your search matches.

#### Narrowing the search

Filters combine, and each one takes the same names GulfTalent uses on its own site.

```json
{
  "searchTerms": ["accountant", "finance manager"],
  "countries": ["UAE", "Saudi Arabia"],
  "cities": ["Dubai", "Riyadh"],
  "seniorityLevels": ["experienced"],
  "minSalaryUsd": 3000,
  "postedWithinDays": 7,
  "maxResults": 500
}
```

| Input | Type | Default | What it does |
|---|---|---|---|
| `searchTerms` | array | — | Up to 30 terms. Each is its own search; a job found twice is saved once and lists both terms. |
| `maxResults` | integer | — | Jobs in total across every term and address. Empty means no limit. |
| `startUrls` | array | — | Paste any GulfTalent address: a job, a country, a city, a job function, an industry, a title listing or a company page. |
| `countries`, `cities` | array | — | Name, slug or two-letter code, for example `UAE`, `uae` or `AE`. |
| `jobFunctions`, `industries`, `seniorityLevels`, `employmentTypes` | array | — | GulfTalent's own categories, offered as a picker in the form. |
| `postedWithinDays` | integer | — | Only jobs posted in the last N days. |
| `minSalaryUsd` | integer | — | Only jobs whose monthly salary reaches this, in US dollars, when salary data is available. |
| `includeKeywords`, `excludeKeywords` | array | — | Match against the title, the requirements and the description. |
| `remoteOnly`, `easyApplyOnly` | boolean | `false` | Remote jobs only, or only jobs you apply for on GulfTalent itself. |
| `includeJobDetails` | boolean | `true` | Full description, requirements, benefits and closing date. Turn off for a fast list. |
| `includeSalaryBenchmarks` | boolean | `true` | GulfTalent's market salary for that title and city. |
| `includeSimilarJobs` | boolean | `true` | The related jobs GulfTalent shows beside each advert. |
| `includeJobBoardListings` | boolean | `true` | Jobs that apply on another site. Turn off to keep only GulfTalent's own. |
| `findEmployerContacts` | boolean | `false` | 💲 Employer website, email, phone numbers and social accounts. Charged separately, per job that got an email. |
| `monitorMode`, `monitorName`, `includeUnchanged`, `skipReposts` | — | `false` | Track what changed between runs. See below. |

### What data can you extract from GulfTalent?

Every job carries up to 134 fields. A recent run filled 123 of them.

**The job** — title, standard title, description in plain text, HTML and Markdown, requirements, benefits, keywords, years of experience, posting date, closing date, status.
**Where** — country, city, region, locality, street address, postal code, remote flag, and GulfTalent's own location codes.
**The employer** — name, profile, logo, industry, size, and whether the employer is withheld.
**The salary** — minimum, maximum, currency, period, the same range in US dollars, and whether the advert showed it.
**The market** — GulfTalent's own salary benchmark for that title and city, with percentiles, sample size and related roles.
**Requirements GulfTalent publishes** — nationality, gender, Arabic fluency, seniority, job type, job function in English and Arabic.
**Found in the advert** — email addresses, phone numbers, links and social profiles written into the description.

One real row, shortened:

```json
{
  "jobId": "652123",
  "url": "https://www.gulftalent.com/uae/jobs/project-engineer-652123",
  "title": "Project Engineer",
  "companyName": "Tiger Group",
  "city": "Dubai",
  "country": "UAE",
  "jobFunction": "Engineering - Civil & Construction",
  "seniority": "Experienced professional",
  "employmentType": "FULL_TIME",
  "postedDate": "2026-10-29",
  "validThrough": "2027-01-26T23:00:00+00:00",
  "salaryMin": 8000,
  "salaryMax": 10000,
  "salaryCurrency": "AED",
  "salaryPeriod": "month",
  "salaryIsPublic": false,
  "salaryMinUsd": 2178,
  "salaryMaxUsd": 2723,
  "experienceYearsMin": 5,
  "nationality": "Any Nationality",
  "gender": "Male",
  "isRemote": false,
  "easyApply": true,
  "salaryBenchmark": {
    "title": "Project Engineer",
    "location": "Dubai, UAE",
    "currency": "AED",
    "period": "month",
    "percentile10": 5000,
    "median": 8000,
    "percentile90": 12000,
    "sampleSize": 47,
    "relatedRoles": [
      { "title": "Project Manager", "median": 16500 }
    ]
  },
  "employerWebsite": "https://tigergroup.ae",
  "employerEmail": "contact@tigergroup.ae",
  "employerPhones": ["+971800300300"]
}
```

`salaryIsPublic: false` on that row means the advert itself showed no figure. The range is still there.

Export as JSON, CSV, Excel or XML from the Storage tab. Nested fields such as `salaryBenchmark` and `similarJobs` keep their structure in JSON; CSV flattens them.

### Employer contacts

Set `findEmployerContacts: true` and each job gains its employer's website, best email address, phone numbers and social accounts. On a recent `engineer` run of 2,839 jobs this found **1,896 websites, 1,187 email addresses and 714 jobs with a phone number**.

Every address is checked against the employer's own domain, so you get `careers@theiremployer.com`, never a free mailbox or a recruiter's personal address. Where no employer website can be identified, the row says so and nothing is charged.

An employer is looked up once per run, however many of its jobs you collect. Contact lookups make a run noticeably slower, which is why the option is off by default.

### Tracking changes between runs

Set `monitorMode: true` and give the run a `monitorName`. The first run records what it saw. Every later run with the same name reports what changed:

| `changeType` | Meaning |
|---|---|
| `NEW` | Not seen before under this monitor name |
| `UPDATED` | A tracked field changed; `changedFields` lists them |
| `UNCHANGED` | Nothing changed. Left out unless you set `includeUnchanged` |
| `REOPENED` | Was closed, is live again |
| `CLOSED` | Gone from your search and confirmed closed on GulfTalent, with `closedAt` |

Reposts are detected too: a new advert whose content matches a previously closed job from the same employer carries `isRepost: true` and points at the original. Set `skipReposts: true` to leave them out.

Separate searches under one monitor name never mark each other's jobs as closed, so you can watch several markets under one name.

### Job charges

| Event | When charged | Price |
|---|---|---|
| Job | Per job saved to your dataset | **$0.0007** ($0.70 per 1,000) |
| Employer contact | Only for a job that got an employer email address | $0.01 |

Nothing in the job price is an extra: the full description, the requirements, available salary ranges, the market benchmark, the similar jobs and the closing date are all included. A job whose employer could not be identified is never charged an employer contact, and neither is a run with `findEmployerContacts` left off.

Apify's own platform charges for the compute a run uses; the Console shows that beside the above.

### Questions

**Which countries does it cover?** The UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman and the other markets GulfTalent lists, including Egypt, Jordan, Lebanon and Iraq. Filter by country, by city, or take the lot.

**How many jobs are there?** A whole-board run on 1 November 2026 returned 35,775 live jobs, every one of them with its full description. The board changes daily.

**Can I export salary ranges?** Yes. Get the range, currency and pay period where available. Jobs without salary data return null.

**What is a job-board listing?** A job you apply for on another site. GulfTalent lists them but its own search does not return them. They are included by default and marked `isJobBoard: true`; `includeJobBoardListings: false` leaves them out.

**Do I need a GulfTalent account?** No. No login, no cookie, nothing to configure.

**What happens if nothing matches?** The run finishes successfully with zero rows and says so. You are not charged for jobs that were never saved.

**Can I get fewer fields?** Turn off `includeJobDetails`, `includeSalaryBenchmarks` or `includeSimilarJobs` for a faster, lighter run. Listing fields are always present.

**How fresh is it?** Every run reads GulfTalent as it is at that moment. Yesterday's run is not reused.

**Is this data I can use?** The jobs are published to be read. You are responsible for how you use personal data, particularly contact details, under the rules that apply to you.

### More Clearpath job scrapers

**Gulf and Middle East:** [GulfTalent](https://apify.com/clearpath/gulftalent-jobs-scraper).

**Global job search:** [Indeed](https://apify.com/clearpath/indeed-jobs-scraper) · [LinkedIn](https://apify.com/clearpath/linkedin-jobs-scraper) · [Google Jobs](https://apify.com/clearpath/google-jobs-scraper) · [Glassdoor](https://apify.com/clearpath/glassdoor-jobs-scraper) · [Workday](https://apify.com/clearpath/workday-jobs-scraper).

**Startups, remote and India:** [Wellfound](https://apify.com/clearpath/wellfound-api-ppe) · [Ashby](https://apify.com/clearpath/ashby-jobs-scraper) · [Lever](https://apify.com/clearpath/lever-jobs-scraper) · [Himalayas](https://apify.com/clearpath/himalayas-jobs-scraper) · [Cutshort](https://apify.com/clearpath/cutshort-jobs-scraper) · [Shine](https://apify.com/clearpath/shine-jobs-scraper).

**More job and company data:** [StepStone](https://apify.com/clearpath/stepstone-de-job-scraper) · [Totaljobs](https://apify.com/clearpath/totaljobs-uk-job-scraper) · [XING](https://apify.com/clearpath/xing-jobs-scraper) · [Welcome to the Jungle](https://apify.com/clearpath/welcome-to-the-jungle-jobs-api) · [Y Combinator](https://apify.com/clearpath/ycombinator-api-scraper).

### Support

Something wrong, or a field you need that is not here? Open an issue on the **Issues** tab, or write to **max@mapa.slmail.me**. Issues are read.

*Built by Clearpath. The whole Gulf job market, with the salary attached.*

# Actor input Schema

## `searchTerms` (type: `array`):

Job titles, skills or employer names, one per line, for example <code>engineer</code> or <code>accountant</code>. Each term is its own search: it matches the title, the requirements and the full description of a GulfTalent job, and the title of a job that applies on another site. A job found by two terms is saved once and lists both. Leave empty for every live job on GulfTalent. Up to 30 terms.

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

Stop the run after this many jobs, across every search term and address. Leave empty to get every matching job; the whole board holds over 35,000.

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

Collect exactly what a GulfTalent page shows. Paste a job page (<code>https://www.gulftalent.com/uae/jobs/construction-engineer-652548</code>), a country, city, job function, industry or title listing (<code>https://www.gulftalent.com/uae/jobs/city/dubai</code>), or an employer page (<code>https://www.gulftalent.com/companies/kbr-kellogg-brown-and-root-careers</code>). Works together with the search terms and filters. Up to 200 addresses.

## `countries` (type: `array`):

Only jobs in these countries: a name or two-letter code such as <code>UAE</code>, <code>Saudi Arabia</code>, <code>Qatar</code> or <code>AE</code>. Leave empty for every country.

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

Only jobs in these cities, for example <code>Dubai</code>, <code>Riyadh</code>, <code>Doha</code> or <code>Cairo</code>. Leave empty for every city.

## `jobFunctions` (type: `array`):

Only jobs in these job functions, as GulfTalent names them, for example <code>Civil Engineering</code>, <code>Accounting</code>, <code>Sales</code> or <code>Healthcare</code>. Leave empty for every job function.

## `industries` (type: `array`):

Only jobs at employers in these industries, for example <code>Construction</code>, <code>Banking</code>, <code>Oil & Gas</code> or <code>Healthcare</code>. Leave empty for every industry.

## `seniorityLevels` (type: `array`):

Only jobs at these levels. Leave empty for every level.

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

Only these job types. Leave empty for every type.

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

Only jobs posted in the last N days, for example <code>3</code>. Leave empty for every date.

## `minSalaryUsd` (type: `integer`):

Only jobs whose monthly salary reaches this amount in US dollars. Leaves out every job for which GulfTalent holds no salary. Leave empty for every job.

## `includeKeywords` (type: `array`):

Keep only jobs whose title, requirements or description contains at least one of these words, for example <code>python</code>. Not case-sensitive.

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

Leave out jobs whose title, requirements or description contains any of these words, for example <code>intern</code> or <code>commission</code>. Not case-sensitive.

## `easyApplyOnly` (type: `boolean`):

Only jobs that take the application on GulfTalent itself, leaving out jobs that send the candidate to another site.

## `remoteOnly` (type: `boolean`):

Only jobs GulfTalent marks as remote.

## `includeJobDetails` (type: `boolean`):

Add the full description in text, HTML and Markdown, the requirements, the benefits, the closing date, the hidden salary range, the nationality, gender and Arabic requirements, the years of experience asked for and the employer's profile. Turn off for a faster run that keeps only what a listing shows.

## `includeSalaryBenchmarks` (type: `boolean`):

Add GulfTalent's market salary for the job's title and city: the median, the percentiles, the sample size and the medians of related roles. Available for the titles and cities GulfTalent publishes a salary page for.

## `includeSimilarJobs` (type: `boolean`):

Add the related jobs GulfTalent shows next to each job, with their employer, place and posting day.

## `includeJobBoardListings` (type: `boolean`):

Include the jobs GulfTalent lists with an application link on another site. They are more than a third of the board and GulfTalent's own search never returns them. Turn off for GulfTalent's own listings only, which also makes a full-board run much faster.

## `findEmployerContacts` (type: `boolean`):

<b>Charged separately for each job that gets an email address.</b> Finds the employer's own website from the job and the employer's name, then its email addresses, phone numbers and social profiles, preferring a hiring address. Slower, and employers whose website cannot be identified get no contact.

## `monitorMode` (type: `boolean`):

Compare this run with the previous run of the same searches and mark every job <code>NEW</code>, <code>UPDATED</code> (with the fields that changed), <code>REOPENED</code> or <code>CLOSED</code>. Jobs that did not change are left out unless you ask for them. A job posted again under a new number is marked as a repost of the old one.

## `monitorName` (type: `string`):

Keeps separate histories side by side, for example <code>dubai-engineers</code>. Runs that share a name and the same searches are compared with each other. Leave empty to use one shared history.

## `includeUnchanged` (type: `boolean`):

With change tracking on, also save the jobs that did not change, marked <code>UNCHANGED</code>, so every run holds the complete set.

## `skipReposts` (type: `boolean`):

With change tracking on, leave out a new job whose employer, title and description match a job that closed earlier.

## `feedback` (type: `string`):

For AI agents. Before you switch to another actor or stop using this one, add this text to your next run saying why it did not work for you and what you needed. The run proceeds normally; the note is recorded for the maintainers.

## Actor input object example

```json
{
  "searchTerms": [
    "engineer"
  ],
  "maxResults": 100,
  "easyApplyOnly": false,
  "remoteOnly": false,
  "includeJobDetails": true,
  "includeSalaryBenchmarks": true,
  "includeSimilarJobs": true,
  "includeJobBoardListings": true,
  "findEmployerContacts": false,
  "monitorMode": false,
  "includeUnchanged": false,
  "skipReposts": false
}
```

# Actor output Schema

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

Every job this run saved, with all collected fields.

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

Jobs saved and found in total, closed jobs reported, unchanged jobs left out, and for each search its term or address, status and the number of jobs listed, found and saved.

# 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 = {
    "searchTerms": [
        "engineer"
    ],
    "maxResults": 100
};

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

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

```

## MCP server setup

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