# Bayt Jobs Scraper - Middle East Hiring Data (`benthepythondev/bayt-jobs-scraper`) Actor

Scrape Bayt.com jobs: title, company, location, summary, career level, experience, posted date, easy apply flag and job URL.

- **URL**: https://apify.com/benthepythondev/bayt-jobs-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 💼 Bayt Jobs Scraper - Middle East Hiring Data

Scrape job listings from **Bayt.com** in one run. Get job titles, companies, locations, summaries, career level, experience, posted date, easy-apply flag, direct job URLs and company logos from Bayt search pages. Export the results to JSON, CSV or Excel, run the actor on a schedule, call it through the Apify API, or connect the dataset to Make, Zapier, Airtable, Clay, Google Sheets, HubSpot or n8n.

### 🔎 What is the Bayt Jobs Scraper?

Bayt is one of the largest job boards in the Middle East and North Africa, with coverage across the UAE, Saudi Arabia, Qatar, Kuwait, Egypt, Jordan, Lebanon, Bahrain, Oman and broader international searches. It is used for technology, sales, finance, healthcare, engineering, hospitality, operations, logistics and management hiring.

This actor turns public Bayt search pages into structured job data. It uses Chrome TLS impersonation with `curl_cffi` and, by default, an Apify residential proxy for Bayt Cloudflare reliability in the Apify cloud. It does not need a browser, login or API key. That keeps the actor fast enough for scheduled monitoring and practical for lead-generation workflows.

#### What data does it extract?

- **Job title** - the role name shown on Bayt.
- **Company** - hiring company name and company profile URL.
- **Location** - city and country shown in the search result.
- **Summary** - Bayt's short job summary when present.
- **Career level and experience** - visible metadata such as mid career and years of experience.
- **Posted date** - relative posting age from Bayt.
- **Easy apply flag** - whether the card exposes a Bayt easy-apply link.
- **Direct job URL** - stable Bayt job listing URL.
- **Company logo** - logo URL when available.
- **Stable ID** - Bayt job id from the search card.

### ⬇️ Input

| Field | Type | Description |
| --- | --- | --- |
| `searchUrls` | array | Bayt.com search URLs. The actor automatically uses the stable ajax view. |
| `keyword` | string | Optional keyword used to build a Bayt search URL. |
| `maxPages` | integer | Maximum pages to scan per URL. |
| `maxResults` | integer | Maximum jobs to return. |
| `useResidentialProxy` | boolean | Use Apify residential proxy for cloud reliability. |
| `proxyCountry` | string | Residential proxy country code. `AE` is the default. |

#### Example input

