NoFluffJobs Scraper icon

NoFluffJobs Scraper

Scrape No Fluff Jobs IT listings across Poland, Czechia, Slovakia, Hungary and the Netherlands by search filters or URL. Extract job titles, salaries,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

NoFluffJobs Scraper at a glance

NoFluffJobs Scraper is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes title, change type (incremental mode), company, category and seniority, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Jobs, Automation, Developer Tools
Pricing
$2.00 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
28 options
Run success
100.0% of completed public runs in the last 30 days

Scrape No Fluff Jobs IT listings across Poland, Czechia, Slovakia, Hungary and the Netherlands by search filters or URL. Extract job titles, salaries, required skills, descriptions, responsibilities, benefits, hiring steps, company sizes, GPS coordinates and office locations.

What NoFluffJobs Scraper can do

  • Salary transparency by default. Every record carries the disclosed pay range, contract type and a full per-contract-type breakdown, with hourly-quoted postings converted onto the same monthly figure as everything else.
  • Five markets in one run. Scrape Poland, Czechia, Slovakia, Hungary and the Netherlands, individually or all at once.
  • Structured search. Filter by category, seniority, employment type, posting language, city, technology, remote-only and salary range, no need to hand-build search URLs.
  • Full detail depth on demand. Required and nice-to-have skills, daily tasks, benefits, equipment, recruitment steps, company size and exact office GPS coordinates.
  • Clean, deduplicated output. One record per job, with every office city and its coordinates merged into a single locations array instead of one row per location.
  • Built for monitoring. Incremental mode returns only new and changed jobs on a recurring schedule, and a run that could not read the site fails loudly instead of returning an empty dataset.

Choose what to collect

These inputs let you configure NoFluffJobs Scraper - IT Jobs, Salaries & Skills. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredHow to find jobs. 'search' builds a query from the filters below. 'url' fetches the NoFluffJobs URLs you paste (search pages or individual job pages).

Choices: search, url

regionstringWhich NoFluffJobs market to search. 'All regions' scrapes every market.

Choices: pl, cz, sk, hu, nl, all

keywordstringFree-text search, e.g. a role, technology or company name. Leave empty to list everything in the region.
categorystringJob category. Leave empty for all categories.

Choices: , backend, frontend, fullstack, mobile, embedded, testing, devops, sys-administrator, agile, ux, project-manager, business-analyst, security, data, ai, support, architecture, marketing, sales, hr, finance

senioritystringExperience level. Leave empty for any.

Choices: , trainee, junior, mid, senior, expert

employmentTypestringContract type. Leave empty for any.

Choices: , b2b, permanent, mandate-contract, internship

jobLanguagestringLanguage the posting is written in. Leave empty for any.

Choices: , en, pl, cs, sk, hu, uk

Show 21 more inputs
More input fields
InputWhat it controls
citystringFilter to a single city (e.g. warszawa, krakow, praha). Leave empty for all cities.
technologystringRequire a specific skill or technology (e.g. java, react, kubernetes).
urlsarrayPaste NoFluffJobs URLs (one per line). Search/listing pages are walked with pagination; individual job pages are fetched directly. The search-mode fields are ignored in URL mode. The fields in the Filters and sort section still apply.
remoteOnlybooleanOnly return jobs that offer remote work. The detail fields remotePercent and fullyRemote tell you whether a job is fully remote or hybrid. Applies in BOTH search mode and URL mode.
sortBystringResult ordering. Default is the site's relevance ranking. Salary sorts use the disclosed range; newest sorts by publish date. Applied server-side, so it orders the whole result set, not just the page. Applies in BOTH search mode and URL mode.

Choices: , newest, salary-desc, salary-asc

minSalaryintegerOnly jobs whose disclosed salary range reaches at least this amount (monthly gross, in the region currency). Jobs with no disclosed salary are excluded when a salary filter is set. Applies in BOTH search mode and URL mode.
maxSalaryintegerOnly jobs whose disclosed salary range starts at or below this amount (monthly gross, in the region currency). Applies in BOTH search mode and URL mode.
fetchDetailsbooleanOpen each job's detail page to add full description, required/nice-to-have skills, daily tasks, benefits, equipment, recruitment steps, company size, salary breakdown and GPS. Turn off for a faster, lighter run with list-level fields only.
maxListingsintegerThe main limit: maximum number of jobs to return. 0 means unlimited (then Max pages becomes the cap).
maxPagesintegerSafety bound on how many search-result pages to walk per query/region (about 20 jobs per page). 0 means unlimited (walk until the storefront reports no more pages). Leave at the default; Max jobs is the primary limit. Only lower this if you set Max jobs to 0 (unlimited) and want pages to be the cap.
residentialRequestCapintegerCost guard. If you chose a Residential connection, switch to the cheaper Datacenter connection after this many residential requests. 0 means no cap.
residentialBudgetMbintegerCost guard. If you chose a Residential connection, switch to the cheaper Datacenter connection after pulling this many MB over residential. 0 means no budget limit.
resumeFromRunIdstringContinue ONE interrupted crawl. ID of a previous run of this actor (or a dataset ID) -- jobs already in that dataset are skipped, so this run returns only NEW jobs (a delta). Combine both runs' datasets for the full set. Max jobs then counts only the new jobs. For recurring monitoring of the SAME search across scheduled runs instead, use Incremental mode below.
incrementalModebooleanRecurring monitoring of the SAME search: schedule this actor and get only what changed (NEW/UPDATED/REAPPEARED/EXPIRED) each run -- the actor remembers its own baseline in a key-value store, no run ID to paste. Off by default so existing runs are unaffected. For continuing ONE interrupted crawl instead, use Resume above.
stateKeystringOptional. Name this monitoring campaign so you can run several different filter setups without them sharing a baseline. Leave empty to auto-derive a key from the mode and every filter (region, keyword, category, seniority, employment type, job language, city, technology, remote only, sort, salary range, URLs, fetch details) -- two different filter setups then never collide.
emitUnchangedbooleanIncremental mode only. When off (default), a job identical to the last run is skipped -- not returned, not billed. Turn on to also return (and pay for) every UNCHANGED job alongside NEW/UPDATED/REAPPEARED.
emitExpiredbooleanIncremental mode only. When on, a job that was tracked before but is no longer found after a COMPLETE scan of this search is returned once with changeType EXPIRED (and billed like any other row). Only fires on a complete, uncapped, non-resumed scan -- a partial run never marks jobs expired. Off by default.
ignoreFieldsForChangesarrayOptional. Field names to leave out of UPDATED detection and changedFields, on top of the built-in exclusion (the relative posted-or-renewed day count). Use a plain name such as highlighted, or a dotted path for a nested field such as salaryRanges.type. The fields stay in the output. Adding a name later does not mark already-tracked jobs as UPDATED.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

