Bayt Scraper - MENA Jobs, Salaries & Companies avatar

Bayt Scraper - MENA Jobs, Salaries & Companies

Pricing

$1.49 / 1,000 jobs

Go to Apify Store
Bayt Scraper - MENA Jobs, Salaries & Companies

Bayt Scraper - MENA Jobs, Salaries & Companies

Scrape Bayt.com jobs across 18 MENA countries: title, company, city, posting time, full description, skills, employment type, career level, experience and salary in local currency and USD. City search and filters. Independent tool, not affiliated with Bayt.com.

Pricing

$1.49 / 1,000 jobs

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Bayt.com or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Bayt.com" is referenced only to describe the publicly available website this Actor collects data from.

Turn Bayt.com, the largest job site in the Middle East and North Africa, into a clean jobs dataset: title, company, city, exact posting time, the full job description, skills, employment type, career level, years of experience, education, salary in the local currency and in US dollars per month, company size and industry, closing date and how to apply - one row per job, in Bayt's own order.

Search any of Bayt's 18 country sites (UAE, Saudi Arabia, Egypt, Qatar, Kuwait, Bahrain, Oman, Jordan, Lebanon, Iraq, Morocco, Algeria, Tunisia, Libya, Syria, Yemen, Pakistan, India) or all of them at once, narrow to a city, add keywords, or paste Bayt search and job URLs. No login, no cookies, no browser.

Why this Bayt scraper?

DataTypical Bayt scrapersThis actor
Title, company, location, posting date, Bayt's job summary✅✅
Full description (plain text and HTML) and the skills sectionoften a paid add-on✅ included
Exact posting time from Bayt's own timestamp, not just "3 days ago"rare✅
Salary as Bayt shows it and as Bayt's own USD-per-month band, so countries compare directlypartial✅
Employment type, career level, years of experience, educationpartial✅
Nationality, residence, gender and age requirements when the employer sets themrare✅
Company page, company id, size and industry; confidential employers flaggedrare✅
Closing date, number of vacancies, Easy Apply vs company site, apply linkrare✅
City-level searches (Dubai, Riyadh, Jeddah, Cairo, Doha...) and all-country searchpartial✅
Filters: posted within 24 h / 7 / 30 days, career level, employment type, remote, published salary, minimum USD salarypartial✅ (never billed for skipped jobs)
Several countries x keywords in one run, the cap shared fairly between themrare✅
A job found by two searches is billed oncerare✅

What you get