```json
{
  "searchUrls": ["https://www.bayt.com/en/international/jobs/python-jobs/"],
  "maxPages": 1,
  "maxResults": 30
}
````

Keyword search:

```json
{
  "keyword": "sales manager",
  "maxResults": 50
}
```

### ⬆️ Output

Each dataset item is one Bayt job listing.

```json
{
  "id": "5462756",
  "title": "Full-Stack Python Developer (In Person - Dubai)",
  "company": "Avantera Capital",
  "company_url": "https://www.bayt.com/en/company/avantera-capital-2305780/",
  "location": "Dubai, UAE",
  "country": "UAE",
  "summary": "Elevate your career as a Full-Stack Python Developer in Dubai...",
  "career_level": "Mid career - 3-7 Years of Experience",
  "metadata": "Mid career - 3-7 Years of Experience",
  "posted": "12 days ago",
  "easy_apply": true,
  "job_url": "https://www.bayt.com/en/uae/jobs/full-stack-python-developer-in-person-dubai-5462756/",
  "company_logo": "https://secure.b8cdn.com/bayt/assets/jobs-2wo4csy4/images/no-logo.svg",
  "source": "bayt"
}
```

### 💡 Use cases

- **Middle East recruiting** - monitor hiring across UAE, Saudi Arabia, Qatar, Kuwait, Egypt and nearby markets.
- **Sales intelligence** - hiring signals can identify expanding companies, new teams and active budget.
- **Market research** - track demand for roles by country, city, keyword and experience level.
- **Talent analytics** - compare posting velocity across sectors such as technology, healthcare, finance, hospitality or engineering.
- **Job aggregation** - add Bayt jobs to a broader employment dataset.
- **Automation** - send new jobs to Google Sheets, Airtable, Slack, HubSpot, Clay, Make, Zapier or n8n.

### 🧭 How to use the data

Use `id` or `job_url` as the deduplication key. For monitoring, schedule the actor daily and compare new IDs against previous datasets. For sales workflows, filter by keyword and location, then enrich the company profile URL or company domain downstream. For recruiting workflows, combine Bayt with other job-board actors such as Naukri, StepStone, BuiltIn, Reed, SEEK, JobsDB, Workable, Ashby and Recruitee.

Bayt covers many markets and categories. You can paste any filtered Bayt URL after applying filters on the website, or use the `keyword` field for quick searches such as `python`, `sales`, `nurse`, `accountant`, `driver`, `marketing`, `finance`, `engineer` or `data analyst`.

Keep `maxPages` small for frequent scheduled runs and raise it when you are building a larger one-time dataset. Bayt typically returns many listings per page, so a small page count is enough for most monitoring jobs.

### ❓ FAQ

**Does this require a Bayt account?** No. It reads public search results.

**Does it use a browser?** No. It uses HTTP requests with Chrome TLS impersonation and an optional residential proxy.

**Can I scrape filtered Bayt URLs?** Yes. Paste search URLs from Bayt into `searchUrls`.

**Can I search by keyword?** Yes. Use `keyword` to build a Bayt search URL automatically.

**Does it include job descriptions?** It includes the summary shown in the search result. Full detail-page scraping can be added later if needed.

**Does it include company profile links?** Yes. When Bayt exposes the company profile URL, it is returned as `company_url`.

**Is this useful for lead generation?** Yes. Active hiring is a strong buying-intent signal for recruiting, HR tech, relocation, training, payroll, staffing, B2B SaaS and local services.

**How often should I run it?** Daily is practical for monitoring new postings. Weekly is enough for broader market research.

**How do I avoid duplicates?** Use `id` or `job_url` as your stable key.

**Is it legal to scrape Bayt jobs?** The actor collects publicly available job posting data. You are responsible for using the output lawfully and respecting privacy, employment, anti-spam and platform rules.

### 🔗 You might also like

- [Naukri Jobs Scraper](https://apify.com/benthepythondev/naukri-jobs-scraper)
- [StepStone Scraper](https://apify.com/benthepythondev/stepstone-scraper)
- [Reed Jobs Scraper](https://apify.com/benthepythondev/reed-jobs-scraper)
- [SEEK Jobs Scraper](https://apify.com/benthepythondev/seek-jobs-scraper)
- [JobsDB Jobs Scraper](https://apify.com/benthepythondev/jobsdb-jobs-scraper)
- [Ashby Jobs Scraper](https://apify.com/benthepythondev/ashby-jobs-scraper)

**Keywords:** Bayt scraper, Bayt jobs scraper, Middle East jobs scraper, UAE jobs scraper, Saudi jobs scraper, MENA hiring data, scrape Bayt, Bayt job board API, job postings scraper, recruiting leads, hiring intelligence, lead generation jobs data, Apify jobs scraper.

# Actor input Schema

## `searchUrls` (type: `array`):

Bayt.com job search URLs. The actor automatically uses the stable ajax view.

## `keyword` (type: `string`):

Optional keyword used to build a Bayt search URL, for example sales, nurse, data analyst or python.

## `maxPages` (type: `integer`):

Maximum result pages per URL.

## `maxResults` (type: `integer`):

Maximum number of jobs to return.

## `useResidentialProxy` (type: `boolean`):

Use Apify residential proxy for Bayt Cloudflare reliability in the Apify cloud.

## `proxyCountry` (type: `string`):

Residential proxy country code. AE is a good default for Bayt.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.bayt.com/en/international/jobs/python-jobs/"
  ],
  "keyword": "python",
  "maxPages": 1,
  "maxResults": 10,
  "useResidentialProxy": true,
  "proxyCountry": "AE"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrls": [
        "https://www.bayt.com/en/international/jobs/python-jobs/"
    ],
    "keyword": "python",
    "maxPages": 1,
    "maxResults": 10,
    "useResidentialProxy": true,
    "proxyCountry": "AE"
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/bayt-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrls": ["https://www.bayt.com/en/international/jobs/python-jobs/"],
    "keyword": "python",
    "maxPages": 1,
    "maxResults": 10,
    "useResidentialProxy": True,
    "proxyCountry": "AE",
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/bayt-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://www.bayt.com/en/international/jobs/python-jobs/"
  ],
  "keyword": "python",
  "maxPages": 1,
  "maxResults": 10,
  "useResidentialProxy": true,
  "proxyCountry": "AE"
}' |
apify call benthepythondev/bayt-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/bayt-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bayt Jobs Scraper - Middle East Hiring Data",
        "description": "Scrape Bayt.com jobs: title, company, location, summary, career level, experience, posted date, easy apply flag and job URL.",
        "version": "1.0",
        "x-build-id": "jv7DTflFdDvHN3C89"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~bayt-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-bayt-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~bayt-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-bayt-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~bayt-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-bayt-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Bayt.com job search URLs. The actor automatically uses the stable ajax view.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Optional keyword used to build a Bayt search URL, for example sales, nurse, data analyst or python."
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum result pages per URL.",
                        "default": 3
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of jobs to return.",
                        "default": 50
                    },
                    "useResidentialProxy": {
                        "title": "Use residential proxy",
                        "type": "boolean",
                        "description": "Use Apify residential proxy for Bayt Cloudflare reliability in the Apify cloud.",
                        "default": true
                    },
                    "proxyCountry": {
                        "title": "Proxy country",
                        "type": "string",
                        "description": "Residential proxy country code. AE is a good default for Bayt.",
                        "default": "AE"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
