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

\[💰 $8.0 / 1K] Extract job listings from RocketJobs.pl, Poland's non-IT job board. Search by keyword, category, seniority, employment type, work mode, city or salary, or paste URLs. Returns title, company, salary ranges, skills, location, work mode and apply details.

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

## Pricing

from $8.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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## RocketJobs.pl Scraper

Pull job postings from RocketJobs.pl — Poland's non-IT job board — at scale, with the full job description in both HTML and clean plain text, salary ranges pre-converted across five currencies, structured skills and languages, and geo coordinates on located postings. One tidy row per posting, no copy-paste. Built for recruiters, HR-tech teams, labor-market analysts, and job-aggregator builders who need structured Polish job-market data without babysitting a scraper of their own.

### Why This Scraper?

- **Full job description in HTML and clean plain text** — every posting carries the complete body twice: `descriptionHtml` for rendering and `description` as ready-to-read text, not a truncated preview snippet.
- **24 job categories across Poland's non-IT market** — Sales, Marketing, Finance, Banking, Engineering, Health & Beauty, Hospitality, Construction, Logistics, HR, Design, BI & Data, Law, and 11 more, each a one-click filter.
- **Salary ranges pre-converted across 5 currencies** — every disclosed range carries the advertised amount (min, max, unit, gross/net) plus ready-made PLN, EUR, USD, GBP, and CHF equivalents, with a per-contract breakdown so a single job can expose its Permanent and B2B rates side by side — no FX lookup needed.
- **6 seniority levels and 5 employment types** — filter Intern through C-level, and B2B / Permanent / Mandate contract / Contract / Internship, without hand-building search URLs.
- **Structured skills and languages as separate lists** — required skills, nice-to-have skills, and required languages with CEFR levels (e.g. Polish C2, English B2) arrive as clean arrays, not free text buried in the description.
- **Geo coordinates on located postings, plus multi-location support** — latitude, longitude, street, and city for the main office and for each additional place the same role is offered.
- **City + radius search** — pull every job within roughly 30 km of Warszawa, Kraków, Wrocław, or any Polish city, so nearby-suburb postings are not missed.
- **Recruitment signal flags ready to filter on** — remote-interview-available, open-to-hire-Ukrainians, and promoted / super-offer badges, each surfaced as its own boolean.
- **Direct apply link or easy-apply flag on every row** — the external apply URL when the posting links out, alongside company name, logo, and publish / last-published / expiry dates.

### Use Cases

**Recruitment & Sourcing**
- Build live candidate-facing job feeds filtered by category, city, and seniority
- Track every new Sales, Marketing, or Logistics opening across Poland daily
- Surface roles flagged open-to-hire-Ukrainians for targeted outreach programs
- Pull direct apply URLs to route candidates straight to the employer

**Market & Salary Research**
- Build a clean salary dataset by category, city, and seniority using disclosed ranges
- Compare Permanent vs. B2B pay for the same role from the per-contract breakdown
- Measure remote / hybrid / on-site mix across sectors and regions
- Track hiring volume week over week from publish dates

**Job Aggregators & Boards**
- Feed a niche or regional job board with structured, deduplicated postings
- Enrich existing listings with skills, languages, and geo coordinates
- Keep an aggregator fresh with newest-first collection and expiry dates

**Competitive Intelligence**
- Monitor which companies are hiring, at what volume, and for which roles
- Watch a competitor's headcount signals through their open postings
- Benchmark salary bands offered against the wider market

**HR & Labor-Market Analytics**
- Map local demand by combining a city + radius with a category
- Quantify skill demand from required and nice-to-have skill arrays
- Analyze language requirements (Polish, English, German) across sectors

### Getting Started

#### Simple keyword search