titleTitle (text)
changeTypeChange type (incremental mode) (text)
companyNameCompany (text)
categoryCategory (text)
senioritySeniority (array)
salaryFromSalary from (number)
salaryToSalary to (number)
salaryCurrencyCurrency (text)
citiesCities (array)
remoteRemote (boolean)
technologyMain tech (text)
regionRegion (text)
Show 13 more fields
urlURL (link)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
descriptionDescription (text)
requirementsMustMust-have requirements (array)
requirementsNiceNice-to-have requirements (array)
dailyTasksDaily tasks (array)
benefitsBenefits (array)
equipmentEquipment (object)
recruitmentStepsRecruitment steps (array)
companySizeCompany size (text)
salaryRangesSalary ranges (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "senior-java-developer-sample-company-warszawa",
  "reference": "REF-0001",
  "title": "Senior Java Developer",
  "url": "https://nofluffjobs.com/pl/job/senior-java-developer-sample-company-warszawa",
  "region": "pl",
  "companyName": "Sample Tech Company",
  "companySize": "500 - 999",
  "companyProfileUrl": "https://nofluffjobs.com/company/sample-tech-company-00000000",
  "category": "backend",
  "seniority": [
    "senior"
  ],
  "technology": "Java",
  "remote": true,
  "fullyRemote": false,
  "remotePercent": 50,
  "cities": [
    "Remote",
    "Warszawa"
  ],
  "locations": [
    {
      "city": "Warszawa",
      "country": "Poland",
      "countryCode": "POL",
      "latitude": 52,
      "longitude": 21
    }
  ],
  "salaryFrom": 21840,
  "salaryTo": 23520,
  "salaryCurrency": "PLN",
  "salaryType": "b2b",
  "salaryRanges": [
    {
      "type": "b2b",
      "from": 130,
      "to": 140,
      "currency": "PLN",
      "period": "Hour"
    }
  ],
  "description": "Full job description text appears here when fetchDetails is on.",
  "dailyTasks": [
    "Design backend services",
    "Build REST APIs"
  ],
  "requirementsMust": [
    {
      "name": "Java",
      "type": "main"
    },
    {
      "name": "Spring",
      "type": "main"
    }
  ],
  "requirementsNice": [
    {
      "name": "Kafka",
      "type": "nice"
    }
  ],
  "requirementLanguages": [
    "en"
  ],
  "benefits": [
    "Private healthcare",
    "Sport card"
  ],
  "officePerks": [
    "Free coffee"
  ],
  "equipment": {
    "computer": "Notebook",
    "operatingSystem": "Linux"
  },
  "recruitmentSteps": [
    "Phone screen",
    "Technical interview"
  ],
  "recruitmentLanguages": [
    "pl",
    "en"
  ],
  "onlineInterviewAvailable": true,
  "posted": "2026-01-01T00:00:00.000Z",
  "expiresAt": "2026-02-01T00:00:00.000Z"
}

Ways to use this data

  • Recruiters and talent teams: benchmark disclosed salary ranges and required skills across the region before writing a job ad.
  • Compensation and HR analysts: build a dataset of published pay ranges by seniority, technology and region.
  • Job boards and career sites: mirror open roles from five Central and Eastern European markets into your own listings.
  • Job seekers and career tools: track new and updated postings for a technology, city or seniority level on a schedule.
  • Market researchers: study remote-work adoption, contract types and benefits across the region's tech sector.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does NoFluffJobs Scraper return?

The documented output for NoFluffJobs Scraper includes title, change type (incremental mode), company, category, seniority, salary from, salary to and currency. Availability of each field depends on the source page and the selected mode.

How much does NoFluffJobs Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed jobs on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated, reappeared or expired jobs, and unchanged ones are not billed.

What is the difference between Resume and Incremental mode?

Resume continues ONE specific interrupted run by id, and returns the delta against that one run's dataset. Incremental mode is for a search you run again and again on a schedule: the actor remembers its own baseline between runs, no id to paste, and classifies every job against what it saw last time. Use Resume to finish a crawl that stopped; use Incremental mode to monitor the same search over time.

Why did my run fail instead of returning an empty dataset?

If every request to NoFluffJobs was refused, the run stops with a clear message so "no jobs matched" is never confused with "nothing could be read". Retry in a few minutes, or pick a different connection. If a minimum or maximum salary removed everything, the run still succeeds and names the filter as the reason in its final message.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with NoFluffJobs Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.