The Bayt API is best evaluated by looking at its schema. Below are all 68 fields, grouped by what they describe, followed by the filters that narrow a run before it costs anything.
Coverage includes INTERNATIONAL, the United Arab Emirates, Saudi Arabia, Egypt, KW, QA, BH, JO, LB, PK, India, OM, IQ and MA.
Here is what our own Bayt Actor returns, what it costs, and where its limits are.
Every field
Each record contains 68 fields, divided into these groups:
- salary — salaryText, salaryCurrency, salaryMin, salaryMax, salaryPeriod, salaryUsdCurrency, salaryUsdMin, salaryUsdMax, salaryUsdPeriod
- is — isRemote, isExternal, isAggregated, isHighlighted, isBranded, isAiTranslated, isRepost
- company — company, companyUrl, companyLogoUrl, companySize
- description — description, descriptionHtml, descriptionMarkdown
- contact — contactName, contactEmail, contactPhone
- extracted — extractedEmails, extractedPhones, extractedUrls
- job — jobId, jobRole
- employment — employmentType, employmentTypeNormalized
- age — ageMin, ageMax
- posted — postedDate, postedAt
- repost — repostOfId, repostDetectedAt
Here are the first fields from one row in a real dataset:
{
"jobId": "0b2e41dee2018d2b772f0560dab0ef015d1893b0ccd25ef0f0ee20c1d4c06804",
"title": "Senior OutSystems Developer",
"company": "Harjai Computers",
"companyUrl": "https://www.bayt.com/company/company/view/?lang=en&company-url=harjai-computers-2252580",
"companyLogoUrl": "https://secure.b8cdn.com/120x120/images/logo/80/2252580_logo_1754409431_n.png",
"location": "Dubai, UAE",
"city": "Dubai",
"country": "UAE",
"distanceKm": null,
"salaryText": null,
"salaryCurrency": null,
"salaryMin": null,
"salaryMax": null,
"salaryPeriod": null
}
Filters that narrow a run
The input supports 40 options: query, startUrls, country, location, employmentType, careerLevel, datePosted, sortBy, searchMinSalary, easyApplyOnly, searchRadiusKm, searchLatitude, searchLongitude, maxResults, includeDetails, descriptionMaxLength, compact, removeEmptyFields, incrementalMode, stateKey, and more. Because the filters run server-side, you pay for the records you requested instead of filtering them afterwards.
Coverage is INTERNATIONAL, the United Arab Emirates, Saudi Arabia, Egypt, KW, QA, BH, JO, LB, PK, India, OM, IQ and MA. The country option accepts INTERNATIONAL, AE, SA, EG, KW, QA, BH, JO, LB, PK, IN, OM, IQ, MA, with INTERNATIONAL as the default. Each run is limited to one market before any record is produced, so records outside that market are neither fetched nor billed.
What it costs
Pricing is per event, with no subscription:
- $0.0005 per actor start
- $0.00099 per result
Here is a measured run, not an estimate:
- 30 records in 5.5 seconds
- cost: $0.00052 — about $0.02 per 1,000 records
What people use it for
- Benchmarking. Pricing and salary fields support comparisons across the entire set instead of requiring someone to eyeball a page of results.
- Lead lists. Company-level fields help isolate the relevant segment before anyone opens a CRM.
- Change detection. Timestamps make it possible to diff runs and act on new records instead of reading everything again.
- Geographic analysis. Location fields allow market-by-market comparisons without requiring a separate data source.
The honest caveats
- An empty field means the source showed nothing. Values are never inferred or filled in from another source.
- The schema follows Bayt's markup. A redesign can add, rename or drop fields.
- Anything Bayt places behind a login is absent from every field below, by design.
Questions people ask
Are all fields always populated?
No, and missing values are not guessed. When the source leaves a field blank, it comes back blank. An empty value means Bayt did not show one, not that extraction failed.
Which markets does it cover?
country accepts INTERNATIONAL, AE, SA, EG, KW, QA, BH, JO, LB, PK, IN, OM, IQ, MA and defaults to INTERNATIONAL. A single run covers one market. Covering several requires several runs, each billed only for what it returns.
Which filters are applied at the source?
employmentType, datePosted, searchMinSalary, maxResults run server-side. This affects cost as well as convenience: filtered-out records are never produced, so they are never billed.
How fresh is the data?
Every run reads Bayt when it runs, with no cached copy in between. Two runs a week apart provide two snapshots, enabling change detection.
Can I fetch only what changed?
Yes, through incrementalMode. Without it, running the Actor again returns the full set, leaving you to dedupe it on your side.
Is there an official Bayt export?
No. There is no public bulk export or API. The field list above therefore comes from parsing pages, not from a documented schema.
Try it
If these are the fields you need, the Bayt API endpoint we maintain produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.
Disclosure: we build and maintain this Actor, and the link above is an affiliate link.
Further reading
- dataset storage — how results are stored and exported
- Wellfound API — another scraper we build and document
- the Upwork API field reference — another scraper we build and document
- the Internshala API, in the same detail — another scraper we build and document
We also publish our write-up on the Bayt API on blackfalcondata.com — the request, the response, and what a run costs.
Top comments (0)