Stepstone, Totaljobs and IrishJobs are one job board group

Stepstone, Totaljobs, CWJobs, IrishJobs, NIJobs and Pnet belong to The Stepstone Group and share one result format. What that means for a European job feed, what a visitor without login can see, and when the free routes are the better choice.

Yes, they are one company. Stepstone in Germany, Austria, Belgium and the Netherlands, Totaljobs and its sister sites in the United Kingdom, IrishJobs and Jobs.ie in Ireland, NIJobs in Northern Ireland and Pnet in South Africa all belong to The Stepstone Group, a subsidiary of the German publisher Axel Springer. The group lists its brands on its own corporate site at thestepstonegroup.com. The UK boards came in through the Totaljobs Group, the Irish and South African boards through the Saongroup, and the group has been consolidating them onto one technical platform since.

For anyone who wants job data, that consolidation is the interesting part. A search result page on Stepstone.de, Totaljobs.com and IrishJobs.ie is built the same way, carries the same fields and uses the same URL pattern for the detail page. One parser covers all of them. That is why a single feed across Germany, the UK and Ireland is a realistic project, where the same feed across Indeed, LinkedIn and a national board would need three separate parsers and three separate sets of workarounds. The rest of this article explains what exactly is shared, what a visitor without an account can and cannot see, where the data is thin, and when you should not scrape at all.

Which boards are in the group

The group runs more sites than most people realise. Here is the set that shares the result format in practice, grouped by country:

  • Germany, Austria, Belgium, Netherlands: stepstone.de, stepstone.at, stepstone.be, stepstone.nl.
  • United Kingdom: totaljobs.com, cwjobs.co.uk, caterer.com, careerstructure.com, retailchoice.com, catererglobal.com, nijobs.com.
  • Ireland: irishjobs.ie, jobs.ie.
  • South Africa: pnet.co.za.

That is 14 boards in 7 countries. The group also owns businesses that are not job boards, such as the Appcast advertising platform and the Mya recruiting chatbot, and it operates employer tools under its own name. Those do not matter for a job feed. What matters is that the 14 consumer boards above present a listing in one shape.

The Dutch board is worth a caveat. Stepstone.nl exists and works, but the Dutch market is dominated by other boards and the listing count there is small compared to Germany or the UK. Treat it as a bonus, not as Dutch coverage.

What "one result format" actually means

When you search on any of these boards you get a list of cards. Each card carries the same set of fields: a listing ID, the title, the company name, the location text, the posting date, a salary line when the employer provided one, a short excerpt of the description, a flag for remote or hybrid work when set, and a link to the detail page. The detail page carries the full description as HTML, the employer's logo and profile link, and the apply route.

Under the hood, the search page embeds the result set as structured data in the page and the site also calls an internal JSON endpoint when you page through results. The field names in that data are the same on the German, British and Irish sites. The paths differ per country, the language of the UI differs, and the filter options differ a little, but the record itself is one schema. That is a direct consequence of the group running one platform for all of them.

For a feed this gives you three things. First, one parser and one test suite. Second, one normalisation layer, because a salary on Totaljobs and a salary on Stepstone.de arrive in the same field with the same structure, even if one is in pounds and one in euros. Third, one deduplication key, because the listing ID is unique within the platform. An employer that posts the same role on Stepstone.de and Stepstone.at will produce two listings with two IDs, so you still deduplicate on title plus company plus location, but you do not have to guess which field is which.

What a visitor without login can see

All 14 boards show search results and job detail pages to anyone. You do not need an account to read a title, a description, a location, a posting date or a salary line. The boards are built to be indexed by Google, so the public HTML is complete for the listing itself. Both the German and the UK sites publish a robots.txt that sets out which paths they allow crawlers to read, see stepstone.de/robots.txt and totaljobs.com/robots.txt. Read those before you build anything, and respect them.

What you cannot see without logging in:

  • Applicant counts. The boards do not show how many people applied, with or without an account.
  • Saved searches and job alerts. These are account features and are not a data source anyway.
  • The employer's internal reference and contact person, when the employer chose to show them only in the application flow.
  • Anything behind the apply button when the apply route is the board's own form. The form is behind a login or a session, and in any case it belongs to the applicant, not to a dataset.

