NoFluffJobs.com EU Scraper - Engineering Jobs & Salaries
Pricing
from $3.00 / 1,000 serp results
NoFluffJobs.com EU Scraper - Engineering Jobs & Salaries
Scrape IT/tech job listings from NoFluffJobs with mandatory salary ranges on every row (PL/CZ/SK/DE/AT/CH). Returns salary_min, salary_max, currency, seniority, tech stack, contract type, work mode, and full description. Pay-per-result.
Pricing
from $3.00 / 1,000 serp results
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
NoFluffJobs Scraper: EU Tech Jobs with Mandatory Salary Disclosure
Extract IT/tech job listings from NoFluffJobs, the EU job board that legally requires salary disclosure on every posting. Every row returned by this actor includes salary_min and salary_max -- no guessing, no "competitive salary", no nulls.
Why NoFluffJobs
NoFluffJobs is a Polish-founded EU-wide IT/tech job board with one defining policy: every job listing must disclose a salary range. This makes it unique in the EU market. Hiring companies that refuse to disclose pay cannot post. The result is a clean, structured salary dataset across the full spectrum of IT roles in Poland, Czech Republic, Slovakia, Hungary, Ukraine, and the Netherlands.
Coverage at a glance:
- 20,000+ active IT listings at any time
- Poland (main market), CZ, SK, HU, UA, NL
- Roles: Backend, Frontend, Fullstack, DevOps, Mobile, QA, Data, Product, Design, Management
- Every single row:
salary_min,salary_max,salary_currency,salary_period, contract type (B2B vs Employment)
What it does
Three enrichment modes:
- Minimal (default): SERP-level data including mandatory salary range, seniority, tech stack tags, work type, country, city, and posting date. No extra HTTP hops.
- With job details (
includeJobDetails=true): Adds full HTML description, must-have and nice-to-have requirements list, company website, company size (authoritative), company founded year, company about (short), company office city list, and contact extraction (emails, phones, external URLs). - With company details (
includeCompanyDetails=true, requiresincludeJobDetails=true): Full company profile enrichment -- social links (Facebook, Instagram, Twitter, LinkedIn), industries served, full about text (plain + HTML), YouTube video ID, tech stack the company uses, perks and benefits, gallery photos, awards, office locations with GPS coordinates, team members (name, role, photo), and client references (logo + derived name).
Sample output row (with includeJobDetails=true)
{"_type": "job","id": "senior-python-developer-acme-warszawa","title": "Senior Python Developer","job_url": "https://nofluffjobs.com/job/senior-python-developer-acme-warszawa","company_name": "Acme Corp","company_website": "https://acme.com","company_logo_url": "https://static.nofluffjobs.com/companies/logos/jobs_details/acme_240px.png","company_size": "51 - 200","company_profile_url": "https://nofluffjobs.com/company/acme-corp-abc12345","company_founded_in": 2015,"company_about_short": "We build enterprise SaaS tools for the logistics sector...","company_locations": ["Warsaw", "Krakow"],"location": "Warsaw, PL","country": "PL","city": "Warsaw","posted_at_text": "2026-08-20","posted_at_datetime": "2026-08-20T08:00:00Z","salary_min": 15000,"salary_max": 22000,"salary_currency": "PLN","salary_period": "month","salary_text": "15000 – 22000 PLN/month (b2b)","salary_type": "b2b","seniority": ["Senior"],"tech_stack": ["Python", "AWS", "PostgreSQL", "Docker"],"contract_types": ["B2B"],"work_type": "remote","remote_percentage": 100,"category": "backend","posting_tags": ["Online recruitment", "Start ASAP", "Fully remote", "Hire type: B2B"],"offer_expiration_date": "2026-09-30","remote_voivodeship_list": ["masovian", "lesser-poland", "lodz"],"requirements_must": ["Python", "REST API", "PostgreSQL"],"requirements_nice": ["Kubernetes", "GraphQL"],"company_social": null,"company_industries_served": null,"company_about": null,"company_about_html": null,"company_video_youtube_id": null,"company_technologies_used": null,"company_perks_benefits": null,"company_gallery_images": null,"company_awards": null,"company_office_locations": null,"company_team_members": null,"company_clients": null,"search_query": "backend developer","scraped_at": "2026-08-22T10:00:00Z"}
Sample output row (with includeCompanyDetails=true)
{"_type": "job","id": "senior-python-developer-link-group-warszawa","title": "Senior Python Developer","job_url": "https://nofluffjobs.com/job/senior-python-developer-link-group-warszawa","company_name": "Link Group","company_website": "https://linkgroup.co","company_logo_url": "https://static.nofluffjobs.com/companies/logos/jobs_details/link_group_414px.png","company_size": "500 - 999","company_profile_url": "https://nofluffjobs.com/company/link-group-ccywok00","company_founded_in": 2016,"company_about_short": "We're a bunch of super-dedicated and passionate people who truly believe in making a difference...","company_locations": ["Warszawa", "Krakow", "Gdynia", "Austin", "Riyadh", "Birmingham"],"company_social": {"facebook": "https://www.facebook.com/Link.Group.Polska/","instagram": "https://www.instagram.com/linkgroup.co/","twitter": "https://twitter.com/LinkGroup_co","linkedin": "https://www.linkedin.com/company/link-group-sp.-z-o.o./","youtube": null},"company_industries_served": ["Banking", "Design", "Energy", "Financial", "Marketing", "Logistics", "Media", "Outsourcing", "Telecommunications", "Information technology & services"],"company_about": "We're a bunch of super-dedicated and passionate people who truly believe in making a difference and delivering amazing results on a huge scale...","company_about_html": "<p>We're a bunch of super-dedicated and passionate people...</p>","company_video_youtube_id": "np8ghdOX-8Q","company_technologies_used": ["Javascript", "Java", "Angular", ".NET", "React", "SQL", "Python", "REST", "Spring", "PHP"],"company_perks_benefits": ["Sport subscription", "Team Events", "Private health care", "Training budget", "Free coffee", "Bike parking", "Free snacks", "Gym"],"company_gallery_images": ["https://static.nofluffjobs.com/companies/gallery/big/screenshot_20230905_at_174131_20230905_235615.png","https://static.nofluffjobs.com/companies/gallery/big/dsc00492_1min_20230905_235248.jpg"],"company_awards": ["Great Place To Work", "Outsourcing Stars", "Business Gazele"],"company_office_locations": [{ "address": "Aleje Jerozolimskie 142A, Warszawa", "city": "Warszawa", "country": "PL", "lat": 52.218995, "lng": 20.966843 },{ "address": "ul. Zablocie 23/11, Krakow", "city": "Krakow", "country": "PL", "lat": 50.050247, "lng": 19.961162 }],"company_team_members": [{ "name": "PAWEL KLEJMONT", "role": "Head of IT Outsourcing", "photo_url": "https://static.nofluffjobs.com/companies/team/cropped_original/link_group_ii_0005_min_20230313_170247.jpg", "bio": null },{ "name": "URSZULA MIKULSKA", "role": "Head of Recruitment", "photo_url": "https://static.nofluffjobs.com/companies/team/cropped_original/link_group_ii_2233_min_20230313_170148.jpg", "bio": null }],"company_clients": [{ "name": "airhelp logo positive 20201105 203228", "logo_url": "https://static.nofluffjobs.com/companies/clients/original/airhelp_logo_positive_20201105_203228.jpg" },{ "name": "apollogic 20201105 203251", "logo_url": "https://static.nofluffjobs.com/companies/clients/original/apollogic_20201105_203251.png" }],"location": "Warsaw, PL","country": "PL","city": "Warsaw","salary_min": 20000,"salary_max": 30000,"salary_currency": "PLN","salary_period": "month","salary_text": "20000 - 30000 PLN/month (b2b)","salary_type": "b2b","seniority": ["Senior"],"tech_stack": ["Python", "AWS", "PostgreSQL"],"contract_types": ["B2B"],"work_type": "hybrid","category": "backend","search_query": "backend developer","scraped_at": "2026-09-10T10:00:00Z"}
Pricing
$0.001 per actor start + $0.003 per SERP row + $0.005 per detail row + $0.002 per unique company profile (when includeCompanyDetails=true). About $3 to $8 per 1,000 IT roles depending on enrichment mode.
You only pay for rows that successfully return data. Failed fetches are not charged.
New to Apify? Every account gets a $5 free monthly platform credit -- enough for around 1,500 SERP rows or 800 detail rows before you commit to paying anything.
| Event | Price | Trigger |
|---|---|---|
| Actor start | $0.001 | Once per run |
| SERP row | $0.003 | Per job from search results |
| Job detail row | $0.005 | Per job when includeJobDetails=true |
| Company profile | $0.002 | Per unique company when includeCompanyDetails=true |
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array of strings | Job title or tech keywords. Each runs a separate search (e.g. ['backend developer', 'Python', 'DevOps']). |
searchUrls | array of strings | Direct NoFluffJobs search URLs with ?criteria= param. |
startUrls | array | Alternative URL input supporting Apify's requestListSources format. |
country | select | Filter by country market: all, PL, CZ, SK, HU, UA, NL. Default: all. Applied client-side -- only postings with at least one location in the selected country are returned. |
city | string | Filter by city name (e.g. Warsaw, Prague, Berlin). |
seniority | select | Trainee, Junior, Mid, Senior, Expert, or blank for all. |
techStack | array of strings | Technology tags to filter by (e.g. ['Python', 'AWS']). |
contractType | select | Any, B2B (freelance invoice), or UoP (employment contract). |
remoteOnly | boolean | Return only fully remote positions. |
sortBy | select | Result ordering. Only newest is supported (the NoFluffJobs public API returns its native platform ordering; the site's front-end applies the "Newest" toggle client-side). Default newest. |
includeJobDetails | boolean | Fetch each job's detail page for full description, requirements, company size, founded year, about text, office cities, and contact extraction. Default false. |
includeCompanyDetails | boolean | Fetch extended company profile: social links, industries served, full about text, YouTube video, tech stack, perks, gallery, awards, and office locations with GPS. Requires includeJobDetails=true. Adds $0.002 per unique company. Default false. |
maxResults | integer | Total job cap. Default 5. |
maxResultsPerQuery | integer | Per-keyword cap. Default 5. |
maxConcurrency | integer | Concurrent detail fetches (1-20). Default 5. |
Example input
{"searchQueries": ["backend developer", "Python"],"country": "PL","seniority": "Senior","techStack": ["Python"],"remoteOnly": true,"includeJobDetails": true,"maxResults": 100}
Output fields
Identity
id: NoFluffJobs internal posting slugtitle: Role titlecompany_name,company_logo_url,company_website(with details),company_size(with details)company_profile_url: Link to the company's NoFluffJobs profile page (with details)job_url,source_url: Canonical NoFluffJobs listing URLapply_url: Direct apply link (with details)
Mandatory salary (NoFluffJobs unique differentiator)
salary_min,salary_max: Lower and upper salary bounds -- always populated on NoFluffJobssalary_currency: PLN (Poland, dominant), HUF (Hungary), USD (Ukraine-based roles), EUR (Slovakia, Netherlands, international remote), CZK (Czech Republic)salary_period: month, hour, day, yearsalary_text: Human-readable summary (e.g. "15000 - 22000 PLN/month (b2b)")salary_type: Contract basis quoted: b2b, employment, mandate, any
Tech classification
seniority[]: Platform-tagged seniority levels (Trainee/Junior/Mid/Senior/Expert)tech_stack[]: Technology requirement tags extracted from SERP tiles (e.g. Python, AWS, React, Docker, Kubernetes)contract_types[]: Available contract forms (B2B, Employment, Contract)category: NoFluffJobs job category (backend, frontend, devops, mobile, data, etc.)work_type: remote, hybrid, officeremote_percentage: 100 for fully remote, 50 for hybrid, null for officeposting_tags[]: Tag row from the job detail page (e.g. "Online recruitment", "Start ASAP", "Fully remote", "Hire type: B2B") -- with detailsoffer_expiration_date: ISO date when the posting expires (with details)remote_voivodeship_list[]: For PL postings, the voivodeships where remote work is allowed (with details)
Location
location: City, CountryCode (e.g. Warsaw, PL)country: ISO 2-letter code (PL, HU, UA, CZ, SK, NL, and others)city: Primary city name
Timing
posted_at_text: YYYY-MM-DDposted_at_datetime: ISO 8601scraped_at: When the row was fetched
Company profile (with includeJobDetails=true)
company_size: Authoritative headcount range from the company profile (e.g. "500 - 999"). More accurate than the posting-level field, which can be stale.company_founded_in: Integer year the company was founded (e.g. 2016)company_about_short: Plain-text company description (first 500 chars)company_locations[]: Cities where the company has registered offices
Extended company profile (with includeCompanyDetails=true)
company_social: Object with social media URLs:facebook,instagram,twitter,linkedin,youtube. Null keys omitted.company_industries_served[]: Industries the company works in (from the "Industries" section on the company profile).company_about: Full plain-text company description (no length cap; usecompany_about_shortfor a 500-char preview).company_about_html: Full company description in HTML (script/style stripped).company_video_youtube_id: YouTube video ID embedded on the company profile (e.g."np8ghdOX-8Q"). Use ashttps://www.youtube.com/watch?v={id}.company_technologies_used[]: Technology stack the company works with at an org level (distinct from job-leveltech_stack).company_perks_benefits[]: All perks and benefits from the company profile (merges "Benefits" and "Office Perks" sections).company_gallery_images[]: Full-size CDN URLs of office/team/event gallery photos.company_awards[]: Award names from the company profile awards section (e.g. "Great Place To Work").company_office_locations[]: Physical office locations. Each object:address(street + postal + city),city,country(ISO-2),lat,lng.company_team_members[]: Employees listed in the company team section, flattened across all sub-groups. Each object:name,role(API title field),photo_url(CDN URL or null),bio(text or null).company_clients[]: Client references listed on the company profile. Each object:name(derived from logo filename, underscores replaced with spaces),logo_url(CDN URL or null).
Content (with includeJobDetails=true)
description_snippet: 300-char plain-text summarydescription_full: Full plain textdescription_html: HTML with script/style strippeddescription_md: Markdown-converted descriptionrequirements_must[]: Must-have tech/skills from the requirements sectionrequirements_nice[]: Nice-to-have skills
Contact extraction (with includeJobDetails=true)
contact_emails[]: Email addresses found in descriptioncontact_phones[]: Phone numbers from descriptioncontact_urls[]: External HTTP(S) links (nofluffjobs.com self-refs excluded)
Use with AI Agents (MCP)
Connect to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, or custom agents.
Apify MCP server URL:
https://mcp.apify.com?tools=nanoscrape/nofluffjobs-eu-scraper
Example prompt:
"Use nofluffjobs-eu-scraper to find Senior Python remote jobs in Poland. Return a table with title, company, salary range in PLN, and tech stack."
Why this scraper
- 100% salary fill rate. NoFluffJobs legally mandates salary disclosure. Every row has salary_min and salary_max -- no nulls, no "competitive salary" placeholders.
- EU tech market depth. 20,000+ active IT listings. The dominant platform for Poland (the EU's largest tech talent market after Germany) plus strong CZ/SK/HU/UA/NL coverage.
- Structured tech tags from SERP. Tech stack requirements come from the SERP JSON, no description parsing needed -- 100% fill rate on tech_stack for every listing.
- B2B vs employment transparency. NoFluffJobs shows which contract types the salary applies to. B2B (freelance) and Employment salaries are disclosed separately.
- Zero bot risk. NoFluffJobs API returns 200 with no bot challenge. HTTP-only, no browser tier.
- Pay-per-row. No hourly rental.
Common use cases
- Salary benchmarking for EU IT roles. Get structured salary min/max across seniority levels and countries. Ideal for compensation planning, pay equity audits, or competitive analysis.
- Recruiter sourcing. Track open backend, DevOps, or mobile roles across Poland, Hungary, Ukraine, and the Netherlands with tech stack, seniority, and remote status already structured.
- Job aggregators. Ingest the full NoFluffJobs feed into a jobs platform. Every row is schema-complete with salary -- no post-processing to guess pay bands.
- Freelance rate research. Filter by B2B contract type to get the current hourly/monthly B2B rates for specific tech stacks in Poland, Czech Republic, and Hungary.
- AI job-search agents. Give agents structured access to EU tech salary data with mandatory salary transparency.
Notes and limits
- Salary is always populated on NoFluffJobs (platform policy). If salary_min or salary_max is null on a row, that is a bug -- please open an issue.
- Multi-currency. PLN dominates (Poland), HUF appears for Hungary, USD for many Ukraine-based roles, EUR for Slovakia/Netherlands/international remote positions, CZK for Czech Republic. No FX conversion is performed -- currency is preserved as returned by the platform.
- Salary period varies. Most Polish listings quote monthly (PLN/month). Some roles quote hourly rates. Check salary_period before comparing across countries.
- Country filter is client-side. The
countryinput filters returned jobs against each posting'slocation.places[].country.codedata. The NoFluffJobs API does not honor theregion=parameter server-side (all values return the same full catalogue), so filtering is applied locally after the API responds. Queries with a country filter will return fewer results than an unfilteredcountry: "all"query -- this is correct behavior. Jobs with no location data are excluded when a country filter is active. - Tech stack from SERP tiles only. The SERP response includes requirement tiles (Python, AWS, etc.) for every posting. The full requirements list (requirements_must, requirements_nice) requires includeJobDetails=true.
- Duplicate postings. A single job opening that appears for multiple cities or provinces in the same region is deduped by posting ID within a run.
- Rate limits. NoFluffJobs serves the API without authentication for standard read requests. maxConcurrency of 5 is safe. Higher concurrency may trigger throttling on large runs.
Related Actors
Working across the Polish and EU tech job market? These complement NoFluffJobs:
Poland peers:
- Pracuj.pl Scraper: Poland's largest private-sector generalist board (all industries, 80,000+ listings).
- praca.gov.pl Scraper: Poland's official government portal (Central Job Offers Database / CBOP) for public-sector and PUP office listings.
Other EU tech boards:
- Profesia.sk Scraper: Slovakia's leading job board with 40,000+ listings across all industries.
- Profession.hu Scraper: Hungary's largest job board, covers IT and non-tech roles.
- Kariera.gr Scraper: Greece's leading job board.
- Net - Empregos PT Scraper: Portugal's largest job board.
- VDAB.be Scraper: Belgium's official public employment service.
- SEPE.es Scraper: Spain's official employment service.
- Subito.it Jobs Scraper: Italy's major classifieds platform with a large jobs section.
Broader coverage:
- Career Site Jobs Scraper: Scrape jobs directly from company career pages (Greenhouse, Lever, Workday, etc.).
- Website Job Extractor: Extract job listings from any website via HTML pattern detection.
- LinkedIn Scraper: Broader EU + global coverage for tech and non-tech roles.
- Indeed Scraper: The generalist jobs board with global coverage.
- Levels.fyi Scraper: US tech compensation data with verified salary ranges at FAANG-tier companies.
- Wellfound (AngelList) Jobs Scraper: Startup roles with equity ranges.
Support
For issues, feature requests, or fields not yet extracted, open an issue on the Issues tab. We respond within 24 hours.
Contact: contact@nanoscrape.com