NoFluffJobs Scraper — IT Jobs & Salary Data API
Pricing
from $2.00 / 1,000 scraped nofluffjobs jobs
NoFluffJobs Scraper — IT Jobs & Salary Data API
Export NoFluffJobs job offers with salary ranges per contract, must-have skills, seniority, locations, benefits and recruitment steps. USD 2.50 per 1,000 jobs.
Pricing
from $2.00 / 1,000 scraped nofluffjobs jobs
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
NoFluffJobs Scraper exports public job offers from No Fluff Jobs in Poland, the Czech Republic, Slovakia, Hungary and Ukraine, with salary ranges per contract type, must-have and nice-to-have skills, seniority, locations, benefits and recruitment steps. It is built for compensation analysts, recruiters, job-market researchers and AI agents, and costs about USD 2.50 per 1,000 job records on the FREE tier (USD 2.00 on GOLD), plus a small start fee.
The Actor reads the same public listing and job-detail JSON that the No Fluff Jobs website loads, so no login, cookies or API key are needed. Every row is validated before it is written, each job appears once per run, and run diagnostics go to the OUTPUT key-value record.
What data does NoFluffJobs Scraper return?
Each dataset row is one job record of type: "job". Optional values are null and lists are always arrays, in both enriched and list-only runs.
| Field | What you get |
|---|---|
jobId, jobUrl, apiUrl | Job slug, public job URL and the public detail JSON URL |
title, category, seniority | Job title, No Fluff Jobs category (backend, data, devops…), and levels such as Senior |
companyName, companyWebsite, companySize | Employer name, website and size band, for example 250 - 499 |
locations, remote, hybridDescription | Cities and countries, fully-remote flag, and the hybrid note (for example 6x/msc) |
salaryMinimum, salaryMaximum, salaryCurrency, salaryPeriod | The first published salary range, with period month, day or hour |
salaryContracts | Every contract type with its own range, currency, period and paid-holiday flag |
primaryTechnology, mustHaveSkills, niceToHaveSkills, languages | Main technology, required and optional skills, required languages |
description, requirements, dailyTasks | Plain-text role description, requirements and daily tasks |
benefits, officePerks, recruitmentProcess, onlineInterview, applyType | Hiring details as published |
postedAt, expiresAt, scrapedAt | Posting, expiry and extraction timestamps |
How do I get NoFluffJobs salary data for a technology?
Pick a market and categories, add keywords, and set a result cap. The Console prefill searches Polish backend jobs that mention Python:
{"region": "pl","categories": ["backend"],"keywords": ["Python"],"maxResults": 25}
A wider salary-research input:
{"region": "pl","categories": ["backend", "data", "devops"],"seniority": ["Senior"],"remoteOnly": true,"salaryCurrency": "EUR","salaryPeriod": "month","enrichDetails": true,"maxResults": 200}
| Input | What it does |
|---|---|
region | Market: pl, cz, sk, hu or ua (default pl) |
categories | One or more categories such as backend, frontend, data, devops; prefilled backend in Console, empty means all |
keywords | Keep jobs whose title, company, technology or skill tiles contain any keyword |
seniority | Trainee, Junior, Mid, Senior, Lead, Expert; empty means all |
remoteOnly | Keep only fully remote listings (default false) |
salaryCurrency, salaryPeriod | Currency (PLN, EUR, USD, GBP, CZK, HUF, UAH) and period used for list-level salaries |
enrichDetails | Open each job's detail JSON for description, contracts, skills, benefits and recruitment steps (default true) |
startUrls | Single job URLs such as https://nofluffjobs.com/job/<slug>, or region/category pages such as https://nofluffjobs.com/pl/backend. Job URLs alone, with no keywords or filters, return only those jobs |
maxResults | Delivered and billed rows, 1–10,000 (default 20) |
maxPages | Listing pages scanned (20 listings each), 1–200 (default 50) |
maxConcurrency | Parallel detail requests, 1–20 (default 8) |
When should I use it, and when not?
Use it when you benchmark IT salaries in Poland or CEE by stack, seniority and contract type, monitor which companies hire, feed an internal job index, or give an AI agent current No Fluff Jobs postings.
Use another Actor when:
- You also want JustJoin.it postings: JustJoin.it Scraper.
- You want worldwide remote jobs: We Work Remotely Jobs Scraper, Working Nomads Remote Jobs Scraper or Jobspresso Remote Jobs Scraper.
- You want US tech jobs: Dice Jobs Scraper.
- You want jobs from company career boards: Greenhouse Jobs Scraper or Ashby Jobs API Scraper.
- You want No Fluff Jobs' own published salary reports, candidate profiles, or to apply to jobs. This Actor returns live job offers only.
Use it from an AI assistant
NoFluffJobs Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/nofluffjobs-scraper, then ask, for example: "Pull 50 senior DevOps jobs from No Fluff Jobs Poland and give me the B2B salary range per month in PLN."
Run it with the API
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/nofluffjobs-scraper').call({region: 'cz',categories: ['devops'],keywords: ['Kubernetes'],maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((job) => `${job.title} | ${job.companyName} | ${job.salaryMinimum}-${job.salaryMaximum} ${job.salaryCurrency}/${job.salaryPeriod}`));
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("muhammadafzal/nofluffjobs-scraper").call(run_input={"region": "pl", "categories": ["data"], "seniority": ["Senior"], "maxResults": 50})for job in client.dataset(run.default_dataset_id).iterate_items():print(job["title"], job["companyName"], job["salaryContracts"], job["jobUrl"])
What does the output look like?
Two records from a prefill run on 2026-10-26, shortened:
[{"type": "job","jobId": "senior-aws-developer-mindbox-krakow","title": "Senior AWS Developer","companyName": "Mindbox Sp. z o.o.","companyWebsite": "https://mindboxgroup.com/","companySize": "250 - 499","category": "backend","seniority": ["Senior"],"locations": ["Kraków, Poland"],"remote": true,"hybridDescription": "6x/msc","salaryMinimum": 1450,"salaryMaximum": 1550,"salaryCurrency": "PLN","salaryPeriod": "day","salaryContracts": [{ "employmentType": "b2b", "minimum": 1450, "maximum": 1550, "currency": "PLN", "period": "day", "paidHoliday": null }],"primaryTechnology": "Python","mustHaveSkills": ["Python", "AWS", "Jenkins", "Git", "Ansible", "DevOps"],"niceToHaveSkills": ["Linux", "Terraform", "IaC"],"languages": ["en"],"applyType": "url","postedAt": "2026-10-21T22:01:06.348Z","expiresAt": "2026-11-21T23:59:59.000Z","jobUrl": "https://nofluffjobs.com/job/senior-aws-developer-mindbox-krakow"},{"type": "job","jobId": "python-backend-engineer-ework-group-warsaw","title": "Python Backend Engineer","companyName": "Ework Group","companySize": "50 - 249","locations": ["Warsaw, Poland", "Remote", "lower-silesian, Poland"],"remote": true,"salaryMinimum": 47,"salaryMaximum": 50,"salaryCurrency": "EUR","salaryPeriod": "hour","mustHaveSkills": ["Python", "Fast API", "Microservices", "GitHub Actions", "Azure"],"languages": ["en", "pl"],"onlineInterview": true,"jobUrl": "https://nofluffjobs.com/job/python-backend-engineer-ework-group-warsaw"}]
Pricing: how much does it cost to scrape NoFluffJobs?
The Actor uses pay-per-event pricing with platform usage included. Each row written to the dataset is one event.
| Event | FREE | BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---|---|---|---|
| Scraped NoFluffJobs job (one dataset row) | USD 0.002501 | USD 0.002438 | USD 0.002375 | USD 0.002 |
| Actor start (per started GB of allocated memory) | USD 0.006251 | USD 0.006094 | USD 0.005938 | USD 0.005 |
Worked totals on the FREE tier at the default 256 MB memory (one start event):
- Prefill, 25 rows: 25 × USD 0.002501 + USD 0.006251 = about USD 0.069
- 1,000 rows: 1,000 × USD 0.002501 + USD 0.006251 = about USD 2.51
A search with no matches charges only the start fee. Before each write the Actor checks your run's maximum total charge and stops cleanly when the next row would exceed it.
What are the limits?
- One row per job: a job advertised in several cities has one listing URL per city. The Actor collapses them to one posting before fetching details and never writes or bills the same
jobIdtwice in a run; all cities appear inlocations.OUTPUT.duplicatesSkippedcounts any repeats it dropped. - Scan depth: at most
maxPages× 20 listings are scanned (4,000 atmaxPages200), so narrow keyword searches can return fewer rows thanmaxResults. - List-only mode: with
enrichDetails: falsethe run is faster, but description, contracts, benefits and recruitment fields stay empty. - Missing source fields such as salary, company website or hybrid notes are
null, never invented. - Blocking: a first-page 403 or 429 is reported as
BLOCKEDinOUTPUT; invalid input isREJECTED.
FAQ
Is there a NoFluffJobs API?
This Actor is not an official No Fluff Jobs API and is not affiliated with No Fluff Jobs. It reads the public JSON the website uses and gives you a stable, documented output you can call from the Apify API, the JavaScript or Python client, or an MCP client.
Will a multi-city job appear more than once?
No. No Fluff Jobs gives a multi-city job one listing URL per city, but the Actor keeps one row per jobId, lists every city in locations, and bills that job once.
Which countries does it cover?
Poland (pl), the Czech Republic (cz), Slovakia (sk), Hungary (hu) and Ukraine (ua). One run covers one market.
How do I get salary data in EUR or per hour?
Set salaryCurrency and salaryPeriod for list-level salaries. salaryContracts always keeps each contract in its originally published currency and period.
Can I scrape a single NoFluffJobs job URL?
Yes. Add https://nofluffjobs.com/job/<slug> to startUrls; direct job URLs are always fetched with full details. With no keywords, categories or other filters, the run returns and bills only the jobs you listed.
Can I export the jobs to CSV or Excel?
Yes. Download the dataset from Apify Console as CSV, Excel, JSON or XML, or read it through the API.
Related Actors
Job-board data from the same developer:
- JustJoin.it Scraper for Polish IT jobs with salaries per contract and currency
- We Work Remotely Jobs Scraper for remote jobs from We Work Remotely
- Dice Jobs Scraper for US tech jobs
- Greenhouse Jobs Scraper and Ashby Jobs API Scraper for company career boards
- Working Nomads Remote Jobs Scraper and Jobspresso Remote Jobs Scraper for remote job feeds
Legal and compliance
NoFluffJobs Scraper reads public job-advertisement data only. It does not use candidate accounts, cookies or application forms. Follow No Fluff Jobs' terms, GDPR and database law, keep only what you need, link back to the original posting, and do not use job data for spam or discriminatory decisions.
Last verified: 2026-10-27