# No Fluff Jobs Scraper - Tech Hiring Data (`benthepythondev/nofluffjobs-scraper`) Actor

Scrape No Fluff Jobs listings: title, company, location, salary range, tags, remote flag and direct job URL.

- **URL**: https://apify.com/benthepythondev/nofluffjobs-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 💼 No Fluff Jobs Scraper - Tech Hiring Data

Scrape job listings from **No Fluff Jobs** in one run. Get job titles, hiring companies, locations, salary ranges, technology tags, remote flags and direct job URLs from public No Fluff Jobs search pages. Export the results to JSON, CSV or Excel, schedule recurring runs, call the actor through the Apify API, or connect the dataset to Make, Zapier, Airtable, Clay, Google Sheets, HubSpot or n8n.

### 🔎 What is the No Fluff Jobs Scraper?

No Fluff Jobs is a technology-focused job board known for transparent salary ranges and structured job tags. It is especially useful for tracking software engineering, backend, frontend, DevOps, data, cloud, QA, product and IT roles across Europe and remote markets. Recruiters, talent teams, sales teams and market researchers use this kind of data to understand hiring demand, salary bands and companies that are actively expanding.

This actor turns public No Fluff Jobs search pages into structured data. It uses plain HTTP and parses the server-rendered job cards already present in the page, so it does not require a browser, login, API key or paid unblocker. That makes it a practical, low-cost actor for scheduled monitoring.

#### What data does it extract?

- **Job title** - role name shown on the listing card.
- **Company** - hiring company name.
- **Location** - location text when shown on the card.
- **Salary** - visible salary range and currency, one of No Fluff Jobs' strongest data points.
- **Tags** - role category and technology tags such as Backend, Python, Java, GCP, React, DevOps or Data.
- **Remote flag** - whether the card indicates remote work.
- **Direct job URL** - stable No Fluff Jobs listing URL.
- **Stable ID** - generated from the listing card ID or URL.
- **Source URL** - the search page that produced the result.

### ⬇️ Input

| Field | Type | Description |
| --- | --- | --- |
| `searchUrls` | array | No Fluff Jobs search URLs to scrape. Apply filters on the site, then paste the URL. |
| `keyword` | string | Optional keyword used to build a No Fluff Jobs search URL. |
| `maxResults` | integer | Maximum jobs to return. |

#### Example input

