
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Export IT job offers from No Fluff Jobs (nofluffjobs.com) in Poland, Hungary, Czechia, Slovakia and Ukraine: salary ranges per contract type, skills, tasks, benefits, company and full description. Search by keyword, technology or city with filters, or paste links. No login needed.
Export IT job offers from No Fluff Jobs (nofluffjobs.com), the tech job board for Poland, Hungary, Czechia, Slovakia and Ukraine. Search the way you would on the site, by technology, role, city or company, and get one clean row per job ad: salary ranges for every contract type, must-have and nice-to-have skills, daily tasks, benefits, company details and the full description. No login, no browser, a few seconds per run.
locations. Prefer the site's view? Turn on One row per city.python, react Kraków, data engineer), or paste No Fluff Jobs links.| Field | What it does |
|---|---|
searchQueries | What you would type into the site's search box: technology, role, city, company or a mix. react OR angular runs both searches. |
startUrls | Search links (filters included) or job links from nofluffjobs.com. |
maxResults | Maximum number of jobs in total (default 20; 0 = all). |
country | PL (default), HU, CZ, SK or UA. |
categories, seniority, employmentTypes | Site filters, e.g. backend, junior, b2b. |
cities, remoteOnly | City names (Warszawa, Kraków, Budapest…) and/or remote jobs only. |
minSalary, salaryCurrency, salaryPeriod | Minimum salary, and conversion of the main salary fields. |
sortBy | relevance, newest, salary-desc or salary-asc. |
includeDetails | Open each job page for description, tasks, benefits and all contract types (default on). |
splitLocations | One row per city listing instead of one row per ad. |
{
"searchQueries": ["python", "react OR angular"],
"country": "PL",
"seniority": ["mid", "senior"],
"employmentTypes": ["b2b"],
"remoteOnly": true,
"sortBy": "newest",
"maxResults": 100
}
Each row is one job ad (or one city listing with One row per city).
| Field | Description |
|---|---|
title, company, url | Job title, employer and job link |
jobId, postingId | The site's job reference and listing id |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryType | Main salary range (converted when you pick a currency or period) |
salaries | Every contract type with its range, currency, period and paid-holiday flag, as posted |
employmentTypes, contractStart, contractDuration | Contract types offered, start date (e.g. ASAP) and length of fixed-term contracts |
category, technology, seniority | Category, main technology and levels |
mustHaveSkills, niceToHaveSkills, requirementLanguages | Required and optional skills, ad language |
location, cities, countries, locations, latitude, longitude | Where the job is, with addresses and coordinates |
workMode, isFullyRemote, isHybrid, hybridDesc | Remote, hybrid or on-site |
dailyTasks, benefits, officePerks, equipment, methodology, recruitmentSteps | Job page details |
description, descriptionHtml, descriptionMarkdown, requirementsText, requirementsHtml | Full description and requirements as text, HTML and Markdown |
companyWebsite, companyProfileUrl, companySize, companyLogo | Company details |
applyOption, applyEmail, applyUrl | How to apply |
extractedEmails, extractedPhones, extractedUrls, socialProfiles | Contacts and links found in the ad text |
postedAt, renewedAt, validThrough, publishedAge | Dates |
region, markets, searchQuery, detailFetched, scrapedAt | Context of the row |
Example row from a test run (trimmed):
{
"jobId": "OSVMWO2T",
"postingId": "senior-fullstack-engineer-automate-box-Warsaw",
"url": "https://nofluffjobs.com/job/senior-fullstack-engineer-automate-box-warsaw",
"title": "Senior Fullstack Engineer, Automate",
"company": "Box Inc.",
"companyWebsite": "https://www.box.com/careers/poland",
"companySize": "2000",
"category": "fullstack",
"technology": "JavaScript",
"seniority": ["Senior"],
"location": "Warsaw",
"cities": ["Warsaw"],
"latitude": 52.23,
"longitude": 21,
"workMode": "hybrid",
"salaryText": "30000–39000 PLN permanent/month",
"salaryMin": 30000,
"salaryMax": 39000,
"salaryCurrency": "PLN",
"salaryPeriod": "month",
"salaryType": "permanent",
"salaries": [
{"type": "permanent", "min": 30000, "max": 39000, "currency": "PLN", "period": "month", "paidHoliday": true}
],
"contractStart": "ASAP",
"mustHaveSkills": ["AI", "React", "TypeScript", "REST API", "GCP"],
"niceToHaveSkills": ["Java", "Cloud platform", "CI/CD Pipelines"],
"benefits": ["Sport subscription", "Private healthcare", "Lunch card", "International projects"],
"requirementLanguages": ["en"],
"onlineInterviewAvailable": true,
"applyOption": "email",
"description": "Our compensation structure is the base salary and equity in the form of restricted stock units. What is Box? …",
"postedAt": "2026-10-09T15:30:18Z",
"validThrough": "2026-11-08T23:59:59",
"searchQuery": "javascript",
"detailFetched": true
}
You pay $1.50 per 1,000 jobs saved ($0.0015 per job), plus a small platform usage fee for compute and proxy traffic, which is billed separately. In our test runs usage was about $0.01 per 1,000 jobs (512 MB memory, datacenter proxy).
Rows that are not saved (failed pages, duplicates, jobs skipped by a filter) are never charged. Set a maximum total charge on the run and the scraper stops cleanly when it is reached.
Is it legal to scrape No Fluff Jobs? The scraper reads only public job ads that anyone can see without an account. Check the site's terms and the data-protection rules (such as GDPR) that apply to your use, especially for contact details found in ad texts.
Do I need an account, cookies or a proxy? No account or cookies. The default datacenter proxy works for this site; if the site ever refuses it, the run switches to Polish residential exits on its own.
How many jobs can I get?
Every job the site lists for your search. In our tests the Polish market had about 2,550 active ads (more than 10,000 city listings); all of them were saved in about 90 seconds. Set maxResults to 0 for all of them.
Why is a field empty? Some ads simply do not have it: about 2% of ads hide the salary, and many have no office perks, methodology or recruitment steps. With Full job details off, only search-card fields are filled.
Why do I get fewer jobs for Czechia or Slovakia? Those sites mostly show Polish jobs and have only a handful of their own. By default only the country's own jobs are kept; turn on Include jobs from other markets to get everything the site shows there.
Can I schedule it or use the API? Yes. Schedule runs (for example daily, sorted by newest) and read the dataset through the API or integrations.
applyUrl is filled only when the ad lists it.data engineer becomes category data plus keyword engineer); quote a phrase ("senior java developer") for an exact phrase.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch terms
What you would type into the site's search box: a technology (python, react), a role (data engineer), a city (Kraków), a company, or a combination (react Kraków). Each term is a separate search; results are de-duplicated. Write 'react OR angular' to run both searches. Advanced: the site's own filter syntax works too, e.g. 'requirement=java seniority=junior'.
startUrlsarrayOptionalNo Fluff Jobs links
Search links copied from the site (e.g. https://nofluffjobs.com/pl/praca-zdalna/python?criteria=seniority%3Djunior) or job links (https://nofluffjobs.com/job/...). A search link keeps its own filters; the filters below apply to search terms only.
maxResultsintegerOptionaldefault 20Maximum jobs
How many jobs to save in total (rows, when 'One row per city' is on). 0 = every matching job.
countryenumOptionalCountry
Which country's job market to search. Empty = Poland, the site's main market. For the other countries only jobs published for that country are kept (the Czech and Slovak sites list very few jobs of their own); turn on 'Include jobs from other markets' to also get the Polish jobs those sites show.
categoriesarrayOptionalJob category
Keep jobs in any of these categories.
seniorityarrayOptionalSeniority
Keep jobs at any of these levels.
employmentTypesarrayOptionalContract type
Keep jobs offering any of these contract types.
citiesarrayOptionalCities
Keep jobs in any of these cities, e.g. Warszawa, Kraków, Wrocław, Budapest. Remote jobs open to the city are included by the site.
remoteOnlybooleanOptionaldefault falseRemote jobs only
Keep only fully remote jobs (together with Cities: remote or in those cities).
minSalaryintegerOptionalMinimum salary
Keep jobs whose salary range reaches at least this amount, per month in PLN unless you pick a salary currency and period below.
jobLanguagestringOptionalJob ad language
Two-letter code of the language the ad is written in, e.g. en or pl. Several: 'en, pl'.
includeOtherMarketsbooleanOptionaldefault falseInclude jobs from other markets
For Hungary, Czechia, Slovakia and Ukraine: also keep the jobs from other markets (mostly Polish remote jobs) that the country's site shows.
sortByenumOptionaldefault "relevance"Sort by
Order in which the site returns jobs, which decides which jobs you get when the limit is lower than the number of matches.
includeDetailsbooleanOptionaldefault trueFull job details
Open each job page for the description, requirements, tasks, benefits, all contract types and company details. Turn off for faster search-card rows (title, company, location, primary salary, skills tags).
splitLocationsbooleanOptionaldefault falseOne row per city
The site lists a job ad once per city it is offered in. Off: one row per job ad with every city in 'locations'. On: one row per city listing, like the site's own result list.
salaryCurrencyenumOptionaldefault "original"Salary currency
Convert the main salary fields with the site's own exchange rates. 'salaries' always keeps every contract type as posted.
salaryPeriodenumOptionaldefault "original"Salary period
Convert the main salary fields to this period (the site's own conversion).
maxResultsPerSearchintegerOptionalMaximum jobs per search
Optional cap for each search term or link, so one broad term cannot use the whole limit. Empty or 0 = no cap.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter exits work well for this site. If the site ever refuses them, the run switches to Polish residential exits by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| jobId | string | null | |
| postingId | string | |
| url | string | |
| title | string | |
| company | string | null | |
| location | string | null | |
| salaryMin | number | null | |
| salaryMax | number | null | |
| latitude | number | null | |
| longitude | number | null | |
| mustHaveSkills | array | |
| description | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved No Fluff Jobs job ad (or city listing). | $0.0015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/nofluffjobs-scraper').call({
"searchQueries": [
"javascript"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/nofluffjobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/nofluffjobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.