MENA Jobs Scraper — Bayt, GulfTalent, NaukriGulf & Akhtaboot
Pricing
from $2.00 / 1,000 job records
MENA Jobs Scraper — Bayt, GulfTalent, NaukriGulf & Akhtaboot
Job postings from Bayt, GulfTalent, NaukriGulf and Akhtaboot in one normalized schema: title, company, location, salary, seniority, function. Cross-board duplicates merged. Optional: only jobs posted since your last run.
Pricing
from $2.00 / 1,000 job records
Rating
0.0
(0)
Developer
Al Moutasem Nabil
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
4
Monthly active users
6 days ago
Last modified
Categories
Share
MENA Jobs Scraper — Bayt, GulfTalent, NaukriGulf & Akhtaboot (Deduplicated)
Job postings from Bayt, GulfTalent, NaukriGulf and Akhtaboot in one normalized schema: title, company, location, salary, seniority, function. Cross-board duplicates merged. Optional: only jobs posted since your last run.
وظائف الخليج والأردن من أربع منصات في مكان واحد — بيت.كوم، جلف تالنت، نوكري جلف وأخطبوط. نتائج موحّدة، بدون تكرار، مع الراتب وتصنيف المستوى الوظيفي والمجال. السعودية، الإمارات، قطر، الكويت، البحرين، عُمان، الأردن، مصر، لبنان.
Who it's for
- Gulf recruiters and agencies watching what competitors are hiring for, without opening four tabs.
- HR-tech products that need a clean, normalized job feed instead of four different schemas.
- Salary-report and market analysts tracking pay ranges and which functions and seniority levels are in demand, by country.
- Job aggregators that want one deduplicated feed rather than four overlapping ones.
What makes it different
Single-board scrapers already exist. The layer on top does not:
- Four boards, one schema. Every posting comes back with the same fields whichever board it came from.
- Cross-board deduplication. The same vacancy posted to Bayt and GulfTalent returns once,
with both URLs under
boards. Matching is on normalized company + title + country + city, plus a Jaro-Winkler similarity check that catches "Senior iOS Developer", "Senior iOS Developer (m/f)" and "senior ios developer - urgent" as one job. - Arabic-aware. Titles and companies are normalized across alef forms, taa marbuta, yaa and tashkeel, so Arabic postings deduplicate as reliably as English ones.
- Classified. Function (13 classes), seniority (10 levels), employment type and remote/onsite from the title and posting text; relative dates ("3 days ago", "12 Sep", "منذ ٥ أيام") become timestamps.
- Normalized salary. Salaries as boards publish them ("SAR 7,500 - SAR 11,250") become across all eight MENA currencies plus USD, with the original text kept in{ min, max, currency, period }
salary.raw. Bayt is the board that publishes salaries; the others returnnull. - New since last run. Change mode emits only
job_added,job_removedandjob_updated. - Explicit results. A board that cannot be read, or that has nothing matching, gets a free status
row that says why; a quiet change-mode run gets one free
no_changesrow.
Input
This is the Console prefill: the four boards for Saudi Arabia, the UAE and Jordan, jobs posted in the last 7 days, 10 per board. It finishes in about 10 seconds:
{"keywords": [],"countries": ["SA", "AE", "JO"],"boards": ["bayt", "gulftalent", "naukrigulf", "akhtaboot"],"postedWithinDays": 7,"maxJobsPerBoard": 10,"proxyConfiguration": {"useApifyProxy": true}}
Add keywords (Arabic or English), functions, seniority or employmentType to narrow the feed,
and raise maxJobsPerBoard for real pulls. GulfTalent and Akhtaboot filter keywords locally, so a
narrow keyword needs a higher maxJobsPerBoard to find matches.
Output
One item per unique vacancy. Every field is documented in .actor/dataset_schema.json; the Console
shows Jobs and New jobs views. A real record from the example input above:
{"jobKey": "tri-interiors|sales-executive|AE|Dubai","title": "Sales Executive","titleNormalized": "sales executive","company": "TRI INTERIORS LLC","companyNormalized": "tri interiors","location": {"raw": "Dubai - United Arab Emirates (UAE)","city": "Dubai","country": "AE"},"remote": "unknown","function": "sales","seniority": "mid","employmentType": "unknown","salary": null,"postedAt": "2026-09-12T19:34:49.000Z","boards": [{"board": "naukrigulf","url": "https://www.naukrigulf.com/sales-executive-jobs-in-dubai-uae-in-tri-interiors-llc-0-to-4-years-n-cd-371433-jid-120926001944","postedAt": "2026-09-12T19:34:49.000Z","boardJobId": "120926001944"}],"description": null,"language": "en","firstSeenAt": "2026-09-13T01:32:27.668Z","lastSeenAt": "2026-09-13T01:32:27.668Z","scrapedAt": "2026-09-13T01:32:27.668Z"}
When the same vacancy appears on several boards, boards lists one entry per board (URL, board job id
and the board's own posted date) and the item is charged once.
Boards that could not be read appear as free board_error rows with board and error, and boards
that were read but had nothing matching appear as free no_jobs rows, for example
{ "type": "no_jobs", "board": "akhtaboot", "error": "20 postings fetched, but none match your keywords, countries or filters" }.
Sample output
Real items from the example input above (a Bayt job with its salary, a GulfTalent job and a NaukriGulf job), verified on the Apify platform in September 2026. Long text and lists are shortened for this page; field names and values are otherwise exactly as the Actor returns them.
[{"jobKey": "masaratdx|مسوول-مبيعات|SA|Riyadh","title": "مسؤول مبيعات","titleNormalized": "مسوول مبيعات","company": "MasaratDX","companyNormalized": "masaratdx","location": {"raw": "Riyadh, Saudi Arabia","city": "Riyadh","country": "SA"},"remote": "unknown","function": "other","seniority": "mid","employmentType": "unknown","salary": {"min": 7500,"max": 11250,"currency": "SAR","period": "month","raw": "SAR 7,500 - SAR 11,250"},"postedAt": "2026-09-13T17:57:50.112Z","boards": [{"board": "bayt","url": "https://www.bayt.com/en/saudi-arabia/jobs/%D9%85%D8%B3%D8%A4%D9%88%D9%84-%D9%85%D8%A8%D9%8A%D8%B9%D8%A7%D8%AA-5482458/","postedAt": "3 hours ago","boardJobId": "5482458"}],"description": null,"language": "mixed","firstSeenAt": "2026-09-13T20:57:45.919Z","lastSeenAt": "2026-09-13T20:57:45.919Z","scrapedAt": "2026-09-13T20:57:45.919Z"},{"jobKey": "isc-cx|mystery-shopper|SA|","title": "Mystery Shopper","titleNormalized": "mystery shopper","company": "ISC-CX","companyNormalized": "isc cx","location": {"raw": "Saudi Arabia","city": null,"country": "SA"},"remote": "unknown","function": "other","seniority": "mid","employmentType": "unknown","salary": null,"postedAt": "2026-09-12T00:00:00.000Z","boards": [{"board": "gulftalent","url": "https://www.gulftalent.com/saudi-arabia/jobs/mystery-shopper-632495","postedAt": "12 Sep","boardJobId": "632495"}],"description": null,"language": "en","firstSeenAt": "2026-09-13T20:57:45.919Z","lastSeenAt": "2026-09-13T20:57:45.919Z","scrapedAt": "2026-09-13T20:57:45.919Z"},{"jobKey": "saona-restaurant|head-hostess-head-host|AE|Dubai","title": "Head Hostess / Head Host","titleNormalized": "head hostess head host","company": "Saona restaurant","companyNormalized": "saona restaurant","location": {"raw": "Dubai - United Arab Emirates (UAE)","city": "Dubai","country": "AE"},"remote": "unknown","function": "other","seniority": "director","employmentType": "unknown","salary": null,"postedAt": "2026-09-13T20:22:58.000Z","boards": [{"board": "naukrigulf","url": "https://www.naukrigulf.com/head-hostess-head-host-jobs-in-dubai-uae-in-saona-restaurant-3-to-8-years-n-cd-371521-jid-130926001942","postedAt": "2026-09-13T20:22:58.000Z","boardJobId": "130926001942"}],"description": null,"language": "en","firstSeenAt": "2026-09-13T20:57:45.919Z","lastSeenAt": "2026-09-13T20:57:45.919Z","scrapedAt": "2026-09-13T20:57:45.919Z"}]
Pricing
Pay-per-event. You pay for boards actually read and jobs actually returned.
| Event | Price | When |
|---|---|---|
| Board checked | $0.005 | Per board fetched successfully. A blocked board is free. |
| Job record | $0.002 | Snapshot mode, per unique job — a role on two boards is one charge. |
| Change detected | $0.01 | Change mode, per change event. |
- The example input above (4 boards, about 33 unique jobs): 4 × $0.005 + 33 × $0.002 = $0.086.
- Weekly pull of all accountant jobs in SA + AE, ~300 unique jobs across 4 boards: 4 × $0.005 + 300 × $0.002 = $0.62 per run.
- Daily new-jobs feed, 4 boards, quiet day: $0.02. With 12 new jobs: $0.14.
Apify's apify-actor-start fee and platform compute are billed separately. Default memory 512 MB.
Bayt only goes through Apify residential proxies (it blocks datacenter IPs); a Bayt listing page holds
about 30 jobs, so that traffic measured 2–3 KB per job on the platform, about $0.02 per 1,000 Bayt jobs at
Apify's $8/GB residential rate. Leave bayt out of boards to avoid it.
Scheduling, integrations and API
- Fill in the input, Save as task, then add a Schedule — daily at 07:00 is typical.
- Turn on Emit changes only with a Tracking ID so each run returns only what is new.
- Under Integrations, push results to Slack, Google Sheets, a webhook, Make or Zapier on
Run succeeded. In change mode a run where nothing changed contains a single free
no_changesrow. - Standby mode answers synchronously, which is what an AI agent wants:
GET https://almoutasem-nabil--mena-jobs-aggregator.apify.actor/?keywords=accountant&countries=SA,AE&postedWithinDays=7with the headerAuthorization: Bearer <your Apify token>. The response is JSON withitems,changesanderrors.
State lives in the named key-value store mena-jobs-state, one record per tracking ID; delete it to
reset a watch list.
Per-board notes and limitations
- Bayt — server-rendered listings with title, company, city and country, salary where the employer publishes it, and a relative posting date. Bayt's Cloudflare blocks datacenter IPs and challenges a share of residential ones, so Bayt requests go through US residential proxies, are paced to one per second and are retried on fresh IPs. Some postings are confidential and carry no company name.
- NaukriGulf — uses the site's own JSON search API. Carries a posting date; mostly UAE and Saudi roles.
- GulfTalent — server-rendered country listings (title, company, country, posting date). Keyword filtering happens locally, so a narrow keyword search fetches more rows than it returns.
- Akhtaboot — read from the per-country RSS feeds the site publishes. No city, and no keyword parameter, so keywords are filtered locally. Strongest for Jordan.
- Salary comes from Bayt only; GulfTalent, NaukriGulf and Akhtaboot publish none in their listings.
- Change detection is relative to your filters. Changing
keywords,countriesorboardsbetween runs will look like added and removed jobs.
Related
Watching specific employers rather than whole boards? ../hiring-signals-monitor tracks named companies' own career pages through their ATS and reports new roles, removed roles and hiring surges.
Legal note
The Actor reads publicly listed job postings — the same pages any visitor sees — and Akhtaboot's own published RSS feeds. It never logs in and sends no cookies. It collects business data only: company names, titles, locations and salaries. It never collects recruiter names, emails or phone numbers, and drops such fields where a board's payload includes them. Requests are paced and concurrency is capped per board. Use the data in line with each board's terms and the laws that apply to you. Bayt, GulfTalent, NaukriGulf and Akhtaboot are trademarks of their owners; this Actor is not affiliated with them.
Roadmap
Not available yet:
- Wuzzuf. Its Cloudflare challenge refuses requests from the Apify platform with datacenter and residential proxies and does not clear in a headless browser, so it cannot be offered reliably today.