What is incomplete even when you can see it:

  • Salary. Many German and Austrian employers do not publish a salary on Stepstone, or publish only a range the board estimated. In Austria a minimum salary is required by law for most listings, so coverage is better there. In the UK, Totaljobs shows a salary on a good share of listings, but "competitive" and "negotiable" are common. Treat a missing salary as missing, not as zero.
  • Location. The location is free text as the employer typed it. "Frankfurt am Main", "Frankfurt" and "Frankfurt (Remote)" are three strings for one city. Normalise before you aggregate.
  • Posting date. The date shown is the date of the current version of the listing. Employers refresh listings, and a refreshed listing gets a new date and sometimes a new ID. A "new this week" count built on the posting date alone will overstate the truth.
  • Company identity. The company name is the name of the account that posted, which can be a recruitment agency posting on behalf of a client. Agency listings are a large share on the UK boards and a visible share on the German ones. If you need the hiring employer, filter the agencies out or flag them.

The free ways to get the same data

Before you scrape, check whether one of these routes covers your need. Often it does, and it is cheaper and more stable.

The employer's own career site. If you care about a fixed set of companies, their own applicant tracking system publishes a public JSON feed of open roles, and that feed is the source the job board copies from. It is free, it is complete for that employer, and it does not depend on a job board's HTML. For a watchlist of companies this is the better choice, every time. The ATS Job Scrapers on this site read those feeds, but you can also read them yourself with a few lines of code.

Job alerts by email. Every board in the group lets you save a search and receive new matches by email. For one or two searches that a human reads, this is enough and costs nothing.

The board's own employer and partner interfaces. The Stepstone Group sells access to its data to large customers and to partner sites through commercial agreements. If you are a job aggregator with volume, a licensing conversation with the group will get you a feed that is complete, licensed and not subject to breakage. The group's corporate site is the entry point for that.

Public statistics. If your question is "how many jobs for data engineers in Germany this month", you may not need listings at all. The German Federal Employment Agency and the national statistics offices publish vacancy statistics for free. They lag, but they are authoritative.

Scraping makes sense when you need the listings themselves, across many employers you do not know in advance, across more than one country, and you need them in a structured form on a schedule. That is a narrower case than most people assume.

Terms, rate and fairness

The terms of use of each board prohibit automated extraction for commercial redistribution of the listings, and the terms of Stepstone.de and Totaljobs.com both say so. Scraping public pages for your own analysis sits in a grey area that depends on your jurisdiction and your use. Reading a page is not the same as republishing it. Decide with your own counsel, and do not copy full descriptions into a product that competes with the board.

On the technical side, the boards use bot protection. Hitting them hard from a datacenter address will get you blocked within minutes, and that is their right. Keep request rates low, cache aggressively, and fetch the detail page only for listings you actually need. A search card already carries the title, company, location, date and salary. In our experience the detail page is only needed for the full description, and most feeds do not need it for every row.

Building a European feed on top of this

A practical setup for a feed across Germany, Austria, the UK and Ireland looks like this:

  1. Define the searches on the boards in a browser, with the filters you want, and keep the URLs. The URL encodes the keyword, location, radius and sort order.
  2. Fetch the first pages of each search on a schedule, newest first. Stop paging when you reach listings you have already seen.
  3. Store the listing ID, the board, the fetch time and the raw fields. Never overwrite the raw record with a normalised one.
  4. Normalise location, salary currency and employment type in a separate step, so you can rerun it when you improve the rules.
  5. Deduplicate across boards on company plus title plus normalised location, and keep the earliest first seen date as the real posting date.
  6. Fetch the full description only for rows that pass your filters.

The shared format is what makes step 2 and step 3 cheap. One fetcher, one parser, one storage schema, fourteen boards.

If you would rather not maintain the fetcher yourself, the Stepstone Jobs Scraper on this site runs exactly this loop on Apify: paste one search URL per board, tick a box for the full description, set a cap per search and per run, and get the records back as JSON or CSV with the same fields on every board.


Want the signal instead of the raw filings? Get a free report preview. Prefer the tool to the write-up? Browse all data feeds or connect the free MCP server.