GroupFields
The jobjobId, title, jobUrl, summary (Bayt's own summary of the ad), description, descriptionHtml, skills
Companycompany, companyId, companyUrl (its Bayt company page), companyLogo, companySize, industry, isConfidentialCompany
Locationlocation (as Bayt prints it), city, area (district, when given), country, countryCode (ISO)
DatespostedAt (exact UTC time), postedText ("5 hours ago"), validThrough (closing date)
RoleemploymentType, careerLevel, yearsExperience, experienceMinYears, experienceMaxYears, educationLevel, numberOfVacancies
Salarysalary (as shown, e.g. "SAR 7,500 - SAR 11,250"), salaryCurrency, salaryMin, salaryMax, salaryMinUsd, salaryMaxUsd, salaryPeriod
Candidate requirementsnationality, residenceLocation, gender, ageRange, applicantLocation
ApplyingisEasyApply, applyType ("Easy Apply" / "Apply on company site"), applyUrl, isRemote, workArrangement
ListingisFeatured, isAggregated (a listing Bayt imports from another job site)
Search contextsearchCountry, searchCity, searchKeyword, searchUrl, page, rank (position in Bayt's results), hasDetail, scrapedAt

Every row carries every field in the same order. A field the employer did not fill in on Bayt is null - exports never carry placeholder values.

Use cases

  • Recruitment and staffing - every open accountant, nurse or sales role in the Gulf, with the employer, experience, education and nationality requirements, ready to match against your candidates.
  • Salary benchmarking - published salaries by role, city and country, with Bayt's USD-per-month band so Dubai, Riyadh and Cairo compare like for like.
  • Hiring-intent lead lists - which companies are hiring, for what, how big they are and in which industry; filter out confidential postings and keep the company pages.
  • Labour-market research - demand by country, city, career level and employment type, tracked over time with the exact posting time.
  • Job boards and aggregators - fresh, de-duplicated MENA listings with full descriptions on a schedule.

How to use

  1. Sign up for Apify - the free plan is enough to try this actor.
  2. Open Bayt Scraper, pick one or more countries (or cities), optionally type keywords, and click Start.
  3. Watch the jobs arrive in the dataset table (views: Jobs, Full detail, Salaries, Hiring companies).
  4. Export as JSON, CSV, Excel, XML or HTML, or pull the results with the Apify API.

Input

{
"countries": ["uae", "saudi-arabia"],
"keywords": ["accountant"],
"maxResults": 100,
"postedWithin": "7d"
}
FieldWhat it does
countriesBayt country sites to search; international is Bayt's all-countries search.
citiesSearch a city instead of its whole country, e.g. ["Dubai", "Riyadh"]. Each city narrows only its own country.
keywordsJob titles, skills or company names - one search per keyword in every place. Leave empty for the latest jobs.
includeDetailOn by default: opens every job page for the description, salary, experience, skills and company details. Off = faster, search-result fields only.
maxResultsTotal cap for the run (0 = no limit), shared fairly between searches. Jobs are charged only when saved.
maxPagesPerSearchHow deep to read each search (30 jobs a page; Bayt stops at page 333).
startUrls / urlsFromFileBayt search URLs (including ones with filters you set on Bayt) and single job URLs - typed, pasted or from a file.
postedWithinany, 24h, 7d or 30d.
careerLevels, employmentTypesPick-lists of Bayt's own values.
remoteOnly, onlyWithSalary, minMonthlySalaryUsdRemote/hybrid jobs only; only jobs with a published salary; a minimum salary in USD per month.

Output

{
"type": "job",
"jobId": "5491116",
"title": "Sales Executive",
"company": "najidsolar",
"companyId": "2319964",
"companyUrl": "https://www.bayt.com/en/company/najidsolar-2319964/",
"location": "Ad Dawbiyah, Riyadh, Saudi Arabia",
"city": "Riyadh",
"area": "Ad Dawbiyah",
"country": "Saudi Arabia",
"countryCode": "SA",
"postedAt": "2026-10-06T19:03:12.000Z",
"postedText": "2 days ago",
"validThrough": "2026-11-05T00:00:00Z",
"summary": "A dynamic opportunity exists for a Sales Executive specializing in solar energy systems...",
"description": "Sales Executive for solar energy systems\n\nMain responsibilities and tasks\n\n• Lead Generation: Searching for new clients...",
"skills": "• Communication Skills: Ability to simplify complex technical information for clients...",
"employmentType": "Full time",
"careerLevel": "Mid career",
"yearsExperience": "5+ years",
"experienceMinYears": 5,
"experienceMaxYears": null,
"educationLevel": "Bachelor's degree / higher diploma",
"salary": "SAR 7,500 - SAR 11,250",
"salaryCurrency": "SAR",
"salaryMin": 7500,
"salaryMax": 11250,
"salaryMinUsd": 2000,
"salaryMaxUsd": 3000,
"salaryPeriod": "month",
"applicantLocation": "Saudi Arabia",
"companySize": "1-9 Employees",
"industry": "Electrical Engineering",
"numberOfVacancies": 1,
"workArrangement": "Remote",
"isRemote": true,
"isEasyApply": true,
"applyType": "Easy Apply",
"applyUrl": "https://www.bayt.com/en/job/apply/index/5491116/",
"isAggregated": false,
"jobUrl": "https://www.bayt.com/en/saudi-arabia/jobs/sales-executive-5491116/",
"searchCountry": "saudi-arabia",
"searchCity": "Riyadh",
"searchKeyword": "sales",
"page": 1,
"rank": 3,
"hasDetail": true
}

Good to know

  • Salaries are published by roughly one employer in three on Bayt; the others leave it out, and salary is then null. Bayt keeps every salary as a US-dollar monthly band (for example 2,000-3,000) and displays it in the local currency (SAR 7,500 - SAR 11,250); you get both. Use "Only jobs with a published salary" or a minimum USD salary to keep only jobs that show one - skipped jobs are not billed.
  • Career level, experience, education, nationality, gender and age are optional on Bayt; each is filled only when the employer set it, so these columns are partly empty on most searches.
  • Listings Bayt imports from other job sites (isAggregated: true, common in keyword searches) come with the description, location, employment type, industry and closing date, but Bayt shows no skills section, company size, salary, career level or vacancy count for them; Bayt's own ads carry those whenever the employer fills them in.
  • Keyword searches use Bayt's own search, which also returns closely related roles (an "accountant" search includes auditors and bookkeepers). Short phrases work best; Arabic keywords work too.
  • "Posted within" checks each job's posting time. A country or city search without a keyword lists Bayt's own job ads newest first and then the listings Bayt imports from other job sites (isAggregated), again newest first; the actor reads both parts up to the window and stops, so a daily run returns every job of the last 24 hours. Imported listings carry a posting date only, so one dated yesterday counts as inside a 24-hour window.
  • Career level, employment type, remote and salary filters are confirmed on each job page, so they open it even with full details off, and a narrow filter may scan many jobs to find a few. Raise "Max pages per search" to look deeper.
  • Posting time: postedAt is Bayt's own timestamp for the ad. Listings Bayt imports from other job sites carry a posting date only, so theirs reads midnight of that day.
  • Depth: Bayt shows at most about 10,000 jobs (333 pages) per search. For more, split by city or keyword - the actor removes duplicates across searches.
  • A job closed on Bayt while the run reads it, a city Bayt has no page for, or a keyword with no results ends with a clear message and no jobs billed.

How much does it cost to scrape Bayt.com?

This Actor uses Apify's pay-per-event pricing, with no monthly rental. It charges:

  • Job - one Bayt.com job: title, company, city, posting time and summary, plus - with full details on (the default) - the full description, skills, employment type, career level, experience, education, salary where the employer publishes one, company details and how to apply. Jobs your filters skip are never charged.
  • Actor start (from 23 October 2026) - a small fixed fee Apify charges once when a run starts, per GB of run memory: once for a run at the default 1 GB. It keeps runs that find nothing, or very little, fairly priced.

The current prices are shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use "Max results" to control how many jobs the Actor collects.

Automate & schedule

Run this Actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/bayt-scraper').call({
countries: ['uae', 'saudi-arabia'],
keywords: ['accountant'],
postedWithin: '7d',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} jobs`);

Integrate with any app

Connect the dataset to thousands of apps - no code required:

  • Make - multi-step automation scenarios.
  • Zapier - push new records straight into your CRM or spreadsheet.
  • Slack - get notified when a scheduled run finds something new.
  • Google Drive / Sheets - auto-export every run to a spreadsheet.
  • Airbyte - pipe results into your data warehouse.
  • GitHub - trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this Actor from Claude, ChatGPT or any agent framework through the Apify MCP server - describe the data you need and let the assistant run this Actor for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
  • Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

Tips

  • For a daily feed, schedule the actor with Posted within: past 24 hours and de-duplicate on jobId.
  • Turn off Include full job details when you only need titles, companies, cities and dates: runs finish several times faster.
  • Combine several countries or cities with several keywords in one run - "Max results" is shared fairly, so the first search never takes the whole budget.
  • Compare pay across countries with salaryMinUsd / salaryMaxUsd rather than the local-currency text.

FAQ

How is this Actor billed? Pay-per-event: you pay for each job saved and, from 23 October 2026, a small fixed fee when a run starts. There is no monthly rental. Both prices are shown on the Pricing tab.

Can I schedule it and get results automatically? Yes - create a Schedule and add a webhook or an integration (Google Sheets, Slack, Make, Zapier) to push each run's dataset wherever you need it.

Which export formats are available? Every run's dataset can be downloaded as JSON, CSV, Excel (XLSX), XML or HTML from the Apify Console or the API.

Can I run it from code or an AI agent? Yes - through the Apify API and client libraries, or from Claude, ChatGPT and other assistants via the Apify MCP server.

Does it need a proxy or a Bayt account? No account. Leave the proxy setting as it is: the actor uses Apify's datacenter proxy and switches to residential automatically when Bayt refuses a connection.

Is it legal to scrape Bayt.com? This Actor collects publicly available job postings only. You are responsible for using the output in compliance with applicable laws (including data-protection law where personal data is involved) and the source's terms. See the Disclaimer below.

Is this an official Bayt.com tool? No. It is an independent, third-party Actor with no affiliation to, endorsement by or sponsorship from Bayt.com. See the Disclaimer below.

More job scrapers

  • Naukri Scraper - India and Gulf jobs with salaries and recruiter leads
  • Foundit Scraper - jobs, salaries, skills and recruiter leads
  • LinkedIn Jobs Scraper - filter-based, no login

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Bayt.com or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"Bayt.com" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Bayt.com product, is not authorised or certified by Bayt.com, and does not distribute Bayt.com software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the Actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this Actor is actively maintained.