Bayt Jobs Scraper — Gulf listings with nationality requirements
Pricing
$5.00 / 1,000 job scrapeds
Bayt Jobs Scraper — Gulf listings with nationality requirements
Scrape Bayt job listings across the Gulf and wider MENA with the two things a raw listing hides: whether the role is restricted to nationals (Emiratisation / Saudization), and how stale the posting is in days rather than "19 days ago". Unofficial; not affiliated with Bayt.
Pricing
$5.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Entrogix Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape Bayt job listings across the Gulf and wider MENA, with the two things a raw listing hides: whether the role is restricted to nationals, and how old the posting actually is in days rather than "19 days ago".
Unofficial. Not affiliated with, endorsed by, or connected to Bayt.
Why this one
Gulf hiring runs on nationalisation policy. Emiratisation and Saudization quotas mean a meaningful share of postings are open only to nationals — and if you're an expat searching, or a recruiter tracking quota-driven demand, that single fact decides whether the listing matters at all. It's written in prose inside the posting, not as a field you can filter on.
| Field | What it answers |
|---|---|
nationalityRestrictionMentioned | Is this nationals-only? |
nationalityRestrictionPhrase | Which words said so — audit it yourself |
postedDaysAgo | Sortable, filterable age |
isStale | Older than 30 days |
country / city | Split from the location line, for cross-market comparison |
The flag is a floor, and it says so
Detection reads the listing page only — the title and the summary Bayt shows there,
not the full posting. So true is reliable, false is not proof the role is open.
That's why the field is named …Mentioned rather than isRestricted, and why the
matched phrase ships alongside it. A confident-sounding field that quietly misses cases
is worse than an honest one.
Measured on a live page: 3 of 30 listings carried an explicit requirement.
What is deliberately not here
Salary. Bayt listings almost never publish it — measured at 1 in 30. Building a salary feature on that would mean advertising a column that is empty 97% of the time.
Contact details. No recruiter emails, names, or phone numbers, and no enrichment that adds them. Job listings are company data; the moment you attach people to them it becomes something else.
What you get
Per job: title, company, city, country, the location line as shown, the nationality flag and its matched phrase, days since posting, the stale flag, the listing snippet, and URL.
A GULF_SUMMARY record per run: total jobs, how many mentioned a nationality
requirement and at what rate, median days since posting, how many are over 30 days old,
what share of dates parsed cleanly, the top hiring companies, and the country breakdown.
Coverage
uae, saudi-arabia, qatar, kuwait, bahrain, oman, egypt, jordan,
lebanon, morocco. Run once per country to compare markets — the summary is per run,
so keeping countries separate keeps the medians meaningful.
Reliability
Success rate was measured before this Actor was written: 10/10 through the same browser path used in production, across two countries. It is monitored twice daily against a live page.
Proxy settings were measured too, not assumed: no proxy 0/6, datacenter 6/6. The default is datacenter, which costs a fraction of residential. Escalate only if you see blocks.
Input
{"queries": ["data analyst", "software engineer"],"country": "uae","maxItemsPerQuery": 60}
Plain search terms become Bayt list URLs for the chosen country. You can also pass full
list URLs if you've already filtered on the site, in which case country is ignored.
Billing
Pay per event: one job-scraped event per job actually delivered to your dataset.
Duplicates are removed before charging, and a run that returns nothing costs nothing.