Nofluffjobs $1๐ฐ URL Search | Keyword Filtering | Rich Output
Pricing
from $1.00 / 1,000 results
Nofluffjobs $1๐ฐ URL Search | Keyword Filtering | Rich Output
From $1/1K. Extract IT jobs from NoFluffJobs.com across Poland, Czechia, Slovakia, Hungary, and the Netherlands. Search by filters or use NoFluffJobs URLs. Returns salary ranges, skills, full descriptions, tasks, benefits, hiring steps, company size, GPS coordinates, and merged office locations.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
NoFluffJobs Scraper
Extract IT job listings from NoFluffJobs across five markets: Poland, Czechia, Slovakia, Hungary and the Netherlands. Every record comes with the disclosed salary range, required and nice-to-have skills, the full job description, daily tasks, benefits, recruitment steps, company size and exact GPS coordinates. Search with structured filters (category, seniority, salary, city, technology, remote) or paste NoFluffJobs URLs. You get one clean, deduplicated record per job, with all of its office locations merged into a single array.
Why this scraper
- High data coverage: 40+ fields per job, including disclosed salary ranges, per-skill requirements, hourly and monthly salary breakdowns, daily tasks, equipment and office perks.
- 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 URLs.
- Clean output: one record per job, deduplicated across its location variants, with every city and its GPS in a locations array.
- Fast and low cost: a direct data path with no heavy page rendering, so it runs on the cheap Datacenter connection and finishes quickly.
- Cost controls built in: a configurable residential usage cap, a residential traffic budget, and automatic switching to a cheaper connection when possible.
- Walks the whole catalogue by default:
maxPagesdefaults to0(unlimited). The run walks every search-result page, stopping on its own once the region reports no more pages, a page comes back empty, or a page contributes no new jobs (repeat-page guard).maxListingsremains the primary cap. - Resumable runs: set
resumeFromRunIdto a previous run or dataset id to collect only the jobs that run doesn't already have (a delta). Long unlimited runs also checkpoint their progress to the key-value store, so an Apify platform migration or a Resurrect of a failed run picks up where it left off instead of starting over.
Data you get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
| id | senior-java-developer-sample-company-Warszawa |
| title | Senior Java Developer |
| url | https://nofluffjobs.com/pl/job/senior-java-developer-sample-company-warszawa |
| companyName | Sample Company |
| companySize | 500 - 999 |
| category | backend |
| seniority | ["senior"] |
| technology | Java |
| salaryFrom | 21000 |
| salaryTo | 28000 |
| salaryCurrency | PLN |
| salaryType | b2b |
| remote | true |
| cities | ["Remote", "Warszawa"] |
| locations | [{ "city": "Warszawa", "country": "Poland", "latitude": 52.0000, "longitude": 21.0000 }] |
| description | Full job description text appears here when fetchDetails is on. |
| requirementsMust | [{ "name": "Java", "type": "main" }, { "name": "Spring", "type": "main" }] |
| requirementsNice | [{ "name": "Kafka", "type": "nice" }] |
| dailyTasks | ["Design backend services", "Build REST APIs"] |
| benefits | ["Private healthcare", "Sport card"] |
| equipment | { "computer": "Notebook", "operatingSystem": "Linux" } |
| salaryRanges | [{ "type": "b2b", "from": 130, "to": 140, "currency": "PLN", "period": "Hour" }] |
| recruitmentSteps | ["Phone screen", "Technical interview"] |
| onlineInterviewAvailable | true |
| region | pl |
When fetchDetails is off, only the list-level fields are populated (title, company, salary, category, seniority, cities, technology, remote, url); the detail-only fields stay null.
How to use
Basic search in Poland:
{"mode": "search","region": "pl","maxListings": 100}
Senior backend Java jobs paying at least 20000, fully remote:
{"mode": "search","region": "pl","category": "backend","seniority": "senior","technology": "java","remoteOnly": true,"minSalary": 20000,"maxListings": 100}
All five markets at once:
{"mode": "search","region": "all","maxListings": 500}
Paste URLs (a search page and a single job page):
{"mode": "url","urls": ["https://nofluffjobs.com/pl/devops","https://nofluffjobs.com/cz/backend?criteria=seniority%3Dsenior"],"maxListings": 200}
Resume a previous run, collecting only jobs it doesn't already have:
{"mode": "search","region": "pl","maxListings": 0,"resumeFromRunId": "<a previous run id or dataset id from this account>"}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | search | search builds a query from the filters; url fetches the URLs you paste. |
| region | string | pl | pl, cz, sk, hu, nl, or all. |
| keyword | string | (empty) | Free-text search across roles, technologies and companies. |
| category | string | (any) | Job category, e.g. backend, frontend, devops, testing, data. |
| seniority | string | (any) | trainee, junior, mid, senior, expert. |
| employmentType | string | (any) | b2b, permanent, mandate-contract, internship. |
| jobLanguage | string | (any) | Language the posting is written in. |
| city | string | (any) | Restrict to one city. |
| technology | string | (any) | Require a specific skill, e.g. react, kubernetes. |
| sortBy | string | relevance | Result order: relevance, newest, salary high to low, salary low to high. Applied server-side. |
| remoteOnly | boolean | false | Only jobs that offer remote work. |
| minSalary | integer | (none) | Minimum monthly gross, region currency. Applies in both search mode and URL mode. Hourly-quoted postings are converted to a monthly figure first, so an hourly job is compared on the same basis. A posting that publishes no salary is skipped while a bound is set, and the run log names each one it skipped. |
| maxSalary | integer | (none) | Maximum monthly gross, region currency. Applies in both search mode and URL mode, on the same basis as minSalary. |
| urls | array | (empty) | NoFluffJobs URLs to fetch in URL mode. |
| fetchDetails | boolean | true | Add the full detail fields per job. |
| maxListings | integer | 20 | Main limit: max jobs to return. 0 means unlimited (then maxPages caps). |
| maxPages | integer | 0 | Optional bound on pages walked per query/region (about 20 jobs per page). 0 = walk the whole catalogue: stops on its own at the region's reported page total, an empty page, or a page with no new jobs, never an artificial page cap. Does not cap job count; use maxListings for that. |
| resumeFromRunId | string | Optional id of a previous run (or dataset) of this actor. Jobs already in that dataset are skipped, so this run returns only new jobs (a delta). | |
| proxy | object | Apify Datacenter | Connection settings. |
| residentialRequestCap | integer | 0 | Switch to Datacenter after N residential requests. 0 disables. |
| residentialBudgetMb | integer | 0 | Switch to Datacenter after N MB over residential. 0 disables. |
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record โ not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify โ Settings โ Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Output example
Sample shape: values are illustrative placeholders, not from a live listing.
{"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 Company","companySize": "500 - 999","companyProfileUrl": "https://nofluffjobs.com/company/sample-company-00000000","category": "backend","seniority": ["senior"],"technology": "Java","remote": true,"fullyRemote": true,"remotePercent": 100,"cities": ["Remote", "Warszawa"],"locations": [{ "city": "Warszawa", "country": "Poland", "countryCode": "POL", "latitude": 52.0000, "longitude": 21.0000 }],"salaryFrom": 21000,"salaryTo": 28000,"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,"expiresAt": "2026-01-01T00:00:00.000Z"}
Plan requirement
This actor runs on the Apify Datacenter connection by default, which is included on every plan, including the free plan. No residential connection is required.
Residential is offered as an option for users who want geo-diverse exit IPs, but it is not needed for this site. If you do select a Residential connection, use the residential request cap and traffic budget to keep costs predictable; the actor will automatically switch back to the cheaper Datacenter connection once a cap is reached.