Bayt.com Scraper — MENA Job Listings avatar

Bayt.com Scraper — MENA Job Listings

Pricing

from $0.60 / 1,000 results

Go to Apify Store
Bayt.com Scraper — MENA Job Listings

Bayt.com Scraper — MENA Job Listings

Extract job listings from Bayt.com, the leading job board in the Middle East. Search by keyword, location, country and job type across 10 MENA portals. Returns salary, career level, skills, company data and full descriptions, with 90-day dedup for incremental feeds. $0.75/1,000.

Pricing

from $0.60 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

25

Total users

5

Monthly active users

19 hours ago

Last modified

Share

Bayt.com Scraper

Bayt.com Scraper

Extract job listings from Bayt.com — the largest job site in the Middle East — in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. Search across ten Gulf and MENA country portals. No API key required.


Why this scraper?

🎯 Built for the Middle East & Gulf

Ten country portals (UAE, Saudi Arabia, Kuwait, Qatar, Bahrain, Oman, Egypt, Jordan, Lebanon, plus International). Search, filters and multi-currency salary parsing are tuned for Bayt.com.

📄 Complete job data

Job title, company, location, apply URL and posting date on every record. Turn on full details for the complete description in HTML, plain text and Markdown, plus skills and requirements.

💶 Structured salary

Minimum, maximum, currency (AED, SAR, KWD, QAR and more) and pay period, parsed from the listing where the employer publishes it. Missing salaries return null, never guessed.

🏢 Company & requirement fields

Company name, size, industry and profile link, plus the requirement fields the source publishes — career level, years of experience, and preferred nationality/gender where stated.

🔁 Incremental feeds

A persistent 90-day deduplication store means scheduled runs can skip jobs seen in previous runs (skipReposts) and every record is flagged with isRepost.


Input parameters

ParameterTypeDefaultDescription
searchQuerystring"developer"Job search keywords (e.g. 'software engineer', 'marketing manager'). Leave empty to browse all jobs in the country.
locationstring(empty)City or region to filter by (e.g. 'Dubai', 'Riyadh', 'Cairo').
countrystring"UAE"Which Bayt.com country portal to search. Use INTERNATIONAL for cross-country discovery.
jobTypestring"ANY"Filter by employment type: Any, Full time, Part time, Contract/Temp or Freelance.
daysOldinteger0Only include jobs posted within this many days. 0 = no limit.
fetchDetailsbooleanfalseFetch each job's full detail page (description, skills, requirements, exact location). Makes an extra request per job, billed as a premium event on top of the base result price. Leave off for fast, low-cost listing data.
skipRepostsbooleanfalseSkip jobs already returned in a previous run (persistent 90-day deduplication by job ID). Useful for scheduled/incremental scraping.
startUrlsarray(empty)Optional list of Bayt.com search or job detail URLs to scrape directly. Overrides keywords and location.
maxItemsinteger5Maximum number of job listings to return. 0 = unlimited (up to 10,000).

Output schema

Fields the source does not publish for a given job are returned as null rather than omitted.

Always present (listing data)

FieldTypeDescription
jobIdstringBayt.com listing ID
titlestringJob title
companystring | nullHiring company name (null when the employer is confidential)
companyUrlstring | nullLink to the company's page on Bayt.com
locationstring | nullLocation as displayed, e.g. Dubai, UAE
citystring | nullCity, e.g. Dubai
countrystringCountry portal searched, e.g. UAE
employmentTypestring | nulle.g. Full Time, Contract, Freelance
careerLevelstring | nulle.g. Entry Level, Mid career, Management (null when not stated)
salaryTextstring | nullRaw salary text as displayed (null if not published)
salaryMinnumber | nullParsed minimum salary
salaryMaxnumber | nullParsed maximum salary
salaryCurrencystring | nullCurrency code, e.g. AED, SAR, KWD
salaryPeriodstring | nulle.g. monthly, yearly
postedDatestring | nullISO date the job was posted
urlstringDirect link to the listing
applyUrlstringDirect application link
isExternalbooleantrue when applying leaves Bayt.com for an external site
isRepostbooleantrue if this job was seen in a previous run (90-day dedup)
scrapedAtstringISO timestamp when this record was scraped
sourcestringAlways bayt.com

