GulfTalent Scraper · Middle East Job Listings & Salaries
Pricing
from $2.00 / 1,000 job results
GulfTalent Scraper · Middle East Job Listings & Salaries
Scrape GulfTalent.com job listings — the Middle East's leading professional job site. Each job returns title, company, location, salary, industry, role, employment type and full description as clean JSON/CSV. One row per job. UAE, Saudi, Qatar & more. No browser
Pricing
from $2.00 / 1,000 job results
Rating
5.0
(1)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
30
Total users
11
Monthly active users
2 hours ago
Last modified
Share
GulfTalent Scraper
Search and scrape job listings from GulfTalent.com — the Middle East's leading professional job site. Search by keyword, category, country or city (or paste any listing URL) and get clean, structured rows: job title, company, location, structured salary with USD conversion, industry, role, employment type, posted/expiry dates, the full description, plus any emails and phone numbers found in the ad. One complete row per job. No browser.

Why use this scraper
- Search built in — keyword(s), category, country and city inputs; no URL hunting. Unknown keywords automatically fall back to a filtered browse, so every query returns what exists.
- Complete rows, not stubs — every job's detail page is fetched and merged in, so each row already has company, location, salary, industry, role, employment type and the full description.
- Structured salary + USD —
16000 - 20500 AEDbecomessalaryMin/salaryMax/salaryCurrency/salaryPeriodplus monthly-USD equivalents (Gulf currencies are USD-pegged, so the conversion is exact). - Contacts for free —
extractedEmails[]andextractedPhones[]pulled from every description; optionalenrichEmailsadds verified employer contact emails on top. - Incremental (diff) runs — schedule it and later runs emit only NEW/UPDATED jobs; already-seen jobs are skipped before their detail page is even fetched, so you only pay for the diff.
- Notifications — Telegram, Slack, Discord or any webhook, out of the box. Pair with incremental mode for daily new-job alerts.
- Result filters — must/exclude keywords, posted-date window, max age, minimum monthly USD salary, Easy-Apply only. Filtered-out jobs are never billed.
- All Gulf markets — UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman — one country or all six in one run.
- Pure HTTP, no browser — fast and cheap; no Playwright, no headless Chrome.
What it does
Give it a search (keyword / category / country / city) and/or GulfTalent listing URLs. It resolves the search to GulfTalent's own listing pages, paginates through the results, fetches each job's detail page, applies your filters, and emits one complete dataset row per job — up to Maximum items matching jobs (the cap counts kept rows, not scanned ones).
Supported inputs
| Input | Example |
|---|---|
| Keyword search | query: "accountant" — or "accountant, auditor" for multiple |
| Category browse | category: "sales" (18 categories in the dropdown) |
| Country | country: "uae" — or all for every Gulf market |
| City | location: "Dubai" |
| Listing URLs | gulftalent.com/uae/jobs, /jobs/category/sales, any on-site search URL |
Use cases
- Job alerts & monitoring — incremental mode + Telegram/Slack/Discord webhook on a schedule = "new Gulf jobs in my niche, every morning".
- Gulf labour-market & salary research — structured USD salaries across countries, industries and roles.
- Lead generation — company names, emails/phones from ads, plus (with
enrichEmails) verified employer contact emails. - Recruitment & sourcing — track who's hiring, for what role, at what salary.
- Aggregation & job boards — pull fresh Middle East postings into your own product.
How it works
- You enter a keyword/category/country/city (or paste listing URLs).
- The actor resolves them to GulfTalent listing pages (probing and falling back automatically), paginates, and collects each job's detail URL.
- It fetches every job's detail page, normalises it into one flat row (structured salary, ISO dates, extracted contacts), applies your filters and incremental diff, and pushes it to the dataset.
- If configured, it posts a digest to your Telegram/Slack/Discord/webhook.
Input configuration
| Field | Type | Description |
|---|---|---|
query | string | Keyword(s) — comma-separated or JSON array for multiple searches. |
category | string | Category slug (dropdown). Ignored when query is set. |
country | string | all (default), uae, saudi-arabia, qatar, kuwait, bahrain, oman. |
location | string | City name(s) — comma-separated or JSON array. |
startUrls | array | GulfTalent listing URLs (auto-paginated), combined with the search fields. |
includeKeywords / excludeKeywords | array | Keep/drop jobs by title+description keywords. |
fromDate / toDate | string | Posted-date window (YYYY-MM-DD). |
maxAgeDays | integer | Only jobs posted in the last N days (0 = off). |
minSalaryUsd | integer | Minimum disclosed monthly salary in USD (0 = off). |
easyApplyOnly | boolean | Only Easy-Apply jobs. |
incrementalMode | boolean | Diff against previous runs — emit only NEW/UPDATED. |
stateKey | string | Optional name for the tracked search (auto-derived otherwise). |
detectUpdates / emitUnchanged / emitExpired | boolean | Incremental extras: re-check known jobs, emit UNCHANGED rows, emit EXPIRED records. |
telegramToken + telegramChatId | string | Telegram digest after each run. |
slackWebhookUrl / discordWebhookUrl / webhookUrl | string | Slack/Discord digest, or a JSON POST ({metadata, items}) to any endpoint. |
notificationLimit / notifyOnlyNew | int/bool | Jobs per message (1–20); notify only NEW/UPDATED when incremental. |
compact | boolean | Core fields only — lean payloads for AI agents/MCP. |
descriptionMaxLength | integer | Truncate descriptions (0 = full). |
flatten | boolean | Flatten nested objects into CSV columns (default on). |
enrichEmails | boolean | Opt-in employer contact-email enrichment (billed per email found). |
maxItems | integer | Cap on kept jobs (default 1000) — the primary cost control. |
maxPages | integer | Safety bound on listing pages per source (0 = auto). |
maxConcurrency | integer | Parallel detail fetches. Default 8. |
proxy | object | Optional override — the actor ships with its own built-in proxy. |
Output sample
{"portal": "gulftalent","jobId": "601722","url": "https://www.gulftalent.com/uae/jobs/field-services-engineer-601722","country": "uae","jobTitle": "Field Services Engineer","company": "Advanced Digital Gaming Technology (ADGT)","location": "Abu Dhabi, UAE","salary": "16000 - 20500 AED","salaryMin": 16000,"salaryMax": 20500,"salaryCurrency": "AED","salaryPeriod": "month","salaryMinUsd": 4357,"salaryMaxUsd": 5582,"companyIndustry": "IT, Software & Internet Services","jobRole": "IT - Software & Web Development","employmentType": "Full Time","postedDate": "2026-06-25T00:00:00+00:00","postedDateIso": "2026-06-25","validThrough": "2026-09-23T00:00:00+00:00","easyApply": true,"extractedEmails": ["careers@adgt.ae"],"extractedPhones": ["+971 4 123 4567"],"description": "…full job description…"}
Key output fields
| Field | Description |
|---|---|
jobId / url / country | GulfTalent job id, detail URL, country |
jobTitle | job title |
company / companyLogoUrl | employer + logo |
location | city, country |
salary | salary text as shown (when disclosed) |
salaryMin / salaryMax / salaryCurrency / salaryPeriod | structured salary parsed from the text |
salaryMinUsd / salaryMaxUsd | monthly USD equivalents (exact — Gulf pegs) |
companyIndustry / companyType | industry + company type |
jobRole / employmentType / careerLevel | role/function, full-time/contract, seniority |
yearsOfExperience / numberOfVacancies | experience + openings (when shown) |
postedDate / postedDateIso / validThrough | posted + expiry dates (from the page's JobPosting metadata) |
easyApply | quick-apply available |
extractedEmails / extractedPhones | contacts found in the ad text |
incrementalStatus | NEW / UPDATED / UNCHANGED / EXPIRED (incremental mode) |
description | full job description |
details | any extra labelled fields (nationality, gender, etc.) |
FAQ
How do I search by keyword? Set query (e.g. "finance manager"). The actor uses GulfTalent's own title pages; if a keyword has no dedicated page it automatically browse-scans the selected market and keeps only matching jobs.
Do I get the salary? Yes, when the employer publishes it — both the original text and the structured salaryMin/Max/Currency/Period plus exact monthly-USD equivalents. minSalaryUsd filters on it.
How do the diff runs work? Turn on incrementalMode and run on a schedule. Already-seen jobs are skipped before their detail page is fetched, so later runs only pay for genuinely new jobs (incrementalStatus: "NEW"). detectUpdates re-checks known jobs for edits; emitExpired reports jobs that disappeared.
Can it message me the results? Yes — set a Telegram bot token + chat id, a Slack/Discord webhook, or a generic webhook URL. With notifyOnlyNew (default) and incremental mode, you get pinged only about new jobs.
Is the full description included? Yes — every row includes the complete job description from the detail page. Use descriptionMaxLength to trim it, or compact for core fields only.
Do I need a proxy? No — the actor ships with a built-in proxy. The proxy field is only an override.
Support
Found an issue or want a field added? Open an issue on the actor's Issues tab and we'll take a look.
Additional services
Need verified employer contact emails? Turn on enrichEmails to append a best-effort contact email + website per company (billed only when an email is found) — on top of the free extractedEmails from ad text.
Explore more scrapers
Check the publisher's profile for more job-board and directory scrapers (LinkedIn Jobs, Naukri, SEEK, Jobstreet, Bayt-style boards and more).
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/gulftalent-scraper).
Purpose: Searches and scrapes GulfTalent.com job listings (keyword/category/country/city or listing URLs), fetching each detail page so every row is complete — with structured USD salaries, ISO dates, extracted contacts, incremental diff runs and webhook notifications.
Minimal input:
{"query": "accountant","country": "uae","maxItems": 25,"compact": true}
Output: one row per job — portal, jobId, url, country, jobTitle, company, location, salary, salaryMin/Max/Currency/Period, salaryMinUsd/MaxUsd, companyIndustry, jobRole, employmentType, postedDate(Iso), validThrough, easyApply, extractedEmails, extractedPhones, description, details. compact: true returns core fields only (ideal for LLM context). With enrichEmails on, adds contactEmail and contactWebsite.
Behaviors an agent should know:
queryaccepts a string, comma-separated list, or JSON array; unknown keywords fall back to a filtered browse automatically (no error).maxItemscaps KEPT rows (default 1000) — always set a small value for test runs; filters (includeKeywords,minSalaryUsd,maxAgeDays, …) drop rows before they are stored or billed.incrementalMode: true+ a stablestateKeymakes repeat calls return only new jobs — the cheapest way to poll.compact: trueanddescriptionMaxLengthcontrol payload size for LLM contexts.- No anti-bot on GulfTalent; the actor ships with a built-in proxy, so the
proxyoverride is optional. - Billing: pay-per-event — see the Pricing tab on the actor page;
enrichEmailsis billed per email found and never charged for misses.
⚠️ Disclaimer
This actor collects only publicly available job-listing data for legitimate research, lead-generation and recruitment use. Respect GulfTalent's terms of service and applicable laws (including data-protection rules) in your jurisdiction. You are responsible for how you use the scraped data.
SEO Keywords
gulftalent scraper, gulftalent.com scraper, gulftalent api, gulftalent job search api, middle east job scraper, gulf jobs data, uae jobs scraper, saudi arabia jobs scraper, qatar jobs scraper, kuwait jobs scraper, dubai jobs data, abu dhabi jobs, gulf salary data usd, recruitment data middle east, job board scraper, job alerts telegram, incremental job scraper, employer leads gulf, gulftalent export