```json
{
  "searchUrls": ["https://nofluffjobs.com/jobs/python?criteria=python"],
  "maxResults": 50
}
````

Keyword search:

```json
{
  "keyword": "devops",
  "maxResults": 25
}
```

### ⬆️ Output

Each dataset item is one No Fluff Jobs listing.

```json
{
  "id": "python-developer-with-gcp-xebia-Remote-1",
  "title": "Python Developer with GCP",
  "company": "Xebia sp. z o.o.",
  "location": "Remote",
  "salary": "15 000 - 21 700 PLN",
  "tags": ["Backend", "Python", "SDK", "GCP"],
  "is_remote": true,
  "job_url": "https://nofluffjobs.com/job/python-developer-with-gcp-xebia-remote-1",
  "source_url": "https://nofluffjobs.com/jobs/python?criteria=python",
  "source": "nofluffjobs"
}
```

### 💡 Use cases

- **Tech recruiting** - monitor companies hiring for engineering, cloud, DevOps, data and product roles.
- **Salary research** - collect transparent salary ranges by role, country, technology and seniority.
- **Sales intelligence** - active hiring can signal expansion, budget and operational priorities.
- **Competitive tracking** - watch which competitors are hiring and which technologies they are investing in.
- **Job aggregation** - add No Fluff Jobs data to a broader job-board dataset.
- **Automation** - send new jobs to Airtable, Sheets, Slack, HubSpot, Clay, Make, Zapier or n8n.

### 🧭 How to use the data

Use `id` or `job_url` as the deduplication key. For monitoring, schedule the actor daily and compare new IDs against previous runs. For salary research, group rows by `tags`, `location` and `salary`. For lead generation, enrich companies that repeatedly hire for backend, cloud, security, data or DevOps roles.

No Fluff Jobs supports many filters on its website. Apply filters such as technology, location, remote, seniority or salary on the site, then paste the resulting URL into `searchUrls`. The actor will preserve that search context and return the visible results.

Pair this actor with StepStone, BuiltIn, Bayt, Reed, SEEK, JobsDB, Naukri, Ashby, Recruitee and Workable to cover both public job boards and company ATS career pages.

### ❓ FAQ

**Does this require a No Fluff Jobs account?** No. It reads public search pages.

**Does it use a browser?** No. It uses direct HTTP requests and parses server-rendered cards.

**Can I scrape filtered URLs?** Yes. Paste filtered No Fluff Jobs search URLs into `searchUrls`.

**Can I search by keyword?** Yes. Use the `keyword` field for quick searches such as `python`, `java`, `devops`, `react`, `data engineer`, `security` or `product`.

**Does it include salary?** Yes, when the salary range is visible on the search card.

**Does it include full descriptions?** This version focuses on search results for speed and reliability. Detail-page enrichment can be added later if needed.

**Is this useful for lead generation?** Yes. Transparent tech hiring and salary data is useful for recruiting, HR tech, payroll, developer tools, cloud providers, training and B2B sales teams.

**How often should I run it?** Daily is good for monitoring new roles. Weekly is enough for market research and salary tracking.

**How do I avoid duplicates?** Use `id` or `job_url` as the stable key.

**Is it legal to scrape No Fluff Jobs?** The actor collects publicly available job listing data. You are responsible for using the output lawfully and respecting privacy, employment, anti-spam and platform rules.

### 🔗 You might also like

- [StepStone Scraper](https://apify.com/benthepythondev/stepstone-scraper)
- [BuiltIn Jobs Scraper](https://apify.com/benthepythondev/builtin-jobs-scraper)
- [Bayt Jobs Scraper](https://apify.com/benthepythondev/bayt-jobs-scraper)
- [Reed Jobs Scraper](https://apify.com/benthepythondev/reed-jobs-scraper)
- [Ashby Jobs Scraper](https://apify.com/benthepythondev/ashby-jobs-scraper)
- [Recruitee Jobs Scraper](https://apify.com/benthepythondev/recruitee-jobs-scraper)

**Keywords:** No Fluff Jobs scraper, NoFluffJobs scraper, tech jobs scraper, salary jobs scraper, European tech jobs, scrape No Fluff Jobs, Python jobs scraper, DevOps jobs scraper, IT salary data, recruiting leads, hiring intelligence, job board scraper, Apify jobs scraper.

# Actor input Schema

## `searchUrls` (type: `array`):

No Fluff Jobs search URLs to scrape. Apply filters on the site, then paste the URL here.

## `keyword` (type: `string`):

Optional keyword used to build a No Fluff Jobs search URL.

## `maxResults` (type: `integer`):

Maximum number of jobs to return.

## Actor input object example

```json
{
  "searchUrls": [
    "https://nofluffjobs.com/jobs/python?criteria=python"
  ],
  "keyword": "python",
  "maxResults": 10
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrls": [
        "https://nofluffjobs.com/jobs/python?criteria=python"
    ],
    "keyword": "python",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/nofluffjobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrls": ["https://nofluffjobs.com/jobs/python?criteria=python"],
    "keyword": "python",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/nofluffjobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://nofluffjobs.com/jobs/python?criteria=python"
  ],
  "keyword": "python",
  "maxResults": 10
}' |
apify call benthepythondev/nofluffjobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/nofluffjobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "No Fluff Jobs Scraper - Tech Hiring Data",
        "description": "Scrape No Fluff Jobs listings: title, company, location, salary range, tags, remote flag and direct job URL.",
        "version": "1.0",
        "x-build-id": "EaylsOM9pzML4bzLO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~nofluffjobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-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/benthepythondev~nofluffjobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-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/benthepythondev~nofluffjobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-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": {
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "No Fluff Jobs search URLs to scrape. Apply filters on the site, then paste the URL here.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Optional keyword used to build a No Fluff Jobs search URL."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of jobs to return.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