With fetchDetails: true

FieldTypeDescription
descriptionHtmlstring | nullFull job description in HTML
descriptionTextstring | nullFull job description in plain text
descriptionMarkdownstring | nullFull job description in Markdown
skillsarray | nullSkills listed on the posting
regionstring | nullRegion/emirate from the listing, e.g. Dubai
industrystring | nullIndustry as published
companySizestring | nullCompany size, e.g. 500 Employees or more
yearsOfExperiencestring | nullRequired years of experience (null when not stated)
nationalitystring | nullPreferred candidate nationality where the employer states it
genderstring | nullPreferred candidate gender where the employer states it
totalOpeningsnumber | nullNumber of vacancies for the listing
isRemotebooleantrue when the listing is marked remote / work-from-home
directApplybooleantrue when the job supports Easy Apply on Bayt.com
validThroughstring | nullApplication deadline / listing expiry

Example record

{
"jobId": "senior-planning-engineer-real-estate-afec-5465993",
"title": "Senior Planning Engineer | Real Estate | AFEC",
"company": "Al Futtaim Group",
"companyUrl": "https://www.bayt.com/en/company/al-futtaim-group-1685/",
"location": "Dubai, UAE",
"city": "Dubai",
"region": "Dubai",
"country": "UAE",
"employmentType": "Full Time",
"careerLevel": "Mid career",
"salaryText": null,
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"skills": ["Primavera P6", "Project Planning", "Real Estate Construction"],
"industry": "Accounting",
"companySize": "500 Employees or more",
"yearsOfExperience": "8 years",
"nationality": null,
"gender": null,
"totalOpenings": null,
"isRemote": false,
"directApply": true,
"isExternal": false,
"isRepost": false,
"url": "https://www.bayt.com/en/uae/jobs/senior-planning-engineer-real-estate-afec-5465993/",
"applyUrl": "https://www.bayt.com/en/job/apply/index/5465993/",
"postedDate": "2026-07-01T00:00:00.000Z",
"validThrough": "2026-08-30T00:00:00.000Z",
"scrapedAt": "2026-07-08T14:00:00.000Z",
"source": "bayt.com"
}

Examples

Search for accountant roles in Dubai:

{
"searchQuery": "accountant",
"location": "Dubai",
"country": "UAE",
"maxItems": 100
}

Full-time software jobs in Saudi Arabia, with full details:

{
"searchQuery": "software engineer",
"country": "KSA",
"jobType": "FULL_TIME",
"fetchDetails": true,
"maxItems": 50
}

Scrape specific job or search URLs directly:

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

Daily incremental feed (new jobs only, run on a schedule):

{
"searchQuery": "accountant",
"country": "UAE",
"daysOld": 1,
"skipReposts": true,
"maxItems": 500
}

Schedule this input to run once a day in the Apify Scheduler — each run returns only jobs posted in the last 24 hours that weren't already seen.


💰 Pricing

$0.75 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.

ResultsCost
100~$0.07
1,000~$0.75
10,000~$7.50
100,000~$75.00

Turning on fetchDetails adds a small premium per enriched job (an extra page fetch per listing). Leave it off for the lowest cost.

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the base rate further, down to $0.45 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.


Performance

Run sizeTypical time
100 resultsunder 1 minute
1,000 results2–4 minutes
10,000 results20–35 minutes

Detail fetches add roughly one extra request per job, so runs with fetchDetails: true take longer.


Known limitations

  • Salary is only returned when the employer publishes it — most listings carry null salary fields.
  • Requirement fields (years of experience, preferred nationality/gender, career level) are only present when the employer states them, so they are null on many listings.
  • Company details vary per listing; the scraper returns what the source publishes and never invents data.
  • Results follow Bayt.com's own listing order; use Max age (days) to restrict to recent postings for scheduled feeds.
  • Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.

Technical details

  • Source: bayt.com — Middle East and Gulf region job listings across ten country portals
  • Coverage: everything the public search exposes, filterable via the input parameters above
  • Retry: automatic retry on network errors with exponential backoff

Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl