Bayt Jobs Scraper avatar

Bayt Jobs Scraper

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Bayt Jobs Scraper

Bayt Jobs Scraper

Scrapes job listings from any Bayt.com search in the UAE, Saudi Arabia, Egypt, Qatar, Kuwait and the other Bayt countries, in English or Arabic, with every filter kept: title, company, location, salary, career level, experience, remote, posted date and full description.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Mina

Mina

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

7 days ago

Last modified

Share

What does Bayt Jobs Scraper do?

Bayt Jobs Scraper collects job listings from Bayt.com, the largest job site in the Middle East and North Africa. It works with any Bayt search in the UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Bahrain, Oman, Jordan, Lebanon, Morocco, Algeria, Tunisia, Iraq, Libya, Pakistan, India or International, on the English or Arabic site. Search on Bayt as you normally would, paste the link, and get every job as a clean row: title, company, company page and logo, city and country, monthly salary range with numbers and currency, career level, years of experience, remote or hybrid, nationals-only flag, posted date, Bayt's short summary, and on request the full job description, employment type, number of openings and closing date.

Every filter in your link is kept: keywords, city, career level, date posted, employment type, company, industry, gender, sort order and anything else Bayt puts in the address. Arabic searches come back in Arabic, exactly as Bayt shows them.

Try it with the prefilled search: open the Actor, click Start, and 25 UAE software engineer jobs are ready in a few seconds. Running on the Apify platform also gives you API access, scheduled runs, integrations (Google Sheets, Make, Zapier, Slack, webhooks) and run monitoring.

Why scrape Bayt?

  • Salary benchmarking across the Gulf. Bayt shows monthly salary bands in local currency (AED, SAR, QAR, EGP and others). The Actor turns them into numbers you can sort and average, with the original text kept alongside.
  • Labour market research. Track demand by country, city, career level and experience, including jobs reserved for UAE or Saudi nationals.
  • Recruitment and sales leads. See which companies are hiring in the region, for what, and where.
  • Job aggregation. Feed a niche job board, newsletter or internal tool with fresh, structured listings in English and Arabic.
  • Monitoring. Schedule a daily run on a newest-first search and keep only the job IDs you have not seen.

How to scrape Bayt jobs

  1. Open bayt.com, pick the country and language, and search: type the job title, choose a city, then set any filters (career level, date posted, employment type, company, industry, remote).
  2. Copy the address from your browser's address bar, for example https://www.bayt.com/en/uae/jobs/software-engineer-jobs/.
  3. Paste it into Bayt search links. Add as many links as you like, one per line; countries and languages can be mixed.
  4. Set Max jobs per search link, and turn on Include full job descriptions if you need them.
  5. Click Start, then download the results as JSON, CSV, Excel or HTML.

Input

Everything is set on the Input tab. In JSON, the input looks like this:

{
"search_urls": [
"https://www.bayt.com/en/uae/jobs/software-engineer-jobs/",
"bayt.com/ar/saudi-arabia/jobs/accountant-jobs/",
{ "url": "https://www.bayt.com/en/egypt/jobs/sales-jobs/?filters%5Bjb_last_modification_date_interval%5D%5B%5D=3" }
],
"max_results_per_search": 100,
"include_description": false
}
FieldWhat it does
search_urlsBayt search results links, one per line, on any country and on the English (/en/) or Arabic (/ar/) site. https:// is optional. API callers can also send {"url": "…"} objects. Single job ads and company pages are not searches; they are listed in FAILED_INPUTS with the reason.
max_results_per_searchStops after this many jobs from each search link. Default: 100. Bayt shows 30 jobs per page and the Actor reads pages until it has enough or the search runs out.
include_descriptionOpens each job's own page to add the full description, employment type, number of openings and closing date. Default: off. It takes one extra request per job, so it is slower and charged a little extra per job (see the Pricing tab).
proxy_configurationLeave empty. Bayt's Cloudflare protection turns away most cloud addresses, so the Actor tries a direct connection and Apify's datacenter proxy first and falls back to Apify's residential proxy on its own. Choosing a proxy sends every request through it.

Which filters are kept?

All of them: the Actor keeps the link exactly as you pasted it and only changes the page number. Some examples of what Bayt puts in its links:

On BaytIn the link
Country and language/en/uae/, /ar/saudi-arabia/, /en/international/
Keywords and city/software-engineer-jobs-in-dubai/
Remote jobs/remote-jobs/
Date postedfilters[jb_last_modification_date_interval][]=3
Career levelfilters[jb_career_level_id_original][]=2
Employment typefilters[jb_employment_type][]=1
Companyfilters[employer_company_name][]=michael page
Sort orderoptions[sort][]=d (newest first)

The page number in a link is ignored: every search starts from its first page.

Output

Each job becomes one row. Here is a real one, with the summary and description shortened:

