Bayt.com Jobs Scraper
Pricing
from $0.80 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
3 days ago
Last modified
Categories
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
postedAtnext 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
Simple Keyword Search
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}
Paste Your Own Bayt Links
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
| Parameter | Type | Default | Description |
|---|---|---|---|
searchKeyword | string | "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. |
country | string | "uae" | Which Bayt.com country site to search: United Arab Emirates, Saudi Arabia, Egypt, Qatar, Kuwait, Jordan, Lebanon, Bahrain, Oman, Morocco, or International & worldwide. |
city | string | "" | Narrow the search to a single city (e.g. "Dubai", "Abu Dhabi", "Riyadh", "Cairo", "Doha"). Leave blank to search the whole country. |
startUrls | array | [] | 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. |
language | string | "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.
| Parameter | Type | Default | Description |
|---|---|---|---|
datePosted | string | β | Only collect jobs posted within this window: Past 24 hours, Past 7 days, or Past 30 days. |
careerLevel | string | β | 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. |
employmentType | string | β | 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. |
remoteOnly | boolean | false | Only collect jobs Bayt flags as remote / work from home. |
easyApplyOnly | boolean | false | Only collect jobs you can apply to directly on Bayt.com, skipping listings that redirect to an external careers site. |
sortBy | string | "r" | How Bayt orders the results before they are collected: Most relevant or Most recent. |
Output Detail & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
fetchJobDetails | boolean | true | Open 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. |
maxResults | integer | 50 | Hard 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
| Field | Type | Description |
|---|---|---|
jobId | string | Bayt's own identifier for the posting β stable, and the key used to de-duplicate rows. |
title | string | Job title as advertised. |
url | string | Direct link to the job page on Bayt.com. |
summary | string | null | Short snippet shown on the search results card. |
position | integer | 1-based rank of this job within its search. |
jobCategory | string | null | Category assigned by Bayt (e.g. "Information Technology"). Not set on every posting. |
jobRoleId | string | null | Bayt's internal role identifier, useful for grouping similar titles. |
isAggregated | boolean | null | false for jobs posted natively on Bayt, true for listings syndicated from another board. |
Company
| Field | Type | Description |
|---|---|---|
companyName | string | Hiring company, or "Confidential Company" when the employer stays anonymous. |
companyId | string | null | Bayt'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. |
companyUrl | string | null | Link to the employer's Bayt company profile. Published on directly-posted jobs; syndicated postings rarely carry one. |
logoUrl | string | null | Company logo image URL. |
Location & Work Setting
| Field | Type | Description |
|---|---|---|
city | string | null | City shown on the search results card. |
country | string | null | Country shown on the search results card. |
addressLocality | string | null | City as declared by the employer on the job page. |
addressRegion | string | null | Region or emirate as declared by the employer. |
addressCountry | string | null | Two-letter country code (e.g. AE, SA, EG). |
jobLocationType | string | null | Set to TELECOMMUTE when the employer flags the role as remote. |
employmentType | string | null | Employer-declared type, e.g. FULL_TIME or PART_TIME. |
Dates & Application
| Field | Type | Description |
|---|---|---|
postedAt | string | null | Exact ISO 8601 posting timestamp β the field to sort and diff on. |
postedAgo | string | null | Human-readable relative date exactly as Bayt shows it (e.g. "3 days ago"). |
datePosted | string | null | Publication date declared by the employer on the job page. |
validThrough | string | null | Application deadline, when the employer publishes one. |
easyApply | boolean | true when the search card carries Bayt's Easy Apply badge. |
directApply | boolean | null | true when the job page confirms you can apply on Bayt rather than an external site. |
totalJobOpenings | integer | null | Number of vacancies for this posting. Published on native postings only. |
Description, Level & Pay
| Field | Type | Description |
|---|---|---|
description | string | null | Full job description with the employer's original HTML formatting. |
descriptionText | string | null | Same description as clean plain text, ready for analysis or search indexing. |
careerLevel | string | null | Entry Level, Mid Career, Management or Senior Executive. Optional β around 10% of employers fill it in. |
salaryMin | number | null | Lower bound of the published salary range. Optional β Gulf employers rarely publish pay, so expect this on only a small share of rows. |
salaryMax | number | null | Upper bound of the published salary range. Optional, same low publication rate. |
salaryCurrency | string | null | Currency of the published range (e.g. AED, SAR). Optional. |
salaryPeriod | string | null | Period the range refers to, e.g. monthly or yearly. Optional. |
Run Metadata
| Field | Type | Description |
|---|---|---|
searchKeyword | string | null | The keyword that produced this row. |
searchCountry | string | null | The country market this row came from. |
searchCity | string | null | The city narrowing applied, if any. |
language | string | en or ar β which language version produced the row. |
scrapedAt | string | ISO 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
datePostedto Past 24 hours andsortByto 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
languageto 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
careerLevelandemploymentTypeβ 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
fetchJobDetailsfor 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.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 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
Legal & Ethical Use
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.