Bayt.com Jobs Scraper avatar

Bayt.com Jobs Scraper

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Bayt.com Jobs Scraper

Bayt.com Jobs Scraper

[πŸ’° $0.8 / 1K] Extract job listings from Bayt.com, the Middle East's largest job board β€” UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Jordan, Lebanon, Bahrain, Oman & Morocco. Search by keyword, country and city in English or Arabic. Get title, company, location, posting date, description & apply link.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

3 days ago

Last modified

Share

Pull job postings from Bayt.com β€” the Middle East's largest job board β€” across 11 country markets, in English or Arabic, with full descriptions, application deadlines, exact posting timestamps, and direct apply links. Every filter is applied by Bayt before results come back, so a narrower search is a cheaper search. Built for recruiters, talent-acquisition teams, job-market analysts, and HR-tech platforms who need fresh Gulf hiring data without maintaining a fragile in-house pipeline.

Why This Scraper?

  • 11 country markets, down to the city β€” United Arab Emirates, Saudi Arabia, Egypt, Qatar, Kuwait, Jordan, Lebanon, Bahrain, Oman, Morocco, plus an "International & worldwide" surface that spans them all. Narrow to Dubai, Abu Dhabi, Riyadh, Cairo or Doha, with or without a keyword.
  • Genuine Arabic coverage, not an English mirror β€” switch the language to Arabic and jobs come back as clean Arabic text with identical field coverage, surfacing local-language postings an English-only search never reaches.
  • Five filters plus a sort order, all applied at the source β€” date posted (past 24 hours / 7 days / 30 days), career level, employment type, work-from-home and Easy Apply are handled by Bayt itself, and you choose whether results come back Most relevant or Most recent. Filtering cuts your bill instead of inflating it: a 254-job search drops to 14 jobs with the 24-hour filter, 29 with work-from-home, 9 with Easy Apply.
  • 38 typed fields per job β€” 14 from the results page plus 19 more from the posting's own page (full description in HTML and plain text, application deadline, employment type, exact address, vacancy count, job category), plus 5 run-metadata fields stamped on every row.
  • Exact posting timestamps, not "28 days ago" β€” every row carries a true ISO 8601 postedAt next to the human-readable relative date, so you can sort, diff, and de-duplicate reliably across daily runs.
  • Up to 10,000 jobs per search β€” reaches Bayt's own per-search ceiling with clean pagination and job-ID de-duplication, so a long run never ends in repeated rows.
  • Native and syndicated postings are labelled β€” each job tells you whether it was posted directly on Bayt or aggregated from another board, and whether you can apply in one click on Bayt or get redirected to an external careers site.
  • Search links and job links in the same run β€” paste Bayt search URLs and individual job URLs together; both are collected, merged, and de-duplicated into one dataset.
  • From $0.80 per 1,000 jobs β€” flat pay-per-result, no monthly rental, no per-contact surcharges, and nothing billed for rows you filtered out.

Use Cases

Recruitment & Candidate Sourcing

  • Build a live pipeline of open roles in your specialism across the whole GCC
  • Spot which employers are hiring at volume by tracking vacancy counts per posting
  • Filter to Easy Apply roles to see where candidates convert with the least friction
  • Monitor work-from-home openings as a distinct, fast-growing segment

Job Market & Hiring Research

  • Measure hiring demand by country, city, and job category month over month
  • Track how quickly roles are posted and expire using posting dates and deadlines
  • Compare the mix of full-time versus part-time hiring across Gulf markets
  • Quantify how much of a market is native Bayt hiring versus syndicated listings

Competitive & Employer Intelligence

  • Watch a competitor's headcount plans through their live job postings
  • Detect market entries and office openings from first postings in a new city
  • Benchmark job titles, categories, and role levels against your own openings

HR Tech & Job Aggregation

  • Feed a job board or aggregator with structured Middle East listings
  • Enrich an ATS or CRM with fresh employer and role data on a schedule
  • Power job-matching and recommendation models with typed, consistent records