{
"job_id": "5483975",
"url": "https://www.bayt.com/en/uae/jobs/technical-product-engineer-backend-full-stack-ai-enabled-5483975/",
"title": "Technical Product Engineer – Backend / Full Stack (AI-Enabled)",
"company": "Matajer AI",
"company_url": "https://www.bayt.com/en/company/matajer-ai-2318804/",
"company_logo": "https://secure.b8cdn.com/70x70/images/logo/04/2318804_logo_1789704012_n.png",
"location": "Ajman, UAE",
"city": "Ajman",
"country": "UAE",
"posted_at": "2026-09-19T14:52:24Z",
"salary": "AED 11,018 - AED 14,690",
"salary_min": 11018,
"salary_max": 14690,
"salary_currency": "AED",
"career_level": "Mid career",
"experience": "2-6 Years of Experience",
"experience_min_years": 2,
"experience_max_years": 6,
"work_arrangement": null,
"citizenship": null,
"is_featured": false,
"easy_apply": true,
"summary": "A high-impact opportunity exists for a hands-on Technical Product Engineer specializing in Backend and Full Stack development...",
"description": "💼 Job Description\n\nTechnical Product Engineer – Backend / Full Stack (AI-Enabled)\n\nMatajer AI is looking for a hands-on Technical Product Engineer...",
"employment_type": "FULL_TIME",
"openings": 2,
"valid_through": "2026-10-19T00:00:00Z",
"search_position": 4,
"search_url": "https://www.bayt.com/en/uae/jobs/software-engineer-jobs/",
"scraped_at": "2026-10-10T14:05:02Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The Output tab has two views: Jobs (the main columns) and Full details.

Data fields

FieldDescription
job_idBayt's job number.
urlLink to the job ad, on the same site language as your search.
titleJob title, as shown (Arabic on the Arabic site).
companyCompany name. "Confidential Company" when the employer hides it.
company_urlThe company's Bayt page. Empty for confidential employers and for jobs Bayt collected from other sites.
company_logoThe company logo. Empty when Bayt shows a placeholder.
locationThe location exactly as Bayt shows it, for example "Al Olaya, Riyadh, Saudi Arabia".
city, countryThe city (empty when the job names only a country) and the country, in the site's language.
posted_atWhen the job was posted or last refreshed on Bayt, in UTC.
salaryThe monthly salary band as Bayt shows it, converted by Bayt into the country's currency. Empty when the employer hides it.
salary_min, salary_maxThe band as numbers (per month).
salary_currencyAED, SAR, EGP, QAR, … or USD for "$".
career_levelSuch as "Entry level", "Mid career", "Management", when the employer gave it.
experienceYears of experience as shown, such as "2-6 Years of Experience".
experience_min_years, experience_max_yearsThose years as numbers, smallest first, even where an Arabic card writes the range highest first ("4-0 سنوات من الخبرة" gives 0 and 4).
work_arrangement"Remote" or "Hybrid" (or the Arabic words) when Bayt labels the job so; empty otherwise.
citizenshipWho may apply when the job is reserved, such as "UAE nationals" or "Saudi nationals".
is_featuredtrue for jobs Bayt shows as featured.
easy_applytrue when the job can be applied for with Bayt's Easy Apply.
summaryBayt's short summary of the job shown in search results.
descriptionThe full job description as plain text (only with Include full job descriptions).
employment_typeFULL_TIME, PART_TIME, CONTRACTOR, … as Bayt states it on the job page (only with descriptions).
openingsNumber of open positions, when the employer gave one (only with descriptions).
valid_throughWhen the ad closes, in UTC (only with descriptions).
search_positionThe job's place in your search, starting at 1.
search_urlThe search link that found this job.
scraped_atWhen the job was collected, in UTC.

The four description fields are left out of the rows entirely when descriptions are off. A job whose page could not be read, or has no description, is still saved with an empty description and is not charged the description price; the run's status message says how many.

How much does it cost to scrape Bayt?

The Actor uses pay-per-event pricing: you pay a small fixed price for each job saved, and a small extra price for each job saved with its full description. The exact prices are on the Pricing tab.

Descriptions cost extra because Bayt shows 30 jobs on a results page but one job per job page: a run with descriptions makes about 30 times as many requests, all through residential proxies.

You are never charged for links that return nothing: a search with no jobs, a page that does not exist or a link that is not a Bayt search is listed in the run's FAILED_INPUTS record instead. If you set a maximum cost for a run, the Actor stops as soon as it is reached.

Tips for scraping Bayt

  • Let Bayt filter for you. Narrow the search on Bayt before copying the link. Bayt applies the filters itself, so you only collect (and pay for) matching jobs.
  • Monitor new jobs. Sort by date (options[sort][]=d) and choose a recent "date posted" filter, schedule the Actor daily, and drop job IDs you already have.
  • Skip descriptions when you can. Titles, companies, salary, level, experience, location and Bayt's summary all come from the results pages; leave descriptions off for runs that are faster and cheaper.
  • Arabic and English. The same search on /ar/ returns the same jobs with Arabic titles, places and labels; descriptions are Bayt's own Arabic text.
  • Each job is saved once per run, even when several of your links find it.

FAQ, disclaimers and support

Which Bayt links work? Search results pages on any Bayt country and on both the English and Arabic sites. Single job ads, company pages and Bayt's "Work from Home Jobs" directory are not lists of jobs; they are listed in FAILED_INPUTS with the reason, and so is any other page that turns out not to be a list of jobs. For remote jobs, use a search link such as https://www.bayt.com/en/uae/jobs/remote-jobs/.

Why do many jobs have no salary or career level? Employers choose what to show. The Actor fills these fields only when Bayt shows them and never estimates them.

What are jobs without a company page? Some listings are collected by Bayt from employers' own career sites. They have a company name but no Bayt company page, and their ads link back to the employer.

What happens to links that return nothing? They are not saved as rows, so you are not charged for them. Each is listed with its reason in the FAILED_INPUTS record of the run's key-value store, and the run's status message gives the counts. A run fails only when Bayt could not be reached for any of your links.

Is it legal to scrape Bayt? This Actor collects job listings that employers publish publicly so that people can find and apply for them. It does not log in and collects no personal data about job seekers or recruiters. Job ads can still contain contact details written by the employer, and their text belongs to the employer. You are responsible for making sure your use complies with Bayt's terms and with the laws that apply to you, such as privacy and copyright rules for republishing ads. If in doubt, ask a lawyer.

Found a problem or need something custom? Open an issue on the Issues tab and we will look into it. Custom scrapers and job data feeds are available on request.