NoFluffJobs.com EU Scraper - Engineering Jobs & Salaries avatar

NoFluffJobs.com EU Scraper - Engineering Jobs & Salaries

Pricing

from $3.00 / 1,000 serp results

Go to Apify Store
NoFluffJobs.com EU Scraper - Engineering Jobs & Salaries

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

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

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, requires includeJobDetails=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.

EventPriceTrigger
Actor start$0.001Once per run
SERP row$0.003Per job from search results
Job detail row$0.005Per job when includeJobDetails=true
Company profile$0.002Per unique company when includeCompanyDetails=true

Input

FieldTypeDescription
searchQueriesarray of stringsJob title or tech keywords. Each runs a separate search (e.g. ['backend developer', 'Python', 'DevOps']).
searchUrlsarray of stringsDirect NoFluffJobs search URLs with ?criteria= param.
startUrlsarrayAlternative URL input supporting Apify's requestListSources format.
countryselectFilter 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.
citystringFilter by city name (e.g. Warsaw, Prague, Berlin).
seniorityselectTrainee, Junior, Mid, Senior, Expert, or blank for all.
techStackarray of stringsTechnology tags to filter by (e.g. ['Python', 'AWS']).
contractTypeselectAny, B2B (freelance invoice), or UoP (employment contract).
remoteOnlybooleanReturn only fully remote positions.
sortByselectResult 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.
includeJobDetailsbooleanFetch each job's detail page for full description, requirements, company size, founded year, about text, office cities, and contact extraction. Default false.
includeCompanyDetailsbooleanFetch 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.
maxResultsintegerTotal job cap. Default 5.
maxResultsPerQueryintegerPer-keyword cap. Default 5.
maxConcurrencyintegerConcurrent 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 slug
  • title: Role title
  • company_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 URL
  • apply_url: Direct apply link (with details)

Mandatory salary (NoFluffJobs unique differentiator)

  • salary_min, salary_max: Lower and upper salary bounds -- always populated on NoFluffJobs
  • salary_currency: PLN (Poland, dominant), HUF (Hungary), USD (Ukraine-based roles), EUR (Slovakia, Netherlands, international remote), CZK (Czech Republic)
  • salary_period: month, hour, day, year
  • salary_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, office
  • remote_percentage: 100 for fully remote, 50 for hybrid, null for office
  • posting_tags[]: Tag row from the job detail page (e.g. "Online recruitment", "Start ASAP", "Fully remote", "Hire type: B2B") -- with details
  • offer_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-DD
  • posted_at_datetime: ISO 8601
  • scraped_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; use company_about_short for 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 as https://www.youtube.com/watch?v={id}.
  • company_technologies_used[]: Technology stack the company works with at an org level (distinct from job-level tech_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 summary
  • description_full: Full plain text
  • description_html: HTML with script/style stripped
  • description_md: Markdown-converted description
  • requirements_must[]: Must-have tech/skills from the requirements section
  • requirements_nice[]: Nice-to-have skills

Contact extraction (with includeJobDetails=true)

  • contact_emails[]: Email addresses found in description
  • contact_phones[]: Phone numbers from description
  • contact_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 country input filters returned jobs against each posting's location.places[].country.code data. The NoFluffJobs API does not honor the region= 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 unfiltered country: "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.

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:

Broader coverage:

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