AnalystClass

How the internship tracker is built

Every record in the AnalystClass tracker comes from an employer's own posting or an official opportunity directory, is checked automatically every morning, and carries the date it was last read. This page explains what each status means, what the automated check is allowed to decide on its own, and the three ways a careers page can look perfectly healthy while the role behind it no longer exists.

Currently 99 records across 48 of 155 monitored firms. Last human verification pass 31 July 2026 to 11 September 2026.

Where a record comes from

An employer's own careers page, an official opportunity directory, or the applicant tracking system that employer uses. Nothing is taken from job aggregators, forums, spreadsheets circulated between students, or second-hand posts.

A record is published only once an official source has been read directly, and it carries the date that happened. Where a firm runs a programme but has no live vacancy, that is recorded separately as a programme rather than presented as an opening.

Of the 155 firms monitored, 48 currently hold a tracked opportunity. The rest are watched, not padded into the count.

What each status means

A status word with no definition beside it is the kind of unexplained label that makes a tracker impossible to trust. These are the only five, and this is what each one claims.

Open now47 now
An official vacancy or application page was verified as live on the date shown.
Opening soon7 now
The employer has publicly stated when the next window opens. Not yet applicable.
Rolling17 now
The employer accepts applications continuously, with no published closing date.
Programme, window unconfirmed19 now
An official programme exists, but no current application window was verified. Not an opening.
Closed15 now
The stated deadline has passed. Kept visible until the next check confirms what replaced it.

How often it is checked

Every source URL behind a live record is fetched automatically each morning, shortly after 05:20 UTC, using a real browser rather than a simple request. Several of the sources we publish return nothing at all to a plain fetch and only render their content once JavaScript has run, so a browser is the only way to read them.

What comes back is stored permanently and dated: the response code, the page after any redirects, its text, any machine-readable expiry the employer published, and whether the role we hold is still named on the page. Every claim this tracker makes traces to one of those dated observations.

A deadline passing needs no check at all. A record whose stated deadline is in the past stops being shown as open the day after it passes, without waiting for anyone.

The same run also reads the internship pages of the firms we monitor, watching for openings that have appeared rather than ended. A page is only ever compared against a previous reading of itself, so a page seen for the first time establishes a baseline and produces nothing.

What the automated check is allowed to decide

It can close a record and it can add one, and in both directions the limits matter more than the capability. Every automated change records the evidence that caused it, and any one of them can be reversed on its own.

  • It closes only on unambiguous evidence.The page has gone after previously being seen alive, the employer's own published deadline has passed, or the page states the position is filled. It never reopens a record it has closed.
  • It adds only what it has opened and read.A link appearing on a firm's internship page is followed, and the vacancy page itself has to load and name both an internship and this industry before anything is published. Where the employer publishes no machine-readable detail, the record says so rather than guessing: business area, start period and city read as not stated, and nothing arrives marked as high confidence.
  • Unreachable is not closed. A page that blocks us, times out, or refuses automated traffic tells us nothing about whether the role exists. Several employers block us permanently and those records are checked by hand.
  • A cluster of failures on one host is treated as the host failing. When several URLs at the same employer break identically on the same day, that is one platform changing, not several roles ending.
  • A run that would close an implausible number of records stops and writes nothing. Twenty roles do not end overnight. When it looks as though they have, the cause is far more often a broken check, and the damage is indistinguishable from real data.

Everything the check is unsure about is written to a report a person reads, rather than applied.

Why a working page is poor evidence that a role exists

This is the part most worth knowing, whether or not you use this tracker. A careers link that loads normally is not evidence the job is still there. Three distinct shapes turned up across our sources in a single day of checking, and all three return the ordinary success code that a simple checker treats as healthy.

  1. A redirect chain ending at an error page that reports success. The link forwards two or three times and lands on a page titled for a missing document, which the server nonetheless serves as though nothing is wrong.
  2. An application system quietly serving its own homepage. The role reference is nowhere on the page and there is no error message of any kind. Nothing in the response says anything has gone wrong. This is the dangerous one, and the only reliable way to catch it is to check that the role we expect is actually named on the page we received.
  3. A closure notice rendered underneath the role title. The heading and location still appear exactly as they did when the job was live, with the words explaining it has gone placed below them. Anything reading only the title records this as open.

There is a fourth case worth naming: an employer's own search results can continue listing a posting, word for word, after the posting's page has stopped existing. The posting page is authoritative over the listing, including the employer's own.

What the dates mean

Each record carries its own last-checked date rather than sharing one across the list, because records are rechecked in batches and a single date would claim the newest for all of them. The tracker states a range for that reason.

Many European employers publish no closing date at all. Not publicly statedmeans the posting gives none, not that we failed to find one. Where a deadline is shown, it is the employer's, quoted from their page.

What this cannot tell you

  • The employer's own page is the source of truth. Roles are filled, withdrawn and re-dated without notice, sometimes within hours of a check.
  • Coverage is not exhaustive. It reflects firms whose recruiting is publicly documented, which under-represents smaller boutiques hiring through networks and personal introductions.
  • A programme with no confirmed window is not an opening. Those records exist so you know the programme is there and can watch it, not so you can apply today.
  • Some employers refuse automated traffic entirely. Their records are checked by hand and are therefore checked less often than the rest.
  • AnalystClass is independent and is not affiliated with, endorsed by or sponsored by any firm listed. Who is behind it.

If a record is wrong

It happens, and we would rather know. Every row links to the employer's own posting so you can check any claim on this site against its source directly, which is the point of publishing the link beside every record rather than only the summary.

See the tracker

99 tracked opportunities across Europe and the UK, free and without an account.

Open the internship tracker