Relocation, Education & Policy

  • Advise relocating professionals on where demand for their skills is concentrated
  • Align training and curriculum programmes with the roles employers actually advertise
  • Study labour-market shifts across Arabic- and English-language postings

Getting Started

The minimum input β€” a keyword and a country:

{
"searchKeyword": "software engineer",
"country": "uae",
"maxResults": 50
}

Fresh Remote Roles Only

Jobs posted in the past 24 hours, work-from-home only, newest first:

{
"searchKeyword": "project manager",
"country": "saudi-arabia",
"datePosted": "3",
"remoteOnly": true,
"sortBy": "d",
"maxResults": 200
}

Arabic Listings in a Single City

Read the Arabic version of Bayt and narrow to one city:

{
"searchKeyword": "Ω…Ψ­Ψ§Ψ³Ψ¨",
"country": "egypt",
"city": "Cairo",
"language": "ar",
"maxResults": 100
}

Everything, Filtered β€” Full Advanced Run

Full-time management roles posted in the last 7 days, with complete job details:

{
"searchKeyword": "finance manager",
"country": "qatar",
"city": "Doha",
"language": "en",
"datePosted": "2",
"careerLevel": "3",
"employmentType": "1",
"easyApplyOnly": true,
"sortBy": "d",
"fetchJobDetails": true,
"maxResults": 0
}

Mix a tuned search page with individual job pages β€” both work in one run:

{
"startUrls": [
"https://www.bayt.com/en/uae/jobs/software-engineer-jobs-in-dubai/",
"https://www.bayt.com/en/international/jobs/data-analyst-jobs/"
],
"fetchJobDetails": true,
"maxResults": 500
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchKeywordstring"software engineer"Job title or keyword to search for (e.g. "accountant", "nurse", "sales manager"). Leave blank to collect every job in the selected country.
countrystring"uae"Which Bayt.com country site to search: United Arab Emirates, Saudi Arabia, Egypt, Qatar, Kuwait, Jordan, Lebanon, Bahrain, Oman, Morocco, or International & worldwide.
citystring""Narrow the search to a single city (e.g. "Dubai", "Abu Dhabi", "Riyadh", "Cairo", "Doha"). Leave blank to search the whole country.
startUrlsarray[]Paste Bayt.com job-search links or individual job links. Each link is collected as its own task and results are merged and de-duplicated. When you use this, the keyword, country and city above are ignored β€” the link already carries its own search.
languagestring"en"Which language version of Bayt.com to read: English or Arabic (Ψ§Ω„ΨΉΨ±Ψ¨ΩŠΨ©). Arabic returns the same jobs with Arabic page content where the employer provided it.

Filters

All of these are applied by Bayt.com itself before results are returned, so narrowing here genuinely lowers how many jobs you pay for. Leave any of them blank to skip that filter.

ParameterTypeDefaultDescription
datePostedstringβ€”Only collect jobs posted within this window: Past 24 hours, Past 7 days, or Past 30 days.
careerLevelstringβ€”Only collect jobs advertised at this career level: Entry Level, Mid Career, Management, or Senior Executive. Most employers leave this blank on Bayt, so this filter can return very few jobs.
employmentTypestringβ€”Only collect Full time or Part time roles. Many employers leave this blank on Bayt, so this filter can return far fewer jobs than the unfiltered search.
remoteOnlybooleanfalseOnly collect jobs Bayt flags as remote / work from home.
easyApplyOnlybooleanfalseOnly collect jobs you can apply to directly on Bayt.com, skipping listings that redirect to an external careers site.
sortBystring"r"How Bayt orders the results before they are collected: Most relevant or Most recent.

Output Detail & Limits

ParameterTypeDefaultDescription
fetchJobDetailsbooleantrueOpen each job to collect the complete description, application deadline, employment type, career level, company ID and exact address. Turn this off for a faster, lighter run that keeps only the summary shown in the search results. On very large runs a small number of jobs may skip the full details; those rows still arrive with everything from the search results page, and the run reports exactly how many.
maxResultsinteger50Hard cap on how many jobs to collect. Set to 0 to collect everything that matches. Results arrive in pages of 30 and the run always keeps the whole page it is on, so the number you receive rounds up to the next multiple of 30 β€” ask for 1 and you get 30, ask for 50 and you get 60. Set a multiple of 30 for an exact count.

Output

Each record is one job posting with 38 typed fields:

{
"jobId": "5241785",
"title": "Senior Software Engineer",
"url": "https://www.bayt.com/en/uae/jobs/senior-software-engineer-5241785/",
"summary": "Design, build and maintain backend services for a fast-growing fintech platform.",
"position": 7,
"jobCategory": "Information Technology",
"jobRoleId": "420",
"isAggregated": false,
"companyName": "Emirates Digital Solutions",
"companyId": "2382908",
"companyUrl": "https://www.bayt.com/en/uae/companies/emirates-digital-solutions-3891044/",
"logoUrl": "https://img.bayt.com/images/logos/3891044.png",
"city": "Dubai",
"country": "United Arab Emirates",
"addressLocality": "Dubai",
"addressRegion": "Dubai",
"addressCountry": "AE",
"jobLocationType": "TELECOMMUTE",
"employmentType": "FULL_TIME",
"postedAt": "2026-07-28T09:14:03+00:00",
"postedAgo": "3 days ago",
"datePosted": "2026-07-28",
"validThrough": "2026-08-27",
"easyApply": true,
"directApply": true,
"totalJobOpenings": 2,
"description": "<p>We are looking for a Senior Software Engineer to join our platform team...</p>",
"descriptionText": "We are looking for a Senior Software Engineer to join our platform team...",
"careerLevel": "Mid Career",
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"searchKeyword": "software engineer",
"searchCountry": "uae",
"searchCity": null,
"language": "en",
"scrapedAt": "2026-07-31T11:02:47+00:00"
}

Job Basics

FieldTypeDescription
jobIdstringBayt's own identifier for the posting β€” stable, and the key used to de-duplicate rows.
titlestringJob title as advertised.
urlstringDirect link to the job page on Bayt.com.
summarystring | nullShort snippet shown on the search results card.
positioninteger1-based rank of this job within its search.
jobCategorystring | nullCategory assigned by Bayt (e.g. "Information Technology"). Not set on every posting.
jobRoleIdstring | nullBayt's internal role identifier, useful for grouping similar titles.
isAggregatedboolean | nullfalse for jobs posted natively on Bayt, true for listings syndicated from another board.

Company

FieldTypeDescription
companyNamestringHiring company, or "Confidential Company" when the employer stays anonymous.
companyIdstring | nullBayt's internal company identifier. Published on most directly-posted jobs and a small share of syndicated ones. It is a different identifier from the number inside companyUrl β€” the two usually do not match, so join on companyUrl if you need the profile page.
companyUrlstring | nullLink to the employer's Bayt company profile. Published on directly-posted jobs; syndicated postings rarely carry one.
logoUrlstring | nullCompany logo image URL.

Location & Work Setting

FieldTypeDescription
citystring | nullCity shown on the search results card.
countrystring | nullCountry shown on the search results card.
addressLocalitystring | nullCity as declared by the employer on the job page.
addressRegionstring | nullRegion or emirate as declared by the employer.
addressCountrystring | nullTwo-letter country code (e.g. AE, SA, EG).
jobLocationTypestring | nullSet to TELECOMMUTE when the employer flags the role as remote.
employmentTypestring | nullEmployer-declared type, e.g. FULL_TIME or PART_TIME.

Dates & Application

FieldTypeDescription
postedAtstring | nullExact ISO 8601 posting timestamp β€” the field to sort and diff on.
postedAgostring | nullHuman-readable relative date exactly as Bayt shows it (e.g. "3 days ago").
datePostedstring | nullPublication date declared by the employer on the job page.
validThroughstring | nullApplication deadline, when the employer publishes one.
easyApplybooleantrue when the search card carries Bayt's Easy Apply badge.
directApplyboolean | nulltrue when the job page confirms you can apply on Bayt rather than an external site.
totalJobOpeningsinteger | nullNumber of vacancies for this posting. Published on native postings only.

Description, Level & Pay

FieldTypeDescription
descriptionstring | nullFull job description with the employer's original HTML formatting.
descriptionTextstring | nullSame description as clean plain text, ready for analysis or search indexing.
careerLevelstring | nullEntry Level, Mid Career, Management or Senior Executive. Optional β€” around 10% of employers fill it in.
salaryMinnumber | nullLower bound of the published salary range. Optional β€” Gulf employers rarely publish pay, so expect this on only a small share of rows.
salaryMaxnumber | nullUpper bound of the published salary range. Optional, same low publication rate.
salaryCurrencystring | nullCurrency of the published range (e.g. AED, SAR). Optional.
salaryPeriodstring | nullPeriod the range refers to, e.g. monthly or yearly. Optional.

Run Metadata

FieldTypeDescription
searchKeywordstring | nullThe keyword that produced this row.
searchCountrystring | nullThe country market this row came from.
searchCitystring | nullThe city narrowing applied, if any.
languagestringen or ar β€” which language version produced the row.
scrapedAtstringISO 8601 timestamp of when the row was collected.

Detail fields (description through salaryPeriod, plus companyId, the address fields, validThrough, directApply, totalJobOpenings and jobLocationType) are populated only when fetchJobDetails is on. With it off, those columns stay empty and the run finishes several times faster.

Tips for Best Results

  • Run daily monitoring with the 24-hour window β€” set datePosted to Past 24 hours and sortBy to Most recent, then schedule the run each morning. You get only what appeared since yesterday, so cost stays flat as the market grows.
  • Split a big search by city to beat the 10,000-job ceiling β€” Bayt never serves more than about 10,000 jobs for a single search. A nationwide query that hits the ceiling can be reproduced in full by running it once per major city (Dubai, Abu Dhabi, Sharjah…) and merging the results.
  • Search in Arabic to find postings English misses β€” many regional employers advertise only in Arabic. Setting language to Arabic with an Arabic keyword returns a different pool of jobs, not a translation of the same one.
  • Go wide with "International & worldwide" β€” it is by far the largest surface and pulls from every country at once. Use it for broad market studies, then re-run per country when you need clean geographic segmentation.
  • Be careful with careerLevel and employmentType β€” most Bayt employers leave both blank, so these filters can cut a healthy result set down to a handful of jobs. Collect unfiltered and segment afterwards when you need volume.
  • Turn off fetchJobDetails for reconnaissance runs β€” the search card alone gives you title, company, city, exact posting time, Easy Apply status and the job link. Switch details back on once you know which searches are worth the full description.
  • Tune your search in the browser, then paste the link β€” anything you can filter on Bayt.com's own site can be dropped straight into startUrls, and you can mix search pages and individual job pages in the same run.

Pricing

From $0.80 per 1,000 results β€” flat pay-per-job, below the usual Middle East job-data rates, with no per-contact surcharges. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.095$0.090$0.085$0.080
1,000$0.95$0.90$0.85$0.80
10,000$9.50$9.00$8.50$8.00
100,000$95.00$90.00$85.00$80.00

A "result" is one job posting row in your dataset, whether or not you enable full job details. No compute or time-based charges β€” you pay per result, plus a small fixed per-run start fee.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n β€” Workflow automation
  • Google Sheets β€” Direct spreadsheet export
  • Slack / Email β€” Notifications on new results
  • Webhooks β€” Trigger your own systems when a run completes
  • Apify API β€” Full programmatic access

This actor collects job postings that Bayt.com publishes openly for candidates to browse. It is intended for legitimate recruitment, labour-market research, and business intelligence. You are responsible for complying with applicable laws and Bayt.com's Terms of Service, and for handling any personal data in the results β€” including named contacts inside job descriptions β€” in line with regulations such as GDPR and local data-protection law. Do not use collected data for spam, harassment, discriminatory hiring practices, or any unlawful purpose.