Bayt Jobs Scraper - Middle East (MENA) Job Listings avatar

Bayt Jobs Scraper - Middle East (MENA) Job Listings

Pricing

from $1.75 / 1,000 results

Go to Apify Store
Bayt Jobs Scraper - Middle East (MENA) Job Listings

Bayt Jobs Scraper - Middle East (MENA) Job Listings

Scrape jobs from Bayt.com, the #1 job site in the Middle East: title, company, location, salary, experience, employment type, posting date and full description across UAE, Saudi Arabia, Egypt, Qatar, Kuwait and 30+ MENA countries. Export to JSON, CSV, Excel.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

8 days ago

Last modified

Security

Limited permissions

Share

Bayt Jobs Scraper 🌍 — Middle East & MENA Job Listings with Salary & Full Descriptions

Extract job listings from Bayt.com — the #1 job site in the Middle East — into clean, structured data. This Bayt scraper lets you scrape Bayt.com by keyword and country and export thousands of jobs with company, company profile link, city and country, salary, years of experience, employment type, posting date, the full job description and the apply link — across the UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Jordan, Lebanon, Bahrain, Oman and 30+ MENA markets. No login, no coding.

Export to JSON, CSV, Excel, or API in one click.

Built for recruiters and sourcers, HR and talent teams, salary-benchmarking analysts, job boards and aggregators, and labour-market researchers who need fresh, structured Bayt.com job data for the Gulf and wider MENA region.

Actor Region Salary Full description Output Pagination Countries


🔎 Why scrape Bayt.com?

Bayt.com is the leading employment marketplace in the Middle East and North Africa, with tens of thousands of active vacancies across the Gulf and the wider MENA region. It is where the region's employers, recruitment agencies and government entities post roles every single day — from software engineers in Riyadh to accountants in Dubai and nurses in Doha.

That makes Bayt.com data uniquely valuable: it is the single best public window into who is hiring, for what roles, at what pay, and in which city across the Arab world. But collecting it by hand is painful — the results are paginated, salaries and experience live on separate detail pages, companies are a mix of named employers and "Confidential Company" postings, and the site is protected against casual scraping. Copy-pasting hundreds of listings into a spreadsheet simply does not scale.

This Bayt scraper does it for you. Point it at a keyword and a country (or paste a pre-filtered Bayt search URL) and it returns a clean, de-duplicated dataset you can download or pipe straight into your own tools.

Common reasons people scrape Bayt.com:

  • 🧲 Recruitment & sourcing — find every employer hiring for a role across the Gulf and reach out directly.
  • 💰 Salary benchmarking — build compensation datasets by role, country and experience level.
  • 📊 Labour-market research — measure hiring demand by country, sector, seniority and employment type.
  • 🏢 Competitive intelligence — monitor a competitor's open roles across MENA to infer growth and priorities.
  • 📰 Job boards & aggregators — feed fresh MENA vacancies into your own portal, newsletter or app.
  • 🧭 Talent-market mapping — understand which skills and titles are in demand in the UAE, Saudi Arabia, Egypt and beyond.
  • 🤖 AI & NLP pipelines — collect full job descriptions as training or enrichment data.

✨ What this Bayt scraper does

  • 🔎 Keyword + country search — type one or more job keywords (e.g. software engineer, accountant, nurse) and pick a country, or search internationally across all of them at once.
  • 🔗 Search-URL input — paste any Bayt.com search-results URL to scrape a pre-filtered result set (apply filters on Bayt, copy the URL, done).
  • 📄 Automatic pagination — walks through every result page (?page=N) until it reaches your maxItems limit, returning hundreds-to-thousands of jobs per run.
  • 🧹 De-duplicated output — each job appears once, keyed by its unique Bayt job ID, even when you combine several search terms.
  • 🏢 Company data — company name, stable company ID and profile URL (ID/URL are present for public employers; "Confidential Company" postings keep the name).
  • 📍 Location — city and country parsed straight from each listing.
  • 💰 Structured salary (detail mode) — salaryMin, salaryMax, salaryCurrency and salaryPeriod for jobs that publish pay.
  • 🧑‍💼 Experience, education & employment type (detail mode) — required yearsExperience, educationLevel and employmentType (FULL_TIME, PART_TIME, …).
  • 📝 Full job description (detail mode) — the complete description text, clean and ready for search, NLP or LLMs.
  • 🗓️ Dates & extras (detail mode) — postedDate, validThrough, jobCountryCode, totalOpenings, isDirectApply and the employer companyLogo.
  • ⬇️ Export anywhere — JSON, CSV, Excel, HTML table, RSS or via the Apify API.
  • 🛡️ Reliable — rotating sessions, browser-grade TLS fingerprints and residential-proxy support keep runs flowing past anti-bot protection.

