theprotocol.it Job Scraper
Under maintenancePricing
from $17.00 / 1,000 results
theprotocol.it Job Scraper
Under maintenanceScrapes IT job listings from theprotocol.it – Poland's leading IT job board. Extracts title, company, salary, tech stack, location, seniority, and full job descriptions. Supports keyword search, multi-filter (technology, city, category, seniority, contract type), pagination, and incremental mode.
Pricing
from $17.00 / 1,000 results
Rating
0.0
(0)
Developer
Wiktor
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Extract structured IT job listings from theprotocol.it — Poland's leading IT job board. Filter by technology, city, seniority, contract type, or keyword and get clean, ready-to-use data in JSON, CSV, or Excel.
No coding required. Runs entirely in the cloud.
What does it do?
This Actor visits theprotocol.it, applies your filters, and collects detailed information from every matching job listing — automatically navigating through all result pages. For each offer it extracts:
- Job title, company name, and direct link to the offer
- Salary range (min / max / currency / pay period / contract type)
- Work location with remote / hybrid / on-site flags
- Required technologies and skills
- Job category and seniority level
- Publication date
- Full job description
How to use
- Go to the Actor page and click Try for free
- Fill in the Input form — all fields are optional, leave them empty to scrape all listings
- Click Start and wait a few minutes for the run to finish
- Open the Output tab and download your results as JSON, CSV, or Excel
Input
All fields are optional. Combining multiple fields narrows the search (AND logic); multiple values within one field broaden it (OR logic).
| Field | Type | Description | Example |
|---|---|---|---|
keyword | string | Job title, company name, or any keyword | "React Developer" |
technologies | string[] | Technology / skill filter | ["javascript", "react"] |
categories | checkboxes | Specialization category | Frontend, Backend, DevOps… |
locations | string[] | City filter (Polish diacritics handled) | ["Warszawa", "Kraków"] |
seniorityLevels | checkboxes | Experience level | Junior, Mid, Senior… |
contractTypes | checkboxes | Contract type | B2B, Employment contract… |
maxResults | integer | Max offers to collect (0 = all) | 100 |
incrementalMode | boolean | Skip offers scraped in previous runs | true |
proxyConfiguration | object | Proxy settings (Residential recommended) | — |
Example input (JSON)
{"technologies": ["javascript", "typescript"],"categories": ["frontend"],"locations": ["Warszawa"],"seniorityLevels": ["senior"],"contractTypes": ["b2b"],"maxResults": 50}
Output
Each job offer is saved as one JSON record in the dataset.
{"title": "Senior Frontend Developer","company": "Example Sp. z o.o.","url": "https://theprotocol.it/szczegoly/praca/senior-frontend-developer-warszawa,oferta,abc123","postedAt": "2026-05-20T09:00:00.000Z","locations": [{ "city": "Warszawa", "isRemote": false, "isHybrid": true, "isOnsite": false }],"salary": {"min": 18000,"max": 26000,"currency": "PLN","period": "mies.","kind": "netto","contractTypes": ["kontrakt B2B"]},"technologies": ["JavaScript", "TypeScript", "React", "Next.js"],"categories": ["Frontend"],"seniorityLevels": ["senior"],"description": "About the project, Join our growing team..."}
Output fields
| Field | Type | Description |
|---|---|---|
title | string | Job position name |
company | string | Hiring company name |
url | string | Direct link to the offer |
postedAt | string | Publication date (ISO 8601) |
locations | array | [{ city, isRemote, isHybrid, isOnsite }] |
salary.min | number | Minimum salary (null if not disclosed) |
salary.max | number | Maximum salary (null if not disclosed) |
salary.currency | string | Currency (PLN, EUR, …) |
salary.period | string | Pay period (e.g. mies. = monthly, godz. = hourly) |
salary.kind | string | Net / gross indicator (e.g. netto (+ VAT)) |
salary.contractTypes | array | Contract types this salary applies to |
technologies | array | Required and nice-to-have tech stack |
categories | array | Job specialization categories |
seniorityLevels | array | Required experience levels |
description | string | Full job description text |
Pricing
This Actor runs on Apify's pay-as-you-go infrastructure. Typical costs:
| Scenario | Jobs collected | Estimated cost |
|---|---|---|
| Targeted filter (e.g. senior JavaScript in Warsaw) | ~50–150 | < $0.20 |
| Broad technology filter (e.g. all JavaScript jobs) | ~200–500 | ~$0.50–1.00 |
| Full board scrape | ~3 000–5 000 | ~$3–8 |
| Daily incremental (new listings only) | ~50–150 | < $0.20 |
Tip: Enable Incremental mode and schedule the Actor to run daily. It remembers which offers it has already seen and only collects new ones — keeping your costs low.
Tips
- Filters are cumulative — selecting "Senior" + "Warsaw" + "JavaScript" returns only offers that match all three.
- Multiple values in one filter are OR-matched — selecting "Junior" and "Mid" returns both levels.
- Proxy — Apify Residential proxies are strongly recommended. The site detects and blocks datacenter IPs.
- Max results — set
maxResultsto a small number (e.g. 10) when testing to avoid unnecessary costs. - Scheduling — use Apify's built-in scheduler to run the Actor automatically every day or week.
FAQ
Is this legal? The Actor only collects publicly available job listings. Use the data responsibly and in accordance with theprotocol.it's Terms of Service and applicable data protection laws.
Salary shows as null.
Many employers choose not to publish a salary range. This is common practice on theprotocol.it — not a scraping error.
I'm getting fewer results than expected. The site may throttle frequent requests. Try switching to Apify Residential proxies and reducing concurrency to 1 in the proxy settings.
How do I get only new jobs each day? Enable Incremental mode and set up a daily schedule in Apify Console. The Actor stores previously seen offer URLs and skips them on subsequent runs.
How do I report a problem or request a feature? Open an issue on the Actor page. Custom scraping solutions are available on request.