NoFluffJobs Scraper — Poland & CEE IT Jobs with Salaries
Pricing
from $1.20 / 1,000 job results
NoFluffJobs Scraper — Poland & CEE IT Jobs with Salaries
Scrape IT & tech jobs from NoFluffJobs, the Poland/CEE board with mandatory salary transparency. Each record has title, company, salary min/max, seniority, tech stack, remote flag and apply URL. Incremental delta mode with repost detection; filter by category, currency, remote. JSON, CSV, Excel.
Pricing
from $1.20 / 1,000 job results
Rating
0.0
(0)
Developer
Nomad Dev
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
6
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape IT and business openings with mandatory salary transparency from NoFluffJobs — a single unified CEE/EU search index that already includes postings located in Poland, Czechia, Hungary, Slovakia, Ukraine, Netherlands and more (see the region field below for why there's nothing to select there).
Claude / Codex skill to describe and setup this actor: SKILL.md
Why this scraper:
- The only closed, verified 37-category enum — every category slug was probed live against the NoFluffJobs search API, so you get honest coverage instead of a free-text box that silently returns nothing.
- Salary-aware source filtering — NoFluffJobs exposes pay ranges that the Actor can use for
withSalaryOnlyand currency selection. The shared flat output does not publish structured salary columns. - Rich filters most competitors lack —
postedWithin,titleExclude/companyExclude,remoteOnly,withSalaryOnly. - Opt-in delivery — POST the current matching postings to a webhook or a Telegram chat straight from the run.
What NoFluffJobs data does this scraper extract?
Published postings follow nomad-agent-job-row-v1. The shared fields carry
source identity, title and company, parsed locations, dates, the complete
plain-text body when available, source markup when usable, and work type.
Unavailable scalar facts are null; no parsed location is []. Source-only
facts appear in versioned custom.data only when mapped there. See the
Output example section for the exact dataset fields and diagnostic rows.
How to scrape NoFluffJobs with this Actor
- Click Try for free / Run — no login to the target site, no cookies, no proxies to configure.
- Adjust the input (keyword, filters,
maxItems) or keep the defaults. - Run it and export the dataset as JSON, CSV or Excel, or read it over the API.
Run it from your own code:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/nofluffjobs-scraper").call(run_input={"maxItems": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], "—", item["company"], item["url"])
Or a single HTTP call that runs the Actor and returns items in one response:
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~nofluffjobs-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"maxItems": 50}'
Input
| Field | Type | Default | Notes |
|---|---|---|---|
categories | array (select, multi) | all 37 (see list) | NoFluffJobs categories to fetch. Defaults to the full set for broad coverage. Closed list verified live against the search API: backend, frontend, fullstack, mobile, embedded, testing, devops, architecture, security, game-dev, artificial-intelligence, data, sys-administrator, pm, agile, product-management, project-manager, business-intelligence, business-analyst, ux, support, erp, electronics, telecommunication, electrical-eng, automation, mechanics, sales, marketing, office-administration, hr, finance, consulting, customer-service, law, logistics, other, plus legacy alias ai-data (not in the default set — already covered by artificial-intelligence + data). |
maxItems | integer | 100 | Maximum total number of postings to return across all categories. Set 0 for no limit. |
maxPages | integer | 5 | Maximum number of result pages to fetch per category (each page contains up to 50 postings). |
salaryCurrency | string (select) | "EUR" | Currency in which salary ranges are returned. NoFluffJobs converts all salaries to this currency. One of EUR, PLN, USD, GBP, CHF, CZK, HUF, UAH. |
postedWithin | string | any | Keep only jobs published inside this window. Use any for no date filter, or a duration — 1h, 24h, 3d, 2w, 6m. Jobs the source published no date for are kept rather than dropped. Replaces postedSince, still accepted for existing integrations. |
titleExclude | array | [] | Drop postings whose title contains any of these strings (case-insensitive substring match). |
companyExclude | array | [] | Drop postings whose company name contains any of these strings (case-insensitive substring match). |
remoteOnly | boolean | false | Keep only postings flagged fully remote. |
withSalaryOnly | boolean | false | Keep only postings that publish a salary range. |
webhookUrl (Notifications) | string | "" | If set, POST this run's postings as JSON ({source, count, truncated, items}, items capped at 200) to this URL. Fail-open. |
telegramBotToken (Notifications, secret) | string | "" | Bot token for a short Telegram summary of the run (with telegramChatId). Stored as a secret. Fail-open. |
telegramChatId (Notifications) | string | "" | Target chat/channel ID for the Telegram summary. |
cacheTtlSeconds (Advanced) | integer | 1800 | Cache the upstream fetch in the key-value store for this many seconds; re-runs within the window skip the network call. Set 0 to disable. |
region (Advanced, deprecated — ignored) | string (select) | "pl" | Kept for backward compatibility only. NoFluffJobs' public search API currently ignores this query parameter — verified by comparing result counts across pl/hu/cz/sk/ua/nl and an invalid value, all identical. All CEE/EU postings already come from one unified index regardless of this setting; "pl" is the only enum value today. |
Notifications
Push results straight out of the run without an extra integration:
webhookUrl— POSTs a JSON payload ({source, count, truncated, items}, items capped at 200) to any endpoint (Make, Zapier, n8n, your own service).telegramBotToken+telegramChatId— sends a short summary with the count and first postings to a Telegram chat.
Both are opt-in and fail-open: a delivery error is logged but never fails the run or affects the dataset.
Output example
Every row follows nomad-agent-job-row-v1, the one shape shared by all of
this fleet's job Actors. A row carries every field; null means the
source did not publish that fact, and locations: [] means no
usable location was parsed from the posting. Nothing is guessed.
{"schemaVersion": "nomad-agent-job-row-v1","recordType": "posting","source": "nofluffjobs","id": "a1b2c3","url": "https://example.com/nofluffjobs/jobs/a1b2c3","title": "Senior Backend Engineer","company": "Example Company","locations": ["Bilbao","Spain"],"postedAt": "2026-09-02T00:00:00Z","deadline": null,"description": "The complete posting body as plain text, exactly as the source published it — never truncated.","descriptionHtml": "<p>The complete posting body as the source's own markup.</p>","workType": "remote","custom": {"schemaId": "nomad-agent-job-custom-nofluffjobs-v1","data": {"externalId": "…","category": "…","skills": "…"}}}
| Field | Meaning |
|---|---|
schemaVersion | Always "nomad-agent-job-row-v1". |
recordType | "posting" for a job, "diagnostic" for a row reporting something about the run itself. |
source | Which job source the posting came from, from the collector registry's vocabulary — not the Actor name. |
id | Stable identifier for the posting within source. |
url | Canonical public URL of the posting on the source site. |
title | Job title exactly as the source publishes it, untruncated. |
company | Employer name as published. |
locations | Places the role is based, most specific first — e.g. ["Bilbao", "Spain"]. |
postedAt | When the source published the posting, ISO-8601 UTC (YYYY-MM-DDTHH:MM:SSZ). |
deadline | Closing date for applications as an ISO-8601 calendar date (YYYY-MM-DD). |
description | The complete posting body as plain text — never truncated, never summarised. |
descriptionHtml | The posting body as the source's own markup, preserving lists, headings and links. |
workType | Working arrangement: "remote", "hybrid" or "onsite". |
custom | Facts only this source publishes, as {"schemaId", "data"}. |
A run also emits diagnostic rows — recordType: "diagnostic" with a
warnings array — when it has something to report, such as a source
returning nothing. They are never billed and are easy to filter out on
recordType.
Integrations
Export results as JSON, CSV or Excel; connect via Make, Zapier or n8n; call directly with run-sync-get-dataset-items; or plug into AI agents through the Apify MCP server.
Pricing
Pay per event: $0.005 per Actor start and $0.0015 per job returned. 100 jobs ≈ $0.155. No subscription, no rental — you pay only for what you fetch.
Use cases
- Salary-transparency analytics for CEE
- Tech job boards and alert bots
- Compensation benchmarking by stack and seniority
- Sourcing in Poland and CEE
FAQ
Is it legal to scrape NoFluffJobs? This Actor reads only publicly available job postings — data any visitor can see without logging in. No personal data behind authentication is touched. Review the target site's terms and your local regulations for your specific use case.
Do I need an account on the target site? No. Postings are fetched from public pages/APIs — no login, cookies or session tokens.
How fresh is the data?
Every run fetches live listings. Results are cached for cacheTtlSeconds (default 30 min, set 0 to always hit the source live).
How many jobs can I get?
maxItems caps the run (set 0 where supported for no cap). Most sources paginate from newest to oldest.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and reliability fixes ship fast.
Is this Actor useful to you? A quick ⭐ review on the Actor's Reviews tab helps other Poland/CEE job-data users find it — and tells us what to build next.
Related Actors
- Web Developer Jobs Scraper — 10 Boards in One
- JustJoin.it Jobs Scraper — Polish Tech & IT Jobs
- LinkedIn Jobs Scraper — No Login, No Cookies
From the maker of Oink — an open-source, AI-powered job-search bot for Telegram that runs on these Actors. Try the free bot, get a managed instance at oinkjobsearch.com, or browse the full catalog of 50+ Actors.