Bayt Jobs Scraper: UAE, Saudi, Qatar, GCC (filters, alerts) avatar

Bayt Jobs Scraper: UAE, Saudi, Qatar, GCC (filters, alerts)

Pricing

from $1.00 / 1,000 result items

Go to Apify Store
Bayt Jobs Scraper: UAE, Saudi, Qatar, GCC (filters, alerts)

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

Viktor Dubnytskiy

Maintained by Community

Actor 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:

FieldListing row (UAE, python)Listing row (Saudi Arabia, accountant)
id / jobId54791615481835
title.NET Integration EngineerDigital Account Manager
companyEmagine Solutions FZEشركة الكمال للمقاولات
city / countryDubai / uaeAs Salamah / saudi-arabia
postedAt2026-08-272026-09-10
careerLevelMid career
salarySAR 3,750 - SAR 5,625
urlhttps://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:

FieldExample value
employmentTypeFULL_TIME
validThrough2026-10-26T00:00:00Z
industryAccounting
yearsExperience3+ years
descriptionthe employer's full job description (HTML, as Bayt publishes it)

Input

FieldMeaningDefault
countryuae, saudi-arabia, qatar, kuwait, bahrain, oman, egypt, jordan, lebanon, morocco, pakistan, india, internationaluae
searchesKeywords, one per line, e.g. python, senior accountant, nurse["python"]
listingUrlsReady-made Bayt search URLs, filters and sorting includedempty
maxPagesPerSearchListing pages per keyword, 30 jobs per page3
fetchDetailsOpen each job page for description, employment type, industry, experiencefalse
maxItemsStop after this many rows100
modescrape or monitor (only new/changed since the last run)scrape
monitorKey, webhookUrl, telegramBotToken, telegramChatIdMonitor-mode state key and alert targetsempty

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

EventPrice
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 maxPagesPerSearch higher than a search actually has costs nothing and returns no duplicates.
  • salary appears only when the employer chose to publish it — most postings do not.
  • description, employmentType, industry, yearsExperience and validThrough need fetchDetails: true (one extra request per job, so a details run is slower and costs more proxy traffic).
  • description is the HTML Bayt publishes in its JobPosting structured 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.