Bayt Jobs Scraper: UAE, Saudi, Qatar, GCC (filters, alerts)
Pricing
from $1.00 / 1,000 result items
Bayt Jobs Scraper: UAE, Saudi, Qatar, GCC (filters, alerts)
Bayt scraper for gulf jobs: Bayt.com listings for UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman, Egypt and more as flat rows - title, company, city, posted date, salary, full description on demand. Paste your own filtered search URL and get monitor-mode alerts on new jobs.
Pricing
from $1.00 / 1,000 result items
Rating
0.0
(0)
Developer
Viktor Dubnytskiy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Scrape job listings from Bayt.com, the largest job site in the Middle East, across every Gulf and MENA country
it serves. Give it a keyword and a country, or paste a ready-made Bayt search URL with your own filters, and get one
flat row per job: title, company, city, posting date, salary when the employer prints it, and — with fetchDetails —
the full job description, employment type, career level, years of experience and employer industry.
What you get
One row per job: id / jobId, url, title, company, city, country, postedAt, validThrough,
employmentType, careerLevel, yearsExperience, industry, salary, description, query, page, rank,
source, scrapedAt.
id is the numeric Bayt job id, so the same job never appears twice in one dataset, and monitor mode can track it
across runs.
Example output
The first column is row 1 of the example dataset; the second is a real row from a Saudi Arabia search, showing a posting that does print a salary:
| Field | Listing row (UAE, python) | Listing row (Saudi Arabia, accountant) |
|---|---|---|
id / jobId | 5479161 | 5481835 |
title | .NET Integration Engineer | Digital Account Manager |
company | Emagine Solutions FZE | شركة الكمال للمقاولات |
city / country | Dubai / uae | As Salamah / saudi-arabia |
postedAt | 2026-08-27 | 2026-09-10 |
careerLevel | Mid career | — |
salary | — | SAR 3,750 - SAR 5,625 |
url | https://www.bayt.com/en/uae/jobs/net-integration-engineer-5479161/ | https://www.bayt.com/en/saudi-arabia/jobs/…-5481835/ |
With fetchDetails: true the same row also carries:
| Field | Example value |
|---|---|
employmentType | FULL_TIME |
validThrough | 2026-10-26T00:00:00Z |
industry | Accounting |
yearsExperience | 3+ years |
description | the employer's full job description (HTML, as Bayt publishes it) |
Input
| Field | Meaning | Default |
|---|---|---|
country | uae, saudi-arabia, qatar, kuwait, bahrain, oman, egypt, jordan, lebanon, morocco, pakistan, india, international | uae |
searches | Keywords, one per line, e.g. python, senior accountant, nurse | ["python"] |
listingUrls | Ready-made Bayt search URLs, filters and sorting included | empty |
maxPagesPerSearch | Listing pages per keyword, 30 jobs per page | 3 |
fetchDetails | Open each job page for description, employment type, industry, experience | false |
maxItems | Stop after this many rows | 100 |
mode | scrape or monitor (only new/changed since the last run) | scrape |
monitorKey, webhookUrl, telegramBotToken, telegramChatId | Monitor-mode state key and alert targets | empty |
Using your own filters
Every filter on Bayt lives in the URL. Filter a search on the site (city, date posted, career level, salary,
job type), copy the address bar into listingUrls, and the actor walks it page by page. The country of such a URL
is taken from the URL itself, so one run can mix several countries.
Job alerts (monitor mode)
Set mode: monitor and save the run as a task on a schedule. Each run compares against the previous one and returns
only new or changed jobs, keyed by job id, with the change decided on title | company | postedAt. Point
webhookUrl or the Telegram fields at your own channel and every new Gulf job matching your keywords arrives there.
You pay a monitor-check event per run plus a change event per job that actually moved.
Pricing
| Event | Price |
|---|---|
| result | $0.001 per job ($1 per 1,000) |
| monitor-check | $0.005 per monitor run |
| change | $0.001 per new/changed job |
You are charged only for rows actually pushed. Residential proxy traffic is billed by Apify on top of these events: Bayt answers datacenter IPs with a Cloudflare interstitial, so every request goes through a residential exit. Budget for it in your Apify plan; a run of a few hundred jobs is a few megabytes of residential traffic.
Limits
- Bayt serves 30 jobs per listing page, and a search tops out at the pages Bayt itself publishes. Asking for
a page past the last one redirects back to the last page, so the actor stops there by itself: setting
maxPagesPerSearchhigher than a search actually has costs nothing and returns no duplicates. salaryappears only when the employer chose to publish it — most postings do not.description,employmentType,industry,yearsExperienceandvalidThroughneedfetchDetails: true(one extra request per job, so a details run is slower and costs more proxy traffic).descriptionis the HTML Bayt publishes in itsJobPostingstructured data, tags included.- English pages only (
/en/); Arabic job titles are returned exactly as the employer wrote them. - No applicant, recruiter or contact data — this actor returns job postings and employer names, nothing person-level.
FAQ
Which countries are covered? Every country Bayt has a jobs section for: UAE, Saudi Arabia, Qatar, Kuwait,
Bahrain, Oman, Egypt, Jordan, Lebanon, Morocco, Pakistan, India, plus international.
Can I search several keywords at once? Yes — searches takes a list, and each keyword is walked separately
with its own query, page and rank on every row.
What happens when a search finds nothing? No rows are pushed and no result events are charged. The RUN_SUMMARY
record in the run's key-value store carries emptyReason, which separates Bayt's own "no jobs matching your search
criteria" answer (no_matches) from a refused request (blocked) or moved markup (source_changed).
Does it need a Bayt login? No. Only pages Bayt serves to logged-out visitors are read.
Changelog
- 0.1: initial release — 13 countries, keyword and URL searches, pagination, optional job-page details, monitor mode.
If this actor saved you time, a short review on its Store page genuinely helps other people find it. Found a bug or need a field that is missing? Open a ticket on the Issues tab.