Everything above reflects what the actor actually extracts — verified on a fresh 400-job run (see Output below).


🎯 Use cases

  • Recruiters & agencies — pull a live list of every company hiring accountants in the UAE this week and contact them first.
  • HR & compensation teams — benchmark your own salary bands against the real regional market by role and country.
  • Job boards & aggregators — keep a continuously refreshed feed of MENA vacancies flowing into your platform.
  • Market researchers & economists — quantify hiring demand across the Gulf by sector, seniority and employment type.
  • Sales & B2B lead gen — companies that are hiring are growing; use employer and role signals to time your outreach.
  • Staffing & RPO providers — map client and competitor hiring footprints across the Arab world.
  • Data & AI teams — collect thousands of full job descriptions as structured training or enrichment data.
  • Relocation & talent-mobility firms — track which roles and skills the Gulf is importing talent for.

📥 Input

The actor accepts a simple, no-code input form. Provide search terms (with an optional country), or paste Bayt search URLs, or both.

FieldTypeDescription
searchTermsarrayOne or more job keywords to search on Bayt (e.g. software engineer, accountant, sales manager). The scraper paginates through all results automatically.
countrystringCountry to search within when using search terms: international (all), or a slug like uae, saudi-arabia, egypt, qatar, kuwait, jordan, lebanon, bahrain, oman.
startUrlsarrayBayt.com search-results URLs (e.g. https://www.bayt.com/en/uae/jobs/accountant-jobs/). Scraped in addition to the search terms.
includeDescriptionbooleanFetch each job's detail page to add the full description, structured salary, employment type, experience and education. More complete, but slower. Default false.
maxItemsintegerMaximum number of jobs to collect across all search terms and URLs. Default 200.
proxyConfigurationobjectProxy settings. Residential proxies are enabled by default and recommended for reliable, uninterrupted results.

Example — by keyword & country (fast list mode)

{
"searchTerms": ["software engineer", "accountant"],
"country": "uae",
"maxItems": 200,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Example — with full descriptions & salary (detail mode)

{
"searchTerms": ["marketing manager"],
"country": "saudi-arabia",
"includeDescription": true,
"maxItems": 300,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Example — by search URL

{
"startUrls": [
{ "url": "https://www.bayt.com/en/uae/jobs/data-analyst-jobs/" }
],
"maxItems": 500
}

📤 Output

Each job is returned as a clean JSON object. List-mode fields (ID, title, URL, company, company ID/URL, city, country, posting date, snippet) are always present. Detail-mode fields (marked detail) are added when Include full description & salary is enabled. Here is a real record from a fresh run:

{
"jobId": "5503315",
"title": "React Native Mobile Developer",
"url": "https://www.bayt.com/en/saudi-arabia/jobs/react-native-mobile-developer-5503315/",
"company": "Royal Cyber KSA",
"companyId": "1768976",
"companyUrl": "https://www.bayt.com/en/company/royal-cyber-ksa-1768976/",
"city": "Riyadh",
"country": "Saudi Arabia",
"postedAgo": "10 hours ago",
"snippet": "Summary: An experienced React Native Mobile Developer is sought to design and maintain high-quality cross-platform mobile applications for iOS and Android…",
"description": "JOB DESCRIPTION React Native Mobile Developer (iOS & Android) Job Summary We are looking for an experienced React Native Mobile Developer to design, develop, test, and maintain high-quality cross-platform mobile applications…",
"salaryMin": 5000,
"salaryMax": 6000,
"salaryCurrency": "USD",
"salaryPeriod": "MONTH",
"employmentType": "FULL_TIME",
"companyLogo": "https://secure.b8cdn.com/58x58/images/logo/76/1768976_logo_264x120.png",
"postedDate": "2026-11-01",
"validThrough": "2026-12-31T00:00:00Z",
"yearsExperience": 6,
"educationLevel": "bachelor degree",
"jobCity": "Riyadh",
"jobCountryCode": "SA",
"totalOpenings": 2,
"isDirectApply": true
}

Output field reference

FieldDescription
jobIdUnique Bayt job ID — the natural key used for de-duplication.
titleJob title.
urlDirect link to the job on Bayt.com.
companyHiring company name (present for every job; may be "Confidential Company").
companyIdStable Bayt company ID — present for public employers.
companyUrlCompany profile URL — present for public employers.
cityJob city, when the listing specifies one (many international roles list only a country).
countryJob country.
postedAgoRelative posting date (e.g. "10 hours ago", "2 days ago").
snippetShort summary from the results page.
descriptionFull job description text. (detail)
salaryMin / salaryMaxStructured minimum/maximum pay. (detail, when published)
salaryCurrency / salaryPeriodPay currency (e.g. USD) and period (e.g. MONTH). (detail, when published)
employmentTypee.g. FULL_TIME, PART_TIME, CONTRACTOR. (detail)
yearsExperienceRequired experience in years. (detail, when specified)
educationLevelRequired education, e.g. "bachelor degree". (detail, when specified)
companyLogoEmployer logo image URL. (detail, when the company has a real logo)
postedDate / validThroughAbsolute posting and expiry dates (ISO). (detail)
jobCity / jobCountryCodeCity and ISO country code from the structured job posting. (detail)
totalOpeningsNumber of vacancies for the posting. (detail)
isDirectApplyWhether direct apply is available. (detail)

Field coverage (from a fresh 400-job verification run): jobId, title, url, company, snippet, postedAgo at 100%; in detail mode description, employmentType, postedDate, validThrough, jobCountryCode, totalOpenings, isDirectApply at ~98% and companyLogo at ~84%. companyId/companyUrl populate for public employers (~90%+; absent only for "Confidential Company" postings). Salary (salaryMin/salaryMax), yearsExperience and educationLevel are present when the employer publishes them — typically a minority of MENA listings, so lower fill rates here are expected and honest, not a data gap.

You can download the dataset as JSON, CSV, Excel, HTML, RSS or XML, or fetch it programmatically through the Apify API.


🔁 Pagination & scale

The scraper paginates automatically. For each search term and each start URL it opens page 1, reads every job card, then follows ?page=2, ?page=3, … until either your maxItems limit is reached or Bayt returns no new jobs. Results from multiple search terms are merged and de-duplicated by jobId, so you never get the same job twice in one run.

In practice a single run comfortably returns hundreds to a few thousand de-duplicated jobs — the fresh verification run collected 400 unique jobs with zero duplicates. Raise maxItems to collect more; lower it for quick tests. The only control you need is maxItems (the per-run ceiling); pagination depth is handled for you.


⚙️ How to use Bayt Jobs Scraper (step by step)

  1. Open the actor on the Apify Console and click Try for free / Start.
  2. Type one or more search terms and pick a country — or paste a Bayt search URL in startUrls.
  3. (Optional) Enable Include full description & salary for the richer detail fields.
  4. Set maxItems to how many jobs you want.
  5. Click Save & Start.
  6. When the run finishes, open the Dataset tab and Export to JSON, CSV or Excel — or grab it via the Apify API.
  7. Automate it: run on a schedule (hourly/daily/weekly) and push results to Google Sheets, Airtable, Slack, Zapier, Make or any webhook.

Call via API

curl -X POST "https://api.apify.com/v2/acts/haketa~bayt-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "searchTerms": ["accountant"], "country": "uae", "maxItems": 200 }'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('haketa/bayt-scraper').call({
searchTerms: ['software engineer'],
country: 'saudi-arabia',
includeDescription: true,
maxItems: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

💡 Tips

  • Start narrow, then widen. Test one keyword with a small maxItems, confirm the fields, then scale up.
  • Use country for focus. Pick a specific market (uae, saudi-arabia, …) for local hiring intelligence, or international for the whole region at once.
  • Turn on detail mode for salary & descriptions. List mode is fast and already includes company, city, country and the snippet; detail mode adds pay, experience, education and the full text.
  • Paste URLs for precise filters. Apply any filter on Bayt itself (location, category, date), then paste the resulting URL into startUrls.
  • Combine several keywords in one run — results are de-duplicated automatically, so overlapping titles won't double-count.
  • Schedule for freshness. The MENA job market moves daily; a scheduled run keeps your dataset current.

❓ FAQ

Is scraping Bayt.com legal? This actor collects only publicly available job listings for lawful purposes such as recruitment, analytics and market research. You are responsible for how you use the data — respect Bayt.com's Terms of Service and applicable data-protection laws, and don't use the data for spam.

Do I need a Bayt account or API key? No. Just provide a search term or a Bayt URL. There is no official Bayt API, so this scraper is the simplest way to get structured Bayt.com data.

How many results can I get and how fast? Hundreds to a few thousand per run. Fast list mode retrieves core fields at speed; detail mode fetches each job's page (slower) to add salary and full descriptions. A fresh 400-job detail run finished in minutes.

Which countries can I scrape? The whole MENA region — UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Jordan, Lebanon, Bahrain, Oman and more — or international to search all of them at once.

Does it include salary? Yes, for jobs that publish it. Enable Include full description & salary to get structured salaryMin / salaryMax / salaryCurrency / salaryPeriod, plus experience, education and employment type. Many MENA employers don't disclose pay, so expect salary on a subset of listings.

Does it include the full job description? Yes — enable detail mode and each job's complete description is fetched and cleaned.

Why are some company IDs missing? Some employers post as "Confidential Company" and don't expose a public profile. The company name is still captured; companyId and companyUrl appear only for public companies.

Can I filter by keyword, country or a pre-built search? Yes — use searchTerms + country, or paste any filtered Bayt search URL into startUrls.

Do I need proxies? Residential proxies are enabled by default and recommended — Bayt is protected against casual scraping, and rotating residential sessions keep runs reliable.

Are results de-duplicated? Yes. Each job is uniquely identified by its Bayt jobId and appears once per run.

What export formats are supported? JSON, CSV, Excel, HTML, RSS and XML — via the dashboard or the Apify API.

How fresh is the data? Every run returns the current live listings. Schedule the actor to keep a continuously refreshed feed.


Building a multi-region talent pipeline or a cross-board job data feed? Pair the Bayt scraper with these other job-site scrapers from the same author:

  • GulfTalent Jobs Scraper — the other major Gulf/MENA job board, ideal alongside Bayt for complete regional coverage.
  • Naukri Jobs Scraper — India's #1 job site, perfect for sourcing the large expat talent pool that moves to the Gulf.
  • Seek Jobs Scraper — leading jobs marketplace for Australia and New Zealand.
  • ZipRecruiter Scraper — high-volume US job listings with salary and company data.
  • Xing Jobs Scraper — the DACH (Germany, Austria, Switzerland) professional job network.
  • Workana Scraper — freelance and remote project listings across Latin America and beyond.

This actor is intended for lawful data collection such as market research, analytics and recruitment. You are responsible for how you use the collected data. Only collect publicly available information, respect the target website's Terms of Service and robots.txt, and comply with all applicable laws and regulations, including data-protection rules when processing any personal data. Do not use the data for spam or any unlawful purpose. This actor is an independent tool and is not affiliated with, endorsed by, or connected to Bayt.com or its subsidiaries. All trademarks belong to their respective owners.


⭐ Ready to scrape Bayt.com? Hit Start, drop in a keyword and a country, and get a clean MENA jobs dataset in minutes — exportable to JSON, CSV, Excel or API.