Bayt.com Middle East Jobs Scraper
Pricing
from $1.00 / 1,000 results
Bayt.com Middle East Jobs Scraper
Scrape Middle East job listings from Bayt.com with titles, companies, locations, salaries, career level, experience, full descriptions, skills, and apply links. HTTP-only, no login required.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(5)
Developer
Crawler Bros
Actor stats
5
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape job listings from Bayt.com — the largest job board across the Middle East and North Africa. Returns titles, companies, locations, salaries, career level, experience, full descriptions, required skills, preferred-candidate details, and direct apply links. HTTP-only; no login or cookies required.
Output (per job)
type=job_baytjobId,urltitlecompany,companyProfileUrl,companyLogolocation(e.g. "Dubai · UAE")postedAtRelative(e.g. "30+ days ago"),postedAt(ISO 8601 UTC)employmentType(Full time / Part time / Contract …)careerLevel(Entry / Mid career / Management / Executive)experiencesalaryminSalaryUSD,maxSalaryUSD— when the detail page shows a USD salary rangevacancies— number of open positions, when listedindustryId,industryName,jobType(Remote / Hybrid / On-site)jobFunction— broad function (e.g. Engineering, Sales) when availableapplyUrl,isExternalJobdescriptionHtml,descriptionTextskillsTextpreferredCandidategender— preferred gender (Male / Female / Any)nationality— preferred nationality textresidenceCountry— required residence countrydegree— required education levellanguages— list of required languagesbenefits— list of benefits when the detail page has a benefits blockcandidateStatus— boolean "Open to travel" flag (when present)applicationsCount,viewsCount— interaction counters when surfaced on the detail pagelistingSummarycompanySize,companyEmployeesSize— e.g. "50-99 Employees"companyIndustry— extracted from the industry anchor in the company rowcompanyFoundedYear— year the company was founded (when shown on the profile)datePosted— absolute date from meta tags when presentscrapedAt
If the listing / search returns zero results (or the input is invalid), a single job_bayt_blocked sentinel record is emitted so runs always exit with output.
Input
| Field | Type | Description |
|---|---|---|
startUrl | string | Bayt.com search or category URL. Prefill: https://www.bayt.com/en/international/jobs/python-jobs/. |
keyword | string | Optional keyword filter. When set, merged into the start URL as ?keyword=…. |
locationFilter | string | Optional country/city slug (e.g. uae, dubai-uae, saudi-arabia, qatar). Used when no startUrl is supplied. |
resultsWanted | integer | Maximum job listings to return. Default 3, max 500. |
maxPages | integer | Maximum listing pages to iterate. Default 20. |
datePosted | enum | any, last_24_hours, last_week, last_month. Appended to URL where supported, else client-side. |
careerLevel | enum | any, entry, mid_career, management, senior_executive, student. Client-side match. |
employmentType | enum | any, full_time, part_time, contract, internship, temporary. Client-side match. |
proxyConfiguration | object | Apify proxy. Datacenter proxy is sufficient. |
Example inputs
- Keyword + country:
keyword = "sales",locationFilter = "uae" - Direct URL:
startUrl = "https://www.bayt.com/en/dubai-uae/jobs/" - Single job:
startUrl = "https://www.bayt.com/en/uae/jobs/creative-tech-ai-lead-5443062/"
How it works
- Build a start URL from
startUrl— orkeyword+locationFilterwhen the URL is blank. - Iterate
?page=Nup tomaxPagesor untilresultsWantedis reached. - Extract each job card (
li[data-js-job]) to seed fields (title, company, location, salary, career level, summary, relative date). - For each job URL, fetch the detail page and extract structured data from
#job_card(header),data-automation-idrows (employment type, career level, industry) and the H2-anchored description / skills / preferred-candidate sections. - Retry on
403/429/5xxup to three times with exponential backoff and a fresh Apify-proxy session.
FAQ
Do I need a proxy? Datacenter proxy is sufficient — Bayt.com accepts datacenter IPs for both listing and detail pages.
Can I scrape a single job URL?
Yes — pass the direct job URL in startUrl. The scraper detects job URLs and skips pagination.
What countries are supported?
All Bayt country sub-sites (UAE, Saudi Arabia, Qatar, Kuwait, Oman, Bahrain, Egypt, Jordan, Lebanon, Morocco …). Use the country slug from the Bayt URL structure (/en/<country>/jobs/) in locationFilter.
Why is a sentinel record emitted?
When the given URL / search has no matching jobs, we still emit one job_bayt_blocked record so downstream pipelines never see an empty dataset.