About
A job board for apprenticeships.
apprenticeshipsnearme searches apprenticeship vacancies in England. The shape of the site is a job board: a what-and-where search, categories, and a vacancy you can read before you apply. Applications are not taken here. Each live advert links to the employer or training provider.
Scotland, Wales, and Northern Ireland run their own apprenticeship services. This board only covers the vacancies published on Find an apprenticeship.
Where the vacancies come from
Live results are read from a saved copy of the Department for Education Display Advert API (version 2). The API has no keyword search and no browser access. Opening a page does not call it. A scheduled download on the server replaces the saved copy, and search runs on that copy. The key never goes to the browser.
The download runs once a day, at 06:00 UTC. In the UK that is 06:00 in winter and 07:00 in summer. It takes a full snapshot, so closed and withdrawn adverts leave the board. A failed download keeps the last successful copy and waits until the next morning. The first download, while the tables are still empty, runs on the next check even outside that hour.
The service allows 150 requests in each 5 minute window. One download asks for up to 5,000 vacancies, 100 at a time, with the full advert text. That is about 36 requests.
What the server needs
This server is connected to the saved catalogue.
APPRENTICESHIPS_API_KEYis the Display Advert key from the developer hub. Only the scheduled download uses it.SUPABASE_URLandSUPABASE_SERVICE_ROLE_KEYare where the copy is stored. The service role key bypasses row security. It stays on the server.CRON_SECRETlocks the download route. Requests withoutAuthorization: Bearerthat secret are refused. If the secret is empty, the route stays closed.
Names and a blank template are in .env.example. Do not commit the key, the service role key, or the cron secret. A 401 from the feed means the API key was rejected. A 429 means the rate limit was hit. In both cases the last saved copy stays on the board.