# RocketJobs.pl Job Scraper (`trev0n/rocketjobs-scraper`) Actor

Scrape non-IT job offers from RocketJobs.pl - Poland's general job board covering sales, production, logistics, healthcare, retail, gastronomy, construction and 17 more categories. Extract salaries, locations, contract types, experience levels, skills and full descriptions.

- **URL**: https://apify.com/trev0n/rocketjobs-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 💼 RocketJobs.pl Job Scraper

🎯 **Every job on Poland's biggest non-IT board, exported in one click — with salaries, locations, contracts and full descriptions.**

RocketJobs.pl carries roughly 15 000 live openings across sales, production, logistics, healthcare, retail, gastronomy, construction, finance, education and 16 more fields. This scraper collects them as clean, structured data: position, employer, city (including every extra city an offer is open in), salary band, contract type, experience level, work mode, required skills, publication and expiry dates, and the employer's own application link.

### 🚀 What Does It Do?

This scraper automatically searches RocketJobs.pl and collects **structured, ready-to-use data** for every matching offer. No manual browsing needed — just set your filters and hit Start.

💡 **Two modes of operation:**

1. **🔍 Discovery Mode** — pick a keyword, city, category and filters; it pages through the whole result set and exports every offer.
2. **📋 Direct URL Mode** — paste RocketJobs.pl links (a search page, a category page, or a single offer) and get exactly those.

Plus a **📡 Monitoring Mode** that remembers the previous run and returns only what is new, edited or reposted — perfect for a daily scheduled check.

### 👥 Who Is This For?

| 🏢 Use Case                           | 💬 How It Helps                                                                      |
| ------------------------------------- | ------------------------------------------------------------------------------------ |
| 🧑‍💼 **Recruiters & staffing agencies** | See who is hiring in your city and spot fresh openings the day they appear           |
| 📊 **Salary & market analysts**       | Build pay benchmarks per role, city and contract type from disclosed bands           |
| 🤖 **Job-board aggregators**          | Feed a continuously updated, deduplicated stream of non-IT offers into your own site |
| 🎯 **Lead generation**                | Companies that are hiring are companies that are growing — and buying                |
| 🏭 **Employer-brand teams**           | Watch how rivals word their offers, what they pay and how fast they repost           |
| 🧑‍🎓 **Job seekers & career coaches**   | Filter thousands of offers down to the handful that actually fit                     |

### ✨ Features

- 🇵🇱 **Whole board, not the first page** — pages through every matching offer, thousands per run
- 🏷️ **24 categories** — from sales and production to gastronomy, retail, healthcare and construction
- 📍 **Smart location matching** — searching a city also catches offers open in several cities at once, and whole agglomerations (Tricity, Silesia) work as one query
- 💰 **Complete salary data** — band, currency, gross/net, period, plus an automatic PLN conversion for foreign-currency offers
- 🎛️ **Smart Filters** — keyword, city, category, experience level, contract type, working time, work mode, salary-disclosed-only
- 📝 **Full descriptions on demand** — optional deep extraction adds the complete job description, the employer's application link, company size and map coordinates
- 📡 **Monitoring mode** — returns only new, edited and reposted offers, so a daily run costs a fraction of a full export
- 🧹 **Built-in deduplication** — the board's own pages overlap while you read them; every offer still lands exactly once
- ⚡ **Fast & Scalable** — no browser needed, so large exports stay quick and cheap
- 📤 **Export Anywhere** — download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

### 🎛️ Filters & Options

| Option                                     | What It Does                                                                                      |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------- |
| 🔍 **Keyword**                             | Free-text search across offers, e.g. "laborant", "kierowca", "kucharz"                            |
| 📍 **Location**                            | City name or slug; `trojmiasto` and `slask` cover whole agglomerations, empty means all of Poland |
| 🗂️ **Category**                            | One of the board's 24 fields                                                                      |
| 🎚️ **Experience level**                    | Intern, junior, mid, senior, manager, C-level                                                     |
| 📄 **Contract type**                       | Employment contract, B2B, mandate contract, task contract, internship                             |
| ⏰ **Working time**                        | Full time, part time, internship, freelance, B2B contract                                         |
| 🏠 **Work mode**                           | Fully remote, hybrid, on-site, mobile                                                             |
| 💰 **Only offers with a disclosed salary** | Skip everything that hides the money                                                              |
| ↕️ **Result order**                        | Newest first or oldest first                                                                      |
| 📝 **Extract full details**                | Adds description, application link, company size and coordinates                                  |
| 📡 **Only new and changed offers**         | Monitoring mode for scheduled runs                                                                |
| 🔢 **Max offers**                          | Control how many offers to extract per run (0 = no limit)                                         |
| 🔗 **Direct URLs**                         | Optionally provide specific RocketJobs.pl URLs to scrape                                          |

### 📦 What You Get (Output Fields)

Every offer includes:

#### Position

| Field            | Example                                                                       |
| ---------------- | ----------------------------------------------------------------------------- |
| title            | `Specjalista / Specjalistka ds. kontroli jakości`                             |
| url              | `https://rocketjobs.pl/oferta-pracy/foodcare-specjalista-ds-kontroli-jakosci` |
| experienceLevel  | `mid`                                                                         |
| workplaceType    | `office`                                                                      |
| workingTime      | `full_time`                                                                   |
| category         | `Produkcja`                                                                   |
| requiredSkills   | `["Kontrola jakości", "HACCP", "Excel"]`                                      |
| niceToHaveSkills | `["ISO 22000"]`                                                               |
| languages        | `["pl", "en"]`                                                                |

#### Employer

| Field       | Example                                                            |
| ----------- | ------------------------------------------------------------------ |
| companyName | `FOODCARE`                                                         |
| companyUrl  | `https://rocketjobs.pl/company/foodcare`                           |
| companyLogo | `https://public.rocketjobs.pl/companies/logos/original/7f3c1a.jpg` |
| companySize | `500`                                                              |

#### Location

| Field           | Example                     |
| --------------- | --------------------------- |
| city            | `Niepołomice`               |
| street          | `Zabierzowska 20`           |
| locations       | `["Niepołomice", "Kraków"]` |
| isMultiLocation | `true`                      |
| latitude        | `50.0353`                   |
| longitude       | `20.2183`                   |

#### Money

| Field          | Example              |
| -------------- | -------------------- |
| salaryMin      | `7000`               |
| salaryMax      | `9500`               |
| salaryCurrency | `PLN`                |
| salaryMinPln   | `7000`               |
| salaryMaxPln   | `9500`               |
| salaryPeriod   | `month`              |
| salaryGross    | `true`               |
| contractType   | `permanent`          |
| salaryText     | `7,000–9,500 PLN/mo` |

#### Dates & Tracking

| Field           | Example                    |
| --------------- | -------------------------- |
| publishedAt     | `2026-08-11T09:14:00.000Z` |
| lastPublishedAt | `2026-08-11T09:14:00.000Z` |
| expiredAt       | `2026-09-10T09:14:00.000Z` |
| changeType      | `NEW`                      |
| scrapedAt       | `2026-08-12T07:15:33.921Z` |

#### With Full Details Enabled

| Field         | Example                                                                                                |
| ------------- | ------------------------------------------------------------------------------------------------------ |
| description   | `Zakres obowiązków: • kontrola jakości surowców i wyrobów gotowych • prowadzenie dokumentacji HACCP …` |
| applyUrl      | `https://system.erecruiter.pl/FormTemplates/RecruitmentForm.aspx?WebID=8f2a`                           |
| isOfferActive | `true`                                                                                                 |

### 📊 Example Output

```json
{
    "itemId": "88ab56d8-eb00-4878-a894-74a855f7069a",
    "slug": "foodcare-specjalista-ds-kontroli-jakosci-niepolomice",
    "url": "https://rocketjobs.pl/oferta-pracy/foodcare-specjalista-ds-kontroli-jakosci-niepolomice",
    "title": "Specjalista / Specjalistka ds. kontroli jakości",
    "companyName": "FOODCARE",
    "companyUrl": "https://rocketjobs.pl/company/foodcare",
    "companyLogo": "https://public.rocketjobs.pl/companies/logos/original/7f3c1a.jpg",
    "companySize": 500,
    "city": "Niepołomice",
    "street": "Zabierzowska 20",
    "locations": ["Niepołomice", "Kraków"],
    "isMultiLocation": true,
    "latitude": 50.0353,
    "longitude": 20.2183,
    "salaryMin": 7000,
    "salaryMax": 9500,
    "salaryCurrency": "PLN",
    "salaryMinPln": 7000,
    "salaryMaxPln": 9500,
    "salaryPeriod": "month",
    "salaryGross": true,
    "contractType": "permanent",
    "salaryText": "7,000–9,500 PLN/mo",
    "experienceLevel": "mid",
    "workplaceType": "office",
    "workingTime": "full_time",
    "categoryId": 93,
    "category": "Produkcja",
    "requiredSkills": ["Kontrola jakości", "HACCP", "Excel"],
    "niceToHaveSkills": ["ISO 22000"],
    "languages": ["pl", "en"],
    "openToHireUkrainians": true,
    "remoteInterview": false,
    "publishedAt": "2026-08-11T09:14:00.000Z",
    "lastPublishedAt": "2026-08-11T09:14:00.000Z",
    "expiredAt": "2026-09-10T09:14:00.000Z",
    "description": "Zakres obowiązków: • kontrola jakości surowców i wyrobów gotowych • prowadzenie dokumentacji HACCP",
    "applyUrl": "https://system.erecruiter.pl/FormTemplates/RecruitmentForm.aspx?WebID=8f2a",
    "isOfferActive": true,
    "changeType": "NEW",
    "scrapedAt": "2026-08-12T07:15:33.921Z"
}
```

### 📋 Dataset Views

The Apify Console gives you **4 ready-made table views** to quickly browse your results:

| View                | What It Shows                                                               |
| ------------------- | --------------------------------------------------------------------------- |
| 📊 **Overview**     | Position, employer, city, salary, level, work mode and the offer link       |
| 💰 **Salaries**     | Only the money: band, currency, gross/net, period, PLN conversion, contract |
| 📡 **Monitoring**   | What changed since the previous run — new, edited, reposted or gone         |
| 📋 **Full Details** | Every single field — the complete dataset                                   |

### ❓ FAQ

**🤔 How many offers are there in total?**
Around 15 000 live offers across all 24 categories. A single run can take all of them, or stop at any limit you set.

**🤔 Do all offers show a salary?**
No — roughly a third of employers disclose a band. Turn on "Only offers with a disclosed salary" if a missing salary makes an offer useless to you.

**🤔 What does Monitoring Mode actually save me?**
After the first run it returns only offers that are new, edited or reposted, so a daily check processes a handful of records instead of thousands.

**🤔 Why does one offer list several cities?**
Employers often post one opening for several locations. You get the primary city plus every additional city in `locations`, and searching any of them finds the offer.

**🤔 Can I export the data?**
Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

**🤔 How often should I run this?**
For fresh data, run daily or weekly. You can schedule automatic runs on Apify with just a few clicks.

**🤔 Does it work with proxies?**
Yes. It works fine without one, and for very large exports you can switch a proxy on so the connection rotates.

### 🛠️ Need Custom Filters or Features?

**I'm happy to customize this scraper for your specific needs!** 🤝

Whether you need:

- 🎯 Additional filters (specific employers, salary thresholds, offers open to candidates from abroad, expiry windows)
- 📊 Extra data fields or custom output formats
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication
- 🌐 Scraping from other Polish job platforms alongside RocketJobs.pl

👉 **Don't hesitate to reach out via private message** — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from RocketJobs.pl. It does not access private data, bypass authentication, or touch candidate applications. Please use the data responsibly and in compliance with applicable laws and platform terms of service.

# Actor input Schema

## `startUrls` (type: `array`):

Paste RocketJobs.pl links — a search/category page or a single offer. Filters set below are ignored when this is used.

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

Free-text search, e.g. "laborant", "kierowca", "kucharz".

## `location` (type: `string`):

City name or slug, e.g. "krakow", "Gdańsk". Use "trojmiasto" or "slask" for whole agglomerations, or leave empty for the whole country. Offers open in several cities are matched too.

## `category` (type: `string`):

Limit results to one of the board's 24 categories.

## `experienceLevel` (type: `array`):

Keep only offers at these levels.

## `employmentType` (type: `array`):

Keep only offers with these contract types.

## `workingTime` (type: `array`):

Full-time, part-time, internship, freelance or B2B contract.

## `workplaceType` (type: `array`):

Remote, hybrid, on-site or mobile work.

## `withSalary` (type: `boolean`):

About a third of the offers on this board quote a salary band. Turn this on to skip the rest.

## `orderBy` (type: `string`):

Newest offers first, or oldest first. (The board also advertises a salary sort, but it does not actually order by salary, so it is not offered here.)

## `maxItems` (type: `integer`):

Stop after this many offers. Set 0 for no limit (the board holds roughly 15 000).

## `extractFullDetails` (type: `boolean`):

Fetch each offer's page for the full description, the employer's application link, company size and coordinates. Slower and pricier, but far richer.

## `incrementalMode` (type: `boolean`):

Remembers what the previous run saw and returns only offers that are new, edited or reposted. Ideal for scheduled monitoring.

## `emitUnchanged` (type: `boolean`):

With monitoring on, also return offers that did not change.

## `emitExpired` (type: `boolean`):

With monitoring on, also report offers that vanished since the previous run.

## `stateKey` (type: `string`):

Name for this monitoring baseline. Two searches with different labels never share history.

## `maxConcurrency` (type: `integer`):

Parallel requests. Lower it if results start coming back empty — the site throttles bursts.

## `minConcurrency` (type: `integer`):

Minimum parallel requests to keep in flight.

## `maxRequestRetries` (type: `integer`):

How many times to retry a failed request before giving up on it.

## `maxRequestsPerMinute` (type: `integer`):

Rate limit. Keep it moderate: this site answers a burst with an empty result rather than an error.

## `proxyConfiguration` (type: `object`):

Optional. The site is reachable without a proxy; add one only for very large runs, so the IP can rotate.

## Actor input object example

```json
{
  "startUrls": [],
  "experienceLevel": [],
  "employmentType": [],
  "workingTime": [],
  "workplaceType": [],
  "withSalary": false,
  "orderBy": "DESC",
  "maxItems": 100,
  "extractFullDetails": false,
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 3,
  "maxRequestsPerMinute": 120,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `salaries` (type: `string`):

No description

## `monitoring` (type: `string`):

No description

# 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 = {
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/rocketjobs-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 = { "startUrls": [] }

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": []
}' |
apify call trev0n/rocketjobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,trev0n/rocketjobs-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6BIvlKqdWEvkmksCt/builds/b1g21UatzLfAeBxKf/openapi.json
