Bayt Jobs Scraper — Jobs, Salaries & Company Details
Pricing
from $1.00 / 1,000 job listings
Bayt Jobs Scraper — Jobs, Salaries & Company Details
Scrape Bayt.com job listings across the Middle East & North Africa: titles, companies, salaries, locations, dates, skills, and full descriptions. Filter by city, date, job type, remote or hybrid, career level, or few-applicant roles. Export clean JSON, CSV, or Excel — no login or API key needed.
Pricing
from $1.00 / 1,000 job listings
Rating
0.0
(0)
Developer
VeroAPIs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Bayt Jobs Scraper — Middle East & Gulf jobs, salaries and companies
Bayt Jobs Scraper extracts job listings from Bayt.com, the leading job site in the Middle East & North Africa: title, company, location, salary, posting date, work arrangement, summary, full description, skills, experience, career level, and company details. Download them as JSON, CSV, Excel, or XML. It runs in the cloud, needs no coding, and needs no Bayt login or API key.
Try it right away: type what you're searching for, pick a country, click Start, and watch the dataset fill up with structured job data.
What you can do
- Search any Bayt market: UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Bahrain, Oman, Jordan, Lebanon, Morocco and more, plus India and Pakistan, or every country at once.
- Zoom in on a city: Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Cairo, and the other main cities Bayt lists for your search.
- Catch fresh jobs: keep only jobs from the past 24 hours, 7 days, or 30 days.
- Filter the way recruiters do: job type, remote / hybrid / on-site, career level, direct employers or recruitment agencies, easy-apply jobs, and jobs with few applicants.
- Get salary data with currency and pay period wherever the employer lists it.
- Find hiring companies with their industry, size, type, and Bayt profile link, plus any contact emails in the job text.
What data does it extract?
Each result is one job listing:
| Data | Details |
|---|---|
| 💼 Job | title, posting URL, apply URL, posting date, employment type, career level, job role, number of vacancies |
| 🏢 Company | name, logo, type (employer or agency), industry, size, description, and Bayt profile link |
| 📍 Location | one-line location plus city, area, and country |
| 🏠 Work arrangement | on-site, remote, or hybrid, plus a simple remote flag |
| 💰 Salary | pay range with currency and pay period (usually monthly), listed on Bayt or found in the description |
| 🎓 Candidate | experience range, required degree, and preferred nationalities |
| 🧰 Extras | skills, contact emails found in the job text, and whether you can apply directly on Bayt |
| 📝 Text | Bayt's short English summary, and a snippet or the full description (Markdown, HTML, or plain text) |
The full description, apply URL, skills, employment type, job role, vacancies, degree, nationalities, and company details come from each job's detail page and are filled when Fetch extra job info is on. Without it, you get a fast result with the summary and a short description snippet.
How do I scrape Bayt jobs?
- Say what you want: enter Search keywords (a job title, skill, or company).
- Pick a country, and optionally a City.
- Narrow it down (optional): date posted, job type, work arrangement, career level, hiring company type, easy apply, or few applicants. Turn on Fetch extra job info for the full description and company details.
- Set how many: choose Maximum jobs, or use
0for every job Bayt shows for your search. - Click Start, then download the results from the Output tab in any format, or send them anywhere with integrations.
Input example
{"keywords": "accountant","country": "ae","city": "Dubai","maxItems": 100,"datePosted": "7","jobType": "fulltime","fetchExtraJobInfo": true,"descriptionFormat": "markdown"}
Output example (abridged)
{"id": "5464405","title": "Senior Accountant","url": "https://www.bayt.com/en/uae/jobs/senior-accountant-5464405/","applyUrl": "https://www.bayt.com/en/uae/jobs/senior-accountant-5464405/","company": {"name": "Noor Deira Steel Trading","logo": "https://secure.b8cdn.com/images/logo/12/2305812_logo.png","profileUrl": "https://www.bayt.com/company/company/view/?lang=en&company-url=noor-deira-steel-trading-2305812","type": "Employer (private sector)","industry": "Steel & Metals","employeeCount": "50-99 Employees"},"location": { "formatted": "Dubai, UAE", "city": "Dubai", "country": "UAE" },"workArrangement": "on-site","isRemote": false,"easyApply": true,"postedDate": "2026-06-23","jobType": ["Full-time"],"salary": { "min": 14690, "max": 18363, "currency": "AED", "interval": "monthly", "source": "direct" },"jobLevel": "Management","jobRole": "Accounting and Auditing","vacancies": 1,"education": "Bachelor's degree / higher diploma","skills": ["IFRS", "Financial Reporting", "VAT", "ERP"],"experienceRange": "7 - 15 years","searchTerm": "accountant","summary": "Lead month-end close, VAT filing and IFRS reporting for a growing steel trading company in Dubai.","description": "## Job Summary\nNoor Deira Steel is seeking an experienced Senior Accountant…"}
Only the fields a posting actually has are included, so records stay clean.
Input reference
| Field | Type | Description |
|---|---|---|
keywords | string | Job title, skill, or company to search for. Leave empty to get the latest jobs. |
country | string | Country code from the dropdown (e.g. ae, sa, eg, qa, in, pk), or all for every country. Default ae. |
city | string | City name as Bayt shows it, e.g. Dubai, Riyadh, Cairo. Empty = every city. |
maxItems | integer | Total jobs to return. 0 = every job for the search. Default 25. |
datePosted | string | Empty = any time, 1 = past 24 hours, 7 = past 7 days, 30 = past 30 days. |
jobType | string | fulltime, parttime, contract, internship, temporary, or freelance. Empty = any. |
workArrangement | string | remote, hybrid, remote-or-hybrid, or on-site. Empty = any. |
careerLevel | string | student, graduate, entry, mid, management, director, or executive. Empty = any. |
companyType | string | private, public, agency, or nonprofit. Empty = any. |
easyApply | boolean | Only jobs you apply to directly on Bayt. Default false. |
fewApplicants | boolean | Only jobs that still have few applicants. Default false. |
fetchExtraJobInfo | boolean | Adds the full description, apply link, skills, employment type, job role, vacancies, degree, nationalities, salary range, and company details. Default false. |
descriptionFormat | string | markdown, html, or text. Default markdown. |
offset | integer | Number of results to skip, to continue a search in a new run. |
Why scrape Bayt jobs?
- Middle East market research: track demand for roles and skills across the Gulf and North Africa.
- Recruiting & sourcing: see who's hiring, with company type, size, industry, and contact emails.
- Salary benchmarking: gather pay ranges with currency and pay period, straight from the board.
- Lead generation: find companies actively hiring in your space, city by city.
- Job hunting: surface fresh roles posted today, or roles with few applicants where your application stands out.
- Job boards and newsletters: feed a daily list of new remote or city-specific jobs into your own site.
Integrations
Send jobs anywhere with Apify's built-in integrations: Google Sheets, Slack, Zapier, Make, n8n, Airbyte, webhooks, and more. Schedule a daily run with Date posted set to Past 24 hours and get every new job in your spreadsheet or Slack channel automatically.
Run it from your code or AI assistant
Call it from JavaScript with the Apify client (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('vero-api/bayt-jobs-scraper').call({keywords: 'accountant',country: 'sa',datePosted: '7',maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'jobs');
Or from Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("vero-api/bayt-jobs-scraper").call(run_input={"keywords": "accountant","country": "sa","datePosted": "7","maxItems": 100,})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["title"], item.get("company", {}).get("name"))
Your token is under Settings → API & Integrations in Apify Console.
AI assistants such as Claude, ChatGPT, and Cursor can run it too, through the Apify MCP server. Add this to your assistant's MCP settings:
{"mcpServers": {"bayt-jobs-scraper": {"url": "https://mcp.apify.com?tools=vero-api/bayt-jobs-scraper"}}}
Then just ask, for example:
- "Find accountant jobs posted in Dubai this week and list the ones with a salary."
- "Which companies are hiring remote software engineers in Saudi Arabia?"
Pricing
You pay only for the jobs you get, with no subscription. A tiny fee covers each run's start, then a flat fee per job delivered; the exact rate is on the Pricing tab. Set Maximum jobs to cap your spend, and a run stops cleanly at your spending limit.
FAQ
Which countries does it cover? Every Bayt market: the UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Bahrain, Oman, Jordan, Lebanon, Iraq, Palestine, Yemen, Morocco, Algeria, Tunisia, and Libya, plus India and Pakistan. Choose All countries to search them all at once.
How many jobs can I get from one search? Up to 10,000, the most Bayt shows for a single search. For bigger pulls, split the search by city, date posted, or job type.
How do I filter by city? Type the city name in City, for example Dubai or Riyadh. It matches the cities with the most jobs for your search, which covers the main cities in every market. Pick the city's country too for the surest match. If the name doesn't match, the run's status line suggests cities that do have jobs for your search.
Does "Remote" include hybrid jobs? No. Remote returns fully remote jobs only. Pick Hybrid for hybrid jobs, or Remote or hybrid for both. Every job also carries a workArrangement field.
Does it get salaries? Yes, whenever the employer lists pay on Bayt, with currency and pay period. If Bayt lists none, the actor also looks for a pay range in the description.
Does it get contact emails? Yes, when the job text includes one, for example "send your CV to …". Turn on Fetch extra job info to scan the full description instead of the snippet.
How do I get only new jobs every day? Schedule the actor in Apify Console with Date posted set to Past 24 hours.
How do I continue a big search in a second run? Set Results offset to the number of jobs you already have, for example 500, and the next run starts right after them.
How fast is it? Very fast: 100 jobs take about 5 seconds, and with Fetch extra job info on it still handles hundreds of jobs a minute.
Do I need an account or API key? No. Just enter your search and click Start.
What formats can I download? JSON, CSV, Excel, XML, RSS, and HTML, or read the results through the Apify API.
Is this an official Bayt tool? No. This actor is not affiliated with, endorsed by, or sponsored by Bayt.com. It collects public job listings that anyone can browse on Bayt.
More tools from us
- Multi Job Board Scraper — jobs from LinkedIn, Indeed, Glassdoor, Bayt, and more in one run.
- Naukri Jobs Scraper (Gulf) — jobs, salaries, and companies from Naukri across the Gulf and India.
- LinkedIn Jobs Scraper — job listings and hiring companies from LinkedIn.
- Indeed Jobs Scraper — job listings, salaries, and companies from Indeed.
- Google Jobs Scraper — jobs gathered from across the web by Google.
- Email Validator — check that the contact emails you collect are deliverable.
Notes
- Bayt.com is the leading job site in the Middle East & North Africa. Pick a regional country for the most results.
- Reads Bayt's public job listings, the same ones anyone can browse, so there's no login to set up.
- Turn on Fetch extra job info for the full description and company details; leave it off for faster, lighter runs.