{
  "openapi": "3.0.1",
  "info": {
    "title": "Bayt.com | Only $0.9💰| Search by URL or Keywords (/w EMAILS)",
    "description": "💰$0.9 per 1,000 jobs. Scrape job listings from Bayt.com, the leading Middle East job portal. Extract job titles, company names, locations, descriptions, requirements, salaries, and more. Supports search URLs and individual job pages with pagination and proxy support.",
    "version": "0.0",
    "x-build-id": "D5TOi1klnmN5KXAem"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~bayt-search-cheerio-ppr/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-bayt-search-cheerio-ppr",
        "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/memo23~bayt-search-cheerio-ppr/runs": {
      "post": {
        "operationId": "runs-sync-memo23-bayt-search-cheerio-ppr",
        "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/memo23~bayt-search-cheerio-ppr/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-bayt-search-cheerio-ppr",
        "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": {
          "startUrls": {
            "title": "Copy and paste URLs from Bayt website",
            "type": "array",
            "description": "Bayt job listing pages (e.g. …/en/uae/jobs/software-engineer-jobs/) or job detail URLs. If every URL is empty, the actor uses **Search by filters** — see the actor description for which fields are required in that case.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchJobKeyword": {
            "title": "Job keyword",
            "type": "string",
            "description": "Becomes the keyword segment in the Bayt path (e.g. “software engineer” → …/software-engineer-jobs/). Optional when using filters without URLs: use for a focused search, or leave blank for country-wide listing (still set **Country / region** or rely on its default). If **Country / region** is omitted by your client, this or **Location** must be set."
          },
          "searchLocation": {
            "title": "Location",
            "type": "string",
            "description": "City or area name for the path (e.g. “Dubai” → …/jobs-in-dubai/ or combined with keyword)."
          },
          "searchCountryRegion": {
            "title": "Country / region",
            "enum": [
              "international",
              "uae",
              "saudi-arabia",
              "qatar",
              "kuwait",
              "oman",
              "bahrain",
              "egypt",
              "jordan",
              "lebanon",
              "iraq",
              "pakistan",
              "india",
              "morocco",
              "tunisia",
              "algeria",
              "libya",
              "yemen",
              "syria",
              "palestine"
            ],
            "type": "string",
            "description": "**Required when using filters without Start URLs** (unless **Job keyword** or **Location** is set — then the actor may default to `international`). Chooses the Bayt path segment: `uae`, `international`, etc. Schema default: **Middle East & international**.",
            "default": "international"
          },
          "searchPostedWithin": {
            "title": "Posted within",
            "enum": [
              "anytime",
              "past_30_days",
              "past_7_days",
              "past_24_hours"
            ],
            "type": "string",
            "description": "Maps to Bayt’s **Date posted** filter.",
            "default": "anytime"
          },
          "searchSortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date",
              "language"
            ],
            "type": "string",
            "description": "Bayt sort option for the listing.",
            "default": "relevance"
          },
          "searchEasyApplyOnly": {
            "title": "Easy apply only",
            "type": "boolean",
            "description": "Matches Bayt’s **Easy Apply only** filter.",
            "default": false
          },
          "searchRemoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Matches Bayt’s remote-work filter.",
            "default": false
          },
          "searchWorkType": {
            "title": "Work type (advanced)",
            "enum": [
              "",
              "full_time",
              "part_time",
              "freelance",
              "contractor",
              "temporary"
            ],
            "type": "string",
            "description": "Bayt employment type filter.",
            "default": ""
          },
          "searchCareerLevel": {
            "title": "Career level",
            "enum": [
              "",
              "student",
              "entry",
              "mid",
              "management",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Maps to Bayt’s **Career level** facet (added to the listing URL).",
            "default": ""
          },
          "searchLanguage": {
            "title": "Site language",
            "enum": [
              "en",
              "ar"
            ],
            "type": "string",
            "description": "Locale segment used when building listing/detail URLs from filters: English (`/en/`) or Arabic (`/ar/`).",
            "default": "en"
          },
          "searchIndustry": {
            "title": "Industry ID (advanced)",
            "type": "string",
            "description": "Bayt industry facet ID added to the listing URL (`filters[jb_industry_id_original][]`). Accepts one ID or several comma-separated IDs (e.g. `33,25`). Find IDs in the **Industry** sidebar links on a Bayt search page."
          },
          "searchRadiusKm": {
            "title": "Search radius (km)",
            "type": "integer",
            "description": "Applied as a **post-filter** around **Location** (or **Latitude/Longitude** if set). Bayt has no radius URL param. Jobs in cities within this distance are kept; jobs in unknown cities are not dropped. Major MENA cities supported."
          },
          "searchLatitude": {
            "title": "Center latitude (advanced)",
            "type": "string",
            "description": "Optional explicit center for **Search radius**. Overrides the city lookup from **Location**. Use together with **Center longitude** and **Search radius**."
          },
          "searchLongitude": {
            "title": "Center longitude (advanced)",
            "type": "string",
            "description": "Optional explicit center for **Search radius**. Overrides the city lookup from **Location**. Use together with **Center latitude** and **Search radius**."
          },
          "searchMinSalary": {
            "title": "Minimum salary (advanced)",
            "type": "integer",
            "description": "Applied as a **post-filter** on the parsed salary (Bayt has no salary URL param). Jobs whose salary is below this value are dropped; jobs without a stated salary are kept. Combine with **Minimum salary currency**."
          },
          "searchMinSalaryCurrency": {
            "title": "Minimum salary currency",
            "enum": [
              "USD",
              "AED",
              "SAR",
              "QAR",
              "KWD",
              "BHD",
              "OMR",
              "EGP",
              "JOD",
              "PKR",
              "INR",
              "EUR",
              "GBP"
            ],
            "type": "string",
            "description": "Currency for **Minimum salary** (converted to USD for comparison).",
            "default": "USD"
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed jobs (incremental)",
            "type": "boolean",
            "description": "Skips jobs that are identical to a previous run. Requires a **Key-Value Store name** below so state persists across runs. Adds a `changeType` field (`new`/`updated`) to each result.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Also output unchanged jobs",
            "type": "boolean",
            "description": "When **incremental** is on, still output jobs that did not change (tagged `changeType: \"unchanged\"`) instead of skipping them.",
            "default": false
          },
          "emitExpired": {
            "title": "Output expired jobs",
            "type": "boolean",
            "description": "When **incremental** is on, emit a record (`changeType: \"expired\"`) for jobs that were seen in a previous run but no longer appear. Requires a **Key-Value Store name**.",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposts / duplicate content",
            "type": "boolean",
            "description": "When **incremental** is on, skip jobs whose content duplicates an already-seen job posted under a different ID (tagged internally as `repost`).",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "both",
              "text",
              "html",
              "none"
            ],
            "type": "string",
            "description": "Which description fields to include in each result.",
            "default": "both"
          },
          "descriptionMaxLength": {
            "title": "Description max length",
            "type": "integer",
            "description": "Truncate `descriptionText` / `descriptionHtml` to this many characters. Leave empty for no limit."
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Drop heavy/nested fields (`descriptionHtml`, `basicInfo`, `preferredCandidate`, `jobDetails`) for a smaller record.",
            "default": false
          },
          "removeEmptyFields": {
            "title": "Remove empty fields",
            "type": "boolean",
            "description": "Strip fields that are null, empty strings, empty arrays, or empty objects from each result.",
            "default": false
          },
          "phoneExtractionMode": {
            "title": "Phone extraction mode",
            "enum": [
              "off",
              "description",
              "full"
            ],
            "type": "string",
            "description": "Control phone numbers in the `contacts` block. **Off** removes phones, **Description** scans the description (default), **Full** also scans skills / preferred candidate / job details.",
            "default": "description"
          },
          "maxItems": {
            "title": "Max jobs",
            "type": "integer",
            "description": "Maximum number of job listings to collect.",
            "default": 100
          },
          "enrichEmails": {
            "title": "Enrich with employer contact emails (experimental, billed per email)",
            "type": "boolean",
            "description": "If enabled, tries to find a contact email for each employer by discovering the company's website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.",
            "default": false
          },
          "moreResults": {
            "title": "Scrape all possible results (bypass limit of 500 items/listings)",
            "type": "boolean",
            "description": "When enabled, keeps paginating to retrieve as many results as Bayt allows.",
            "default": false
          },
          "includeListingDetails": {
            "title": "Include full job details",
            "type": "boolean",
            "description": "Fetch each job’s detail page for full description and fields.",
            "default": false
          },
          "downloadImages": {
            "title": "Download images (stored in Key-Value Store)",
            "type": "boolean",
            "description": "Download each job’s image (the company logo) into the run’s Key-Value Store and add a `KVImages` array of stored URLs to the result.",
            "default": false
          },
          "maxImages": {
            "title": "Max images per listing",
            "type": "integer",
            "description": "Maximum images to store per job when **Download images** is enabled.",
            "default": 10
          },
          "storeName": {
            "title": "Key-Value Store name (optional)",
            "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
            "type": "string",
            "description": "Optional named store for long-term retention of listings."
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum parallel requests.",
            "default": 100
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum concurrent requests.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "type": "integer",
            "description": "Retries per failed request before giving up.",
            "default": 100
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Incoming Slack webhook. Receives a short summary when the run finishes."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Discord webhook. Receives a short summary when the run finishes."
          },
          "webhookUrl": {
            "title": "Custom webhook URL",
            "type": "string",
            "description": "Generic webhook. Receives a JSON payload with the result count and incremental counts when the run finishes."
          },
          "webhookHeaders": {
            "title": "Custom webhook headers",
            "type": "object",
            "description": "Optional HTTP headers sent with the **Custom webhook URL** request (e.g. an `Authorization` token)."
          },
          "telegramToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Bot token for Telegram notifications. Used together with **Telegram chat ID**."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Target chat/channel ID for Telegram notifications. Used together with **Telegram bot token**."
          },
          "whatsappAccessToken": {
            "title": "WhatsApp access token",
            "type": "string",
            "description": "WhatsApp Cloud API access token. Used with **WhatsApp phone number ID** and **WhatsApp recipient**."
          },
          "whatsappPhoneNumberId": {
            "title": "WhatsApp phone number ID",
            "type": "string",
            "description": "WhatsApp Cloud API sender phone number ID."
          },
          "whatsappTo": {
            "title": "WhatsApp recipient number",
            "type": "string",
            "description": "Recipient phone number (E.164, e.g. 9715XXXXXXXX) for WhatsApp notifications."
          },
          "notificationLimit": {
            "title": "Notification sample size",
            "type": "integer",
            "description": "Include up to this many sample jobs (id, title, company, apply URL) in the webhook payload. Leave empty to send only the summary."
          },
          "notifyOnlyChanges": {
            "title": "Notify only when there are changes",
            "type": "boolean",
            "description": "With **incremental** on, only send notifications when there is at least one new or updated job.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings for the crawler.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}