NoFluffJobs Scraper
Pricing
from $0.40 / 1,000 job scrapeds
Go to Apify Store
NoFluffJobs Scraper
Scrapes job listings from NoFluffJobs.com (Poland, Czechia, Slovakia, Hungary, the Netherlands, Ukraine) via its public JSON search API.
NoFluffJobs Scraper
Pricing
from $0.40 / 1,000 job scrapeds
Scrapes job listings from NoFluffJobs.com (Poland, Czechia, Slovakia, Hungary, the Netherlands, Ukraine) via its public JSON search API.
You can access the NoFluffJobs Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "FRYOVyaIuQ37hoabt" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/datawatcher~nofluffjobs-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-datawatcher-nofluffjobs-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/datawatcher~nofluffjobs-scraper/runs": { "post": { "operationId": "runs-sync-datawatcher-nofluffjobs-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/datawatcher~nofluffjobs-scraper/run-sync": { "post": { "operationId": "run-sync-datawatcher-nofluffjobs-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "searchQueries": { "title": "Search queries", "type": "array", "description": "Keyword/title searches, each run separately. `react OR angular` runs both and merges the results. Leave empty when using only Search URLs; with nothing at all, `python developer` is searched.", "items": { "type": "string" } }, "searchUrls": { "title": "Search URLs", "type": "array", "description": "Paste NoFluffJobs search URLs to reuse filters set on the site (path filters and ?criteria= are both applied), or job URLs (…/job/<slug>) to get those jobs directly. A URL's own market (/pl/, /cz/...) overrides `country` for that search.", "items": { "type": "string" }, "default": [] }, "country": { "title": "Country", "enum": [ "all", "PL", "CZ", "SK", "HU", "NL", "UA" ], "type": "string", "description": "Market to search. NoFluffJobs filters each market server-side from one shared catalogue; `All` searches the Polish market, the widest one.", "default": "all" }, "maxResults": { "title": "Max results", "minimum": 0, "type": "integer", "description": "Rows to write in total. 0 = no limit (the request budget and the run timeout still apply).", "default": 50 }, "includeDetails": { "title": "Include job details", "type": "boolean", "description": "One extra request per job to NoFluffJobs' job-detail API: full description (text, HTML, Markdown), requirements, must-have / nice-to-have skills, languages, daily tasks, benefits, all salary ranges, company size, website and profile link, status and expiry date. Priced as a separate PPE event.", "default": false }, "remoteOnly": { "title": "Remote only", "type": "boolean", "description": "Only return fully remote postings.", "default": false }, "cities": { "title": "Cities", "type": "array", "description": "Only jobs in these cities, e.g. Warszawa, Kraków (Warsaw / Cracow / Krakow also work).", "items": { "type": "string" }, "default": [] }, "categories": { "title": "Categories", "type": "array", "description": "Only jobs in these categories.", "items": { "type": "string", "enum": [ "backend", "frontend", "fullstack", "mobile", "embedded", "testing", "devops", "architecture", "security", "game-dev", "artificial-intelligence", "data", "sys-administrator", "agile", "product-management", "project-manager", "business-intelligence", "business-analyst", "ux", "support", "erp", "sales", "marketing", "office-administration", "hr", "electronics", "telecommunication", "electrical-eng", "automation", "mechanics", "finance", "consulting", "customer-service", "law", "logistics", "other" ] }, "default": [] }, "seniority": { "title": "Seniority", "type": "array", "description": "Only jobs at these levels.", "items": { "type": "string", "enum": [ "trainee", "junior", "mid", "senior", "expert", "lead", "head" ] }, "default": [] }, "technologies": { "title": "Technologies", "type": "array", "description": "Only jobs requiring any of these, e.g. Python, React.", "items": { "type": "string" }, "default": [] }, "contractTypes": { "title": "Contract types", "type": "array", "description": "b2b, permanent (UoP), zlecenie, uod (contract for specific work), intern.", "items": { "type": "string", "enum": [ "permanent", "zlecenie", "b2b", "uod", "intern" ] }, "default": [] }, "postingLanguages": { "title": "Posting languages", "type": "array", "description": "Only job ads written in these languages.", "items": { "type": "string", "enum": [ "pl", "en", "uk", "ru", "hu", "sk", "be", "cs", "nl", "de" ] }, "default": [] }, "postedWithin": { "title": "Posted within", "type": "string", "description": "Only jobs posted in the last period: e.g. 24h, 3d, 2w." }, "excludeTitles": { "title": "Exclude titles", "type": "array", "description": "Skip jobs whose title contains any of these (case-insensitive).", "items": { "type": "string" }, "default": [] }, "excludeCompanies": { "title": "Exclude companies", "type": "array", "description": "Skip jobs from companies whose name contains any of these.", "items": { "type": "string" }, "default": [] }, "salaryCurrency": { "title": "Salary currency", "enum": [ "original", "PLN", "EUR", "USD", "CHF", "GBP", "HUF", "CZK", "UAH", "BYN" ], "type": "string", "description": "Convert every salary into this currency, per month (NoFluffJobs converts server-side). `Original` keeps each listing's own currency and period.", "default": "original" }, "minSalaryMonthlyPln": { "title": "Min salary (PLN / month)", "minimum": 0, "type": "integer", "description": "Only jobs paying at least this much per month, in PLN (the site's own salary filter)." }, "maxSalaryMonthlyPln": { "title": "Max salary (PLN / month)", "minimum": 0, "type": "integer", "description": "Only jobs paying at most this much per month, in PLN." }, "withSalaryOnly": { "title": "Only jobs with a salary", "type": "boolean", "description": "Skip jobs that don't publish a salary range.", "default": false }, "onlyCurrencies": { "title": "Only these salary currencies", "type": "array", "description": "Keep only jobs whose salary is quoted in these currencies, e.g. PLN, EUR.", "items": { "type": "string" }, "default": [] }, "descriptionMaxLength": { "title": "Description max length", "minimum": 0, "type": "integer", "description": "Cut descriptions (text and Markdown) to this many characters. 0 = no limit.", "default": 0 }, "onlyUniqueJobs": { "title": "One row per job", "type": "boolean", "description": "Off: one row per office location instead (each billed as a row).", "default": true }, "compact": { "title": "Compact rows", "type": "boolean", "description": "Only the key fields: title, company, URL, salary, cities, remote, seniority, tech stack, posted date. Good for AI agents.", "default": false }, "includeRawRecord": { "title": "Include raw record", "type": "boolean", "description": "Attach the raw search rows and detail response as `raw`.", "default": false }, "maxResultsPerQuery": { "title": "Max results per search", "minimum": 0, "type": "integer", "description": "Row cap per search query or URL. 0 = no per-search cap.", "default": 0 }, "maxPages": { "title": "Max pages per search", "minimum": 0, "type": "integer", "description": "Result pages (20 jobs each) to read per search. 0 = no limit.", "default": 0 }, "maxRequests": { "title": "Max requests", "minimum": 0, "type": "integer", "description": "Hard ceiling on requests to NoFluffJobs in one run. 0 = automatic (derived from the input, max 1000).", "default": 0 }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Optional. Route requests through an Apify proxy. Not needed for normal use — NoFluffJobs' public search API has not shown any blocking so far.", "default": { "useApifyProxy": false } }, "healthCheck": { "title": "Health check", "type": "boolean", "description": "Monitoring mode: runs a 5-row search and fails the run if any row breaks a data rule (see RUN_HEALTH in the key-value store). Meant for a daily schedule.", "default": false } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for NoFluffJobs Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: