JustJoin.it Tech Job Scraper avatar

JustJoin.it Tech Job Scraper

Pricing

from $0.56 / 1,000 results

Go to Apify Store
JustJoin.it Tech Job Scraper

JustJoin.it Tech Job Scraper

Scrapes tech job offers from JustJoin.it, Poland's largest IT job board. Filter by location and one of 25 tech categories; returns salary by currency, required and nice-to-have skills, experience level, workplace type, company info, GPS coordinates and full job descriptions.

Pricing

from $0.56 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

JustJoin.it Tech Job Scraper (Poland)

Scrapes tech job offers from JustJoin.it — Poland's largest IT job board.

Public data only. No login, no cookies, no browser. No bot challenge of any kind — 6 of 6 TLS profiles returned clean 200s on every surface, including a bogus path (which answers a clean 404, not a challenge).

The one thing you need to know before using this

page= does nothing. JustJoin.it's search page is client-side infinite-scroll: the server always embeds the SAME freshest ~100 offers for a given (location, category, keyword) combination, whatever page number you ask for. There is no HTTP-only way to page past that — the client-side "load more" call was searched for across all 45 Next.js chunks referenced by the page and never found.

So this actor does not offer a page input at all. Coverage comes from diversifying the query: run several locations, or narrow with category / keyword, rather than expecting one broad search to page through everything. Each SEARCH_SUMMARY row reports likelyMoreThanCap: true when a query returned the full 100-offer cap, as a signal that narrowing it further would surface more.

What you get

Three record types share one dataset, told apart by recordType.

JOB — one row per offer

Search rows already carry a rich structured summary: title, company (name + logo), city, GPS coordinates, salary broken out per currency (PLN, EUR, USD, GBP, CHF) and contract type, experience level, workplace type (remote / hybrid / office), working time, required and nice-to-have skills, publish and expiry dates, and the apply URL.

With Fetch full job descriptions on (the default), each row also gets jobPostingJsonLd — JustJoin.it's Schema.org JobPosting record, verbatim, with the full plain-text description.

SEARCH_SUMMARY — one row per location searched

The filters actually sent, how many offers came back, and whether this query hit the 100-offer cap.

ERROR — one row per input that could not be processed

Every input maps to at least one row, so nothing disappears silently.

Input

FieldWhat it does
Locationsall-locations, or a city slug (warszawa, wroclaw, krakow…) — one search each
Categoryone of 25 verified tech categories, or any
Keywordfree-text search box filter
Max offers per location0 = unlimited, meaning up to the ~100-offer cap per query
Fetch full job descriptionsfull HTML→text description via one extra request per offer
Min interval between requeststhe speed control — 0.3s default

Example

{
"locations": ["all-locations", "warszawa", "wroclaw"],
"category": "python",
"keyword": "senior",
"maxItems": 100,
"includeJobDetails": true
}

Notes on reliability

  • No WAF. All surfaces answered 200 on chrome124, chrome120, safari17_0, chrome99_android and firefox133.
  • Location and category are both honest. An unrecognised slug — alone or combined (warszawa/bogus-category) — answers a clean HTTP 404, never a silently widened baseline. A bogus keyword answers HTTP 200 with zero offers, also honest.
  • Speed is controlled by request rate, not concurrency, same design as the other actors in this portfolio — maxConcurrency absorbs latency variance, minRequestInterval is the actual throttle.
  • Residential proxy pinned to Poland is the cloud default.

Known limits

  • ~100 offers per (location, category, keyword) combination, always the freshest ones — see "the one thing you need to know" above. There is no offset/cursor this actor can reach HTTP-only.
  • The flight stream's own copy of the description is a chunked text-protocol reference this actor does not reassemble; the detail pass uses the page's JSON-LD block instead, which carries the same text unchunked. If you don't need the full description, list-only mode is one request per location regardless.