Why the closure of the job seeker API didn't kill the project but made it grow up
Originally this was an API-first project in the literal sense.
It didn’t just “search for something through an API”. Through HH’s official job seeker channel I had built almost the whole working cycle: OAuth authorisation, access token, search configs, fetching vacancies, reading details, generating cover letters, sending applications, logging results, updating statuses and working with history through /negotiations.
And even then these searches weren’t chaotic. The project had separate configs for different directions, each with its own filters for region, salary and attached resume. So the system could already search not just for vacancies but by different professional scenarios.
This was no longer a prototype but a proper application system built on the official channel.
Then HH closed that channel.
They said it directly: “We are ending support for the job seeker API”, “From 15 December access to the hh job seeker API will be closed”, “Unfortunately, there are no alternative formats for working with the job seeker API”.
The explanation was direct too: security, transparency, a flow of irrelevant auto-applications, fraudulent practices and data access risks.
And here one thing mattered most to me: the API for employers and their integrations stayed, while the job seeker API simply disappeared.
So one side of the market keeps working through automation, integrations and machine circuits. The other was left with no official programmatic channel at all.
At that moment the project took an architectural blow.
Before that the model was:
API search API details API apply API statuses
After that I had to assemble another:
browser search browser details browser apply Telegram-first handoff state, retry, safety
This is where it became clear whether the project had any margin of strength. Whether it could survive the disappearance of the official path without losing its own logic.
It was the moment when a project either dies with the closed API or grows up.
I chose the second.