```json
{
    "searchQuery": "marketing",
    "maxResults": 100
}
````

#### Filter by category, city, and seniority

```json
{
    "categories": ["sales", "marketing"],
    "cities": ["Warszawa", "Kraków"],
    "experienceLevels": ["mid", "senior"],
    "workplaceType": ["hybrid", "remote"],
    "maxResults": 500
}
```

#### Advanced — salary-only dataset with URLs and filters combined

```json
{
    "searchQuery": "specjalista",
    "startUrls": [
        "https://rocketjobs.pl/oferty-pracy/marketing"
    ],
    "categories": ["marketing", "bi-data"],
    "employmentTypes": ["permanent", "b2b"],
    "workingTime": ["full_time"],
    "salaryFrom": 8000,
    "salaryCurrency": "pln",
    "withSalaryOnly": true,
    "maxResults": 2000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQuery` | string | `"marketing"` | Job title, role, or skill to search for — e.g. `marketing`, `kierowca` (driver), `sales manager`, `księgowa` (accountant). Leave blank to collect all jobs matching the filters. |
| `startUrls` | array | `[]` | Paste RocketJobs.pl URLs directly — a search-result page you already filtered in your browser, or individual job pages. Up to 100 URLs. Filters set below stack on top of a pasted search URL. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `categories` | select\[] | `[]` | Include only these of 24 sectors (Sales, Marketing, Finance, Banking, Engineering, Health & Beauty, and more). Empty = every category. |
| `experienceLevels` | select\[] | `[]` | Seniority: Intern, Junior, Mid, Senior, Manager, C-level. Empty = all levels. |
| `employmentTypes` | select\[] | `[]` | Contract type: Employment contract, B2B, Mandate contract, Contract, Internship. Empty = every type. |
| `workingTime` | select\[] | `[]` | Working-time mode: Full-time, Part-time, Internship, Freelance, B2B contract. Empty = all. |
| `workplaceType` | select\[] | `[]` | Work mode: On-site / Office, Hybrid, Fully remote, Mobile / Field. Empty = all. |
| `cities` | string\[] | `[]` | Include only jobs in or near these cities (e.g. Warszawa, Kraków). Jobs within roughly 30 km are included. Empty = every city. |
| `salaryFrom` | integer | `null` | Only include jobs offering at least this monthly salary. Jobs with no disclosed salary are excluded when set. |
| `salaryCurrency` | select | `"pln"` | Currency the minimum-salary threshold is measured in: PLN, EUR, USD, GBP, or CHF. Used only when `salaryFrom` is set. |
| `withSalaryOnly` | boolean | `false` | Return only jobs that publish a salary range. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum jobs returned across all searches and URLs. Set to `0` for no cap. The final page is kept whole, so the count can slightly overshoot. |

### Output

Each job posting is one flat row. Here is a representative result:

```json
{
    "jobId": "747630a0-51a6-4ff9-bb5d-3d4f3eec1543",
    "title": "Performance Marketing Specialist",
    "url": "https://rocketjobs.pl/oferta-pracy/bethink-sp-z-o-o--performance-marketing-specialist-poznan-marketing-performance-sem-7840cc78",
    "slug": "bethink-sp-z-o-o--performance-marketing-specialist-poznan-marketing-performance-sem-7840cc78",
    "companyName": "Bethink Sp. z o.o.",
    "companyLogo": "https://public.rocketjobs.pl/companies/logos/original/8746175d6d287e30f823886f3e21041c212c619e.jpg",
    "companyUrl": "https://rocketjobs.pl/company/bethink",
    "companySize": "50-249",
    "category": "Marketing",
    "categoryKey": "marketing-performance-sem",
    "experienceLevel": "mid",
    "workingTime": "full_time",
    "workplaceType": "remote",
    "salaryFrom": 11000,
    "salaryTo": 14000,
    "salaryCurrency": "PLN",
    "salaryText": "11 000–14 000 PLN / month (gross)",
    "employmentTypes": [
        {
            "type": "permanent",
            "from": 11000,
            "to": 14000,
            "currency": "PLN",
            "unit": "Month",
            "gross": true,
            "conversions": [
                { "currency": "EUR", "from": 2564, "to": 3263 },
                { "currency": "USD", "from": 2928, "to": 3727 },
                { "currency": "GBP", "from": 2192, "to": 2790 },
                { "currency": "CHF", "from": 2354, "to": 2996 }
            ]
        },
        {
            "type": "b2b",
            "from": 10700,
            "to": 13600,
            "currency": "PLN",
            "unit": "Month",
            "gross": false,
            "conversions": [
                { "currency": "EUR", "from": 2494, "to": 3170 },
                { "currency": "USD", "from": 2848, "to": 3620 },
                { "currency": "GBP", "from": 2132, "to": 2710 },
                { "currency": "CHF", "from": 2290, "to": 2911 }
            ]
        }
    ],
    "city": "Poznań",
    "street": "Ułańska 3",
    "latitude": 52.4000303,
    "longitude": 16.8956411,
    "multilocation": [
        { "city": "Poznań", "street": "Ułańska 3", "latitude": 52.4000303, "longitude": 16.8956411, "slug": "poznan" }
    ],
    "requiredSkills": [
        { "name": "Google Ads", "level": 1 },
        { "name": "Meta Ads", "level": 1 },
        { "name": "Google Analytics", "level": 1 }
    ],
    "niceToHaveSkills": [
        { "name": "TikTok Ads", "level": 1 },
        { "name": "Programmatic", "level": 1 }
    ],
    "languages": [
        { "code": "pl", "level": "C2" },
        { "code": "en", "level": "B2" }
    ],
    "remoteInterview": true,
    "openToHireUkrainians": false,
    "isSuperOffer": false,
    "isPromoted": false,
    "publishedAt": "2026-07-17T07:25:04.236Z",
    "lastPublishedAt": "2026-07-16T15:16:04.236Z",
    "expiredAt": "2026-08-15T15:16:04.236Z",
    "applyMethod": "external",
    "applyUrl": "https://docs.google.com/forms/d/e/1FAIpQLScKX.../viewform",
    "description": "Kim jesteśmy i co robimy? Bethink już od 2017 roku wyznacza nową jakość e-learningu...",
    "descriptionHtml": "<h3>Kim jesteśmy i co robimy?</h3><p>Bethink już od 2017 roku...</p>",
    "scrapedAt": "2026-07-16T19:23:01.875Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `jobId` | string | Unique offer identifier (GUID) |
| `title` | string | Job title |
| `url` | string | Public RocketJobs.pl job URL |
| `slug` | string | URL slug for the posting |
| `category` | string | Job sector (e.g. Marketing, Sales, Logistics) |
| `categoryKey` | string | Granular category slug, including subcategory (e.g. `marketing-performance-sem`) |
| `experienceLevel` | string | intern, junior, mid, senior, manager, or c\_level |
| `workingTime` | string | full\_time, part\_time, internship, freelance, or b2b\_contract |
| `workplaceType` | string | office, hybrid, remote, or mobile |

#### Company

| Field | Type | Description |
|-------|------|-------------|
| `companyName` | string | Employer name |
| `companyLogo` | string | Company logo image URL |
| `companyUrl` | string | Company profile URL on RocketJobs.pl |
| `companySize` | string | Reported headcount band |

#### Salary

| Field | Type | Description |
|-------|------|-------------|
| `salaryFrom` | number | Lowest advertised monthly salary |
| `salaryTo` | number | Highest advertised monthly salary |
| `salaryCurrency` | string | Currency of the range (PLN, EUR, USD, GBP, CHF) |
| `salaryText` | string | Human-readable salary summary |
| `employmentTypes` | object\[] | Per-contract salary breakdown: `type`, `from`, `to`, `currency`, `unit`, `gross`, plus `conversions` |
| `employmentTypes[].conversions` | object\[] | The same range pre-converted into each other supported currency, each with `currency`, `from`, and `to` |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `city` | string | Primary city |
| `street` | string | Primary street address |
| `latitude` | number | Primary latitude |
| `longitude` | number | Primary longitude |
| `multilocation` | object\[] | Every place the role is offered, each with city, street, coordinates, and city `slug` |

#### Skills & Languages

| Field | Type | Description |
|-------|------|-------------|
| `requiredSkills` | object\[] | Required skills, each with a name |
| `niceToHaveSkills` | object\[] | Nice-to-have skills, each with a name |
| `languages` | object\[] | Required languages with CEFR level (e.g. `{ "code": "en", "level": "B2" }`) |

#### Flags

| Field | Type | Description |
|-------|------|-------------|
| `remoteInterview` | boolean | Whether a remote interview is available |
| `openToHireUkrainians` | boolean | Whether the employer is open to hiring Ukrainians |
| `isSuperOffer` | boolean | Promoted "super offer" badge |
| `isPromoted` | boolean | Whether the posting is promoted |

#### Apply, Dates & Description

| Field | Type | Description |
|-------|------|-------------|
| `applyMethod` | string | How to apply (e.g. external, easy apply) |
| `applyUrl` | string | Direct apply URL when the posting links out |
| `publishedAt` | string | First publish timestamp |
| `lastPublishedAt` | string | Most recent re-publish timestamp |
| `expiredAt` | string | Expiry timestamp |
| `description` | string | Full job description as clean plain text |
| `descriptionHtml` | string | Full job description as HTML |
| `scrapedAt` | string | ISO timestamp when the row was collected |

### Tips for Best Results

- **Sweep a whole category or city by leaving the keyword blank** — set `categories` or `cities` (and no `searchQuery`) to collect every current posting in that slice, newest first.
- **Map local demand with city + radius + category together** — pairing `cities: ["Wrocław"]` with a category gives you every relevant role within ~30 km of the city, ideal for regional talent-market reports.
- **Build a clean salary dataset with `withSalaryOnly`** — turn it on (or set `salaryFrom`) so every row carries a disclosed range, then read the `employmentTypes` array to compare Permanent vs. B2B pay on the same job.
- **Go past 10,000 by narrowing** — a single broad search reaches at most ~10,000 jobs; split large runs by category, city, or salary band to reach deeper into the full corpus.
- **Reuse browser-filtered search URLs** — paste a RocketJobs.pl search page you already refined into `startUrls`; input filters stack on top for finer control.
- **Preview before scaling** — start with `maxResults` around 50-100 to confirm the fields match your needs, then raise the cap for a full run.
- **Filter on the signal flags** — `openToHireUkrainians` and `remoteInterview` are per-row booleans, so you can post-filter for targeted sourcing without re-running.

### Pricing

**From $8.00 per 1,000 results** — pay only for the job rows you collect, billed per result. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows the per-result charges at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.96 | $0.91 | $0.85 | $0.80 |
| 1,000 | $9.60 | $9.05 | $8.50 | $8.00 |
| 10,000 | $96.00 | $90.50 | $85.00 | $80.00 |
| 100,000 | $960.00 | $905.00 | $850.00 | $800.00 |

A "result" is any job posting row in the output dataset. The figures above cover result charges only — the fixed start fee (about $0.005) is added once per run, no matter how many results you collect, so a 1,000-result run at the Gold tier comes to roughly $8.01 in total. Platform fees (compute, storage) depend on your Apify plan and are additional.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate recruitment research, labor-market analysis, and job-aggregation use. You are responsible for complying with applicable laws and RocketJobs.pl's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle any personal data in line with GDPR and other applicable privacy regulations.

# Actor input Schema

## `searchQuery` (type: `string`):

Job title, role or skill to search for, such as 'marketing', 'kierowca' (driver), 'sales manager' or 'księgowa' (accountant). Leave blank to collect all jobs matching the filters below.

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

Paste RocketJobs.pl URLs directly — a search-result page you already filtered in your browser, or individual job pages (e.g. https://rocketjobs.pl/oferta-pracy/...). Filters set below are applied on top of a pasted search URL. Up to 100 URLs.

## `categories` (type: `array`):

Only include jobs from these sectors. Leave empty to include every category.

## `experienceLevels` (type: `array`):

Only include jobs at these experience levels. Leave empty to include all levels.

## `employmentTypes` (type: `array`):

Only include jobs offering these contract types. Leave empty to include every type.

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

Only include jobs with these working-time arrangements. Leave empty to include all.

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

Only include jobs with these work arrangements. Leave empty to include all.

## `cities` (type: `array`):

Only include jobs in or near these cities (e.g. Warszawa, Kraków, Wrocław, Poznań). Jobs within roughly 30 km of the city are included. Leave empty to include every city. Use the Work Mode filter above for remote-only jobs.

## `salaryFrom` (type: `integer`):

Only include jobs offering at least this monthly salary (in the currency selected below). Jobs that do not publish a salary are excluded when this is set. Leave empty for no minimum.

## `salaryCurrency` (type: `string`):

Currency the minimum-salary threshold is measured in (jobs carry pre-converted salaries). Only used when a minimum salary is set above.

## `withSalaryOnly` (type: `boolean`):

Turn on to return only jobs that publish a salary range.

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

Hard cap on total jobs returned across all searches and URLs. Default 100 — increase for bigger runs, or set to 0 for no cap. A single search reaches at most ~10,000 jobs; to gather more, narrow with a category, city or salary filter (each filter's own pool is usually well under that limit) and run separate searches. The last page is kept in full, so the final count can slightly overshoot this number.

## Actor input object example

```json
{
  "searchQuery": "marketing",
  "startUrls": [],
  "categories": [],
  "experienceLevels": [],
  "employmentTypes": [],
  "workingTime": [],
  "workplaceType": [],
  "cities": [],
  "salaryCurrency": "pln",
  "maxResults": 100
}
```

# Actor output Schema

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

Table of jobs with the most useful fields — title, company, city, seniority, work mode, salary, and link.

## `details` (type: `string`):

Full per-job rows including salary by contract type, skills, languages, all locations, description, and apply details.

# 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 = {
    "searchQuery": "marketing",
    "startUrls": [],
    "categories": [],
    "experienceLevels": [],
    "employmentTypes": [],
    "workingTime": [],
    "workplaceType": [],
    "cities": [],
    "salaryCurrency": "pln",
    "withSalaryOnly": false,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/rocketjobs-pl-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 = {
    "searchQuery": "marketing",
    "startUrls": [],
    "categories": [],
    "experienceLevels": [],
    "employmentTypes": [],
    "workingTime": [],
    "workplaceType": [],
    "cities": [],
    "salaryCurrency": "pln",
    "withSalaryOnly": False,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/rocketjobs-pl-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 '{
  "searchQuery": "marketing",
  "startUrls": [],
  "categories": [],
  "experienceLevels": [],
  "employmentTypes": [],
  "workingTime": [],
  "workplaceType": [],
  "cities": [],
  "salaryCurrency": "pln",
  "withSalaryOnly": false,
  "maxResults": 100
}' |
apify call solidcode/rocketjobs-pl-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "RocketJobs.pl Scraper",
        "description": "[💰 $8.0 / 1K] Extract job listings from RocketJobs.pl, Poland's non-IT job board. Search by keyword, category, seniority, employment type, work mode, city or salary, or paste URLs. Returns title, company, salary ranges, skills, location, work mode and apply details.",
        "version": "1.0",
        "x-build-id": "RJCzIpX3miMcOmW8U"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~rocketjobs-pl-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-rocketjobs-pl-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/solidcode~rocketjobs-pl-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-rocketjobs-pl-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/solidcode~rocketjobs-pl-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-rocketjobs-pl-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": {
                    "searchQuery": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Job title, role or skill to search for, such as 'marketing', 'kierowca' (driver), 'sales manager' or 'księgowa' (accountant). Leave blank to collect all jobs matching the filters below."
                    },
                    "startUrls": {
                        "title": "RocketJobs URLs",
                        "maxItems": 100,
                        "type": "array",
                        "description": "Paste RocketJobs.pl URLs directly — a search-result page you already filtered in your browser, or individual job pages (e.g. https://rocketjobs.pl/oferta-pracy/...). Filters set below are applied on top of a pasted search URL. Up to 100 URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "categories": {
                        "title": "Job Categories",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs from these sectors. Leave empty to include every category.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "sales",
                                "marketing",
                                "finanse",
                                "bankowosc",
                                "inzynieria",
                                "support",
                                "zdrowie",
                                "gastronomia",
                                "turystyka",
                                "pm",
                                "praca-w-sklepie",
                                "budownictwo",
                                "produkcja",
                                "nieruchomosci",
                                "edukacja",
                                "logistyka",
                                "hr",
                                "design",
                                "bi-data",
                                "praca-biurowa",
                                "consulting",
                                "media",
                                "prawo",
                                "inne"
                            ],
                            "enumTitles": [
                                "Sales (Sprzedaż)",
                                "Marketing",
                                "Finance (Finanse)",
                                "Banking (Bankowość)",
                                "Engineering (Inżynieria)",
                                "Customer Support (Obsługa klienta)",
                                "Health & Beauty (Zdrowie i uroda)",
                                "Hospitality (Gastronomia)",
                                "Tourism (Turystyka)",
                                "Management (Zarządzanie)",
                                "Retail / In-store (Praca w sklepie)",
                                "Construction (Budownictwo)",
                                "Production (Produkcja)",
                                "Real Estate (Nieruchomości)",
                                "Education (Edukacja)",
                                "Logistics (Logistyka)",
                                "HR",
                                "Design",
                                "BI & Data",
                                "Office / Admin (Praca biurowa)",
                                "Consulting",
                                "Media",
                                "Law (Prawo)",
                                "Other (Inne)"
                            ]
                        }
                    },
                    "experienceLevels": {
                        "title": "Seniority",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs at these experience levels. Leave empty to include all levels.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "intern",
                                "junior",
                                "mid",
                                "senior",
                                "manager",
                                "c_level"
                            ],
                            "enumTitles": [
                                "Intern",
                                "Junior",
                                "Mid",
                                "Senior",
                                "Manager",
                                "C-level / Executive"
                            ]
                        }
                    },
                    "employmentTypes": {
                        "title": "Employment Type",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs offering these contract types. Leave empty to include every type.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "permanent",
                                "b2b",
                                "mandate_contract",
                                "contract",
                                "internship"
                            ],
                            "enumTitles": [
                                "Employment contract (umowa o pracę)",
                                "B2B",
                                "Mandate contract (umowa zlecenie)",
                                "Contract (umowa o dzieło)",
                                "Internship / apprenticeship (staż)"
                            ]
                        }
                    },
                    "workingTime": {
                        "title": "Working Time",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs with these working-time arrangements. Leave empty to include all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "full_time",
                                "part_time",
                                "internship",
                                "freelance",
                                "b2b_contract"
                            ],
                            "enumTitles": [
                                "Full-time (pełny etat)",
                                "Part-time (część etatu)",
                                "Internship (staż)",
                                "Freelance",
                                "B2B contract"
                            ]
                        }
                    },
                    "workplaceType": {
                        "title": "Work Mode",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs with these work arrangements. Leave empty to include all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "office",
                                "hybrid",
                                "remote",
                                "mobile"
                            ],
                            "enumTitles": [
                                "On-site / Office (praca stacjonarna)",
                                "Hybrid (praca hybrydowa)",
                                "Fully remote (praca zdalna)",
                                "Mobile / Field (praca mobilna)"
                            ]
                        }
                    },
                    "cities": {
                        "title": "Cities",
                        "type": "array",
                        "description": "Only include jobs in or near these cities (e.g. Warszawa, Kraków, Wrocław, Poznań). Jobs within roughly 30 km of the city are included. Leave empty to include every city. Use the Work Mode filter above for remote-only jobs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "salaryFrom": {
                        "title": "Minimum Salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include jobs offering at least this monthly salary (in the currency selected below). Jobs that do not publish a salary are excluded when this is set. Leave empty for no minimum."
                    },
                    "salaryCurrency": {
                        "title": "Salary Currency",
                        "enum": [
                            "pln",
                            "eur",
                            "usd",
                            "gbp",
                            "chf"
                        ],
                        "type": "string",
                        "description": "Currency the minimum-salary threshold is measured in (jobs carry pre-converted salaries). Only used when a minimum salary is set above."
                    },
                    "withSalaryOnly": {
                        "title": "Only jobs with a disclosed salary",
                        "type": "boolean",
                        "description": "Turn on to return only jobs that publish a salary range."
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on total jobs returned across all searches and URLs. Default 100 — increase for bigger runs, or set to 0 for no cap. A single search reaches at most ~10,000 jobs; to gather more, narrow with a category, city or salary filter (each filter's own pool is usually well under that limit) and run separate searches. The last page is kept in full, so the final count can slightly overshoot this number."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
