BestJobs.eu Scraper
Pricing
from $1.20 / 1,000 results
BestJobs.eu Scraper
Scrape job listings from BestJobs.eu – Romania's leading job board. Filter by keyword, location, and employment type. No API key required.
Pricing
from $1.20 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
8
Total users
5
Monthly active users
5 days ago
Last modified
Categories
Share

Extract job listings from bestjobs.eu at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.
Why this scraper?
🎯 Built for Romania
A dedicated Romanian scraper, not a global tool with a country dropdown. Search and locations are tuned for bestjobs.eu.
📄 Complete job data
Full job title and description, direct listing URL and publish date for every record.
💶 Salary data
Salary parsed from the listing where the employer publishes it, with the currency reported in salaryCurrency (often EUR). Missing salaries are returned as null, never guessed.
🏢 Company details
Hiring company name plus the profile details the source publishes, such as logo and company page.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new jobs instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "developer" | Job title, skill or keyword to search for. Example: developer, accountant, manager. |
location | string | (empty) | City name to filter by. Example: bucuresti, cluj-napoca, timisoara, remote. |
employmentType | string | (empty) | Filter by employment type. |
maxResults | integer | 5 | Maximum number of job listings to scrape. Set to 0 for unlimited. |
fetchDetails | boolean | false | ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost). |
startUrls | array | (empty) | Optional list of BestJobs.eu job or search URLs to scrape directly. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
jobId | string | BestJobs internal listing ID |
title | string | Job title |
slug | string | Listing slug |
url | string | Direct link to the listing |
companyName | string | Hiring company name |
companyId | string | Company ID |
companySlug | string | Company slug |
companyRating | number | Company rating (or null) |
companyLogo | string | Full URL to the company logo (or null) |
description | string | Full job description as HTML |
descriptionText | string | Full job description as plain text |
descriptionMarkdown | string | Full job description converted to Markdown |
locations | string | List of locations for the role |
remote | boolean | true for fully remote roles |
partialRemote | boolean | true for hybrid roles |
relocation | boolean | true if relocation is offered |
employmentTypes | string | Employment type(s) |
salary | string | Salary text as displayed (or null) |
salaryMin | number | Minimum salary (numeric), or null |
salaryMax | number | Maximum salary (numeric), or null |
salaryCurrency | string | Currency code of the salary |
salaryPeriod | string | Pay period (e.g. month, year, hour) |
salaryConfidential | boolean | true if the employer marked salary confidential |
spokenLanguages | array | Required spoken languages with level |
applications | number | Number of applications received (or null) |
totalViews | number | Total listing views (or null) |
interviewQuestionCount | number | Number of employer screening questions (0 when none) |
applyUrl | string | Direct application link |
hasOwnApplyUrl | boolean | true if the employer uses an external apply URL |
vacancies | number | Number of open positions (or null) |
premium | boolean | true for paid/promoted listings |
scrapedAt | string | ISO 8601 scrape timestamp |
changeStatus | string | NEW, CHANGED or UNCHANGED compared to the previous time this job was seen |
contentHash | string | Stable hash of the listing content, used for repost and change detection |
Example record
{"jobId": "52028274","title": "Procurement Specialist with Italian for Technology","slug": "procurement-specialist-with-italian-for-technology","url": "https://www.bestjobs.eu/en/job/procurement-specialist-with-italian-for-technology","companyName": "Accenture Operations","companyId": "2411496","companySlug": "accenture","companyRating": 4.42,"companyLogo": "https://imgcdn.bestjobs.eu/cdn/el/plain/employer_logo/5fa53bc9aab32.png","description": "<p><b>Your career</b> is about what you want to be and who you want to be …</p>","descriptionText": "Your career is about what you want to be and who you want to be …","descriptionMarkdown": "**Your career** is about what you want to be and who you want to be …","locations": "Remote","remote": true,"partialRemote": false,"relocation": false,"employmentTypes": "Full time","salary": "910 - 1010 EUR/month","salaryMin": 910,"salaryMax": 1010,"salaryCurrency": "EUR","salaryPeriod": "month","salaryConfidential": true,"spokenLanguages": [{ "language": "English", "level": "Advanced" },{ "language": "Italian", "level": "Advanced" }],"applications": 5,"totalViews": 29357,"interviewQuestionCount": 0,"applyUrl": "https://accenture.wd103.myworkdayjobs.com/AccentureCareers/job/Bucharest/…","hasOwnApplyUrl": true,"vacancies": 1,"premium": true,"scrapedAt": "2026-07-02T12:25:42.880Z","changeStatus": "NEW","contentHash": "8b08226796d64c42"}
Examples
Search for programator roles in București:
{"searchQuery": "programator","location": "București","maxResults": 100}
Filter by contract type:
{"searchQuery": "programator","location": "București","maxResults": 100,"employmentType": ""}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.bestjobs.eu/"}],"maxResults": 200}
Daily feed (run on a schedule):
{"searchQuery": "programator","maxResults": 500}
Schedule this input in the Apify Scheduler (for example daily at 07:00) to keep an always-fresh feed of the newest listings.
💰 Pricing
$1.5 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.5 |
| 10,000 | ~$15 |
| 100,000 | ~$150 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.9 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Salary is only returned when the employer publishes it — many listings carry
nullsalary fields. - Company details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: bestjobs.eu — Romania job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl