php-headhunter-api icon indicating copy to clipboard operation
php-headhunter-api copied to clipboard

PHP library that provides a friendly API interface for HeadHunter (hh.ru) service

HeadHunter.ru API library (in process)

Code Climate Test Coverage Build Status Scrutinizer Code Quality Latest Stable Version Total Downloads

Provides a friendly API interface for HeadHunter (hh.ru) service.

Official API docs available here.

  • Installation
  • Quick Start
  • Vacancies
  • Employers
  • Employer Managers
  • Artifacts
  • User
  • Comments
  • Industries
  • Negotiations
  • Regions
  • Resumes
  • Saved searches
  • Specializations
  • Dictionaries
  • Suggests
  • Metro
  • Languages
  • Custom requests

Dependencies

Requires PHP 5.6 or above.

Installation

The recommended way to install this library is via Composer. New to Composer?

composer require seregazhuk/headhunter-api

Quick Start

// You may need to amend this path to locate composer's autoloader
require('vendor/autoload.php');
use seregazhuk\HeadHunterApi\Api;

/**
 * Token is optional. Your need token only
 * for resources that require authentication
 */
$api = Api::create('YOUR_TOKEN');
$userInfo = $api->me->info();

You can create an instance without token, and later change it.

$api = Api::create();
$api->setToken('YOUR_TOKEN');

API Resources

Vacancies

View vacancy by id (official docs):

$vacancy = $api->vacancies->view($id);

Get similar vacancies for the current one (official docs):

$similarVacancies = $api->vacancies->similar($id);

Get black listed vacancies (official docs):

$blacklisted = $api->vacancies->blacklisted();

Get list of favorited vacancies (official docs):

$vacancies = $api->vacancies->favorited();

// with pagination
$vacancies = $api->vacancies->favorited(['page' => 2]);

Search (official docs):

$vacancies = $api->vacancies->search($params);

Vacancy statistics (official docs):

$stats = $api->vacancies->statistics($vacancyId);

Employer's active vacancies (official docs):

$vacancies = $api->vacancies->active();

// you can specify a manager, by default uses current manager
$vacancies = $api->vacancies->active($managerId);
// with pagination
$vacancies = $api->vacancies->active($managerId, ['page'=>2]);

Employer's archived vacancies (official docs):

$archived = $api->vacancies->archived();
// with pagination
$archived = $api->vacancies->archived(['page'=>2]);

Employer's hidden vacancies (official docs):

$hidden = $api->vacancies->hidden();
// with pagination
$hidden = $api->vacancies->hidden(['page'=>2]);

Hide a vacancy (official docs):

$api->vacancies->hide($vacancyId);

Restore a vacancy (official docs):

$api->vacancies->restore($vacancyId);

Employers

View employee by id (official docs):

$employee = $api->employers->view($id);

Search (official docs):

$employers = $api->employers->search($params);

Employer Managers

Reference types and the rights of the manager (official docs):

$reference_type = $api->employers->getManagerTypes();
$reference_type = $api->employers->getManagerTypes($employerId);

When used without parameters your employer id will be automatically resolved from your profile

Get employer managers (official docs):

$managers = $api->employers->getManagers();
$managers = $api->employers->getManagers($employerId);
$managerWhoHasVacancies = $api->employers->getManagersWhoHasVacancies();
$managerWhoHasVacancies = $api->employers->getManagersWhoHasVacancies($employerId);

When used without parameters your employer id will be automatically resolved from your profile

Get manager information (official docs):

$managers = $api->employers->getManager($managerId);
$managers = $api->employers->getManager($managerId, $employerId);

When used without parameters your employer id will be automatically resolved from your profile

Artifacts:

Get your photos (official docs):

$photos = $api->artifacts->photos();

Get your portfolio (official docs):

$portfolio = $api->artifacts->portfolio();

Delete photo by id (official docs):

$api->artifacts->deletePhoto($photoId);

Edit photo attributes (official docs):

$api->artifacts->editPhoto($photoId, $attributes);

Upload photo (official docs):

$api->artifacts->uploadPhoto('photo.jpg', 'my picture description');

Upload portfolio (official docs):

$api->artifacts->uploadPortfolio('portfolio.jpg', 'my portfolio description');

User:

Get current user info (official docs):

$info = $api->me->info();

Update name(last, first, middle). All parameters are required (official docs):

$api->me->editName($lastName, $firstName, $middleName);

Update flag 'is_in_search' (official docs):

$isInSearch = true; // or false;
$api->me->setIsInSearch($isInSearch);

Manager preferences by managerId. You can get your manager id from user object, returned from $api->me->info(). When used without parameters your manager id will be automatically resolved from your profile (official docs).

$me = $api->me->info();
$managerId = $me['manager']['id'];
$preferences = $api->manager->preferences($managerId);

// automatically get manager id from your profile
$preferences = $api->manager->preferences($managerId);

Applicant comments

Get all comments about applicant (official docs):

$comments = $api->comments->view($applicantId);

Create a comment (official docs). You need an applicant id, to create a comment. Applicant id can be received from resume:

$resumeInfo = $api->resume->view($resumeId);
$applicantCommentsUrl = $resumeInfo['owner']['comments']['url']; // https://api.hh.ru/applicant_comments/2743747
// You need to parse id from this url

// Create a comment, that is visible for coworkers
$result = $api->comments($applicantId, 'my comment');

// Create a comment, that is visible only for you
$result = $api->createPrivate($applicantId, 'my comment');

Edit comment (official docs):

// Edit a comment, that is visible for coworkers
$api->comments->edit($applicantId, $commentId, 'new comment text')

// Edit a comment, that is visible only for you
$result = $api->editPrivate($applicantId, $commentId, 'new comment text');

Delete a comment (official docs):

$api->comments->delete($applicantId, $commentId);

Industries

Get all industries (official docs):

$industries = $api->industries->all();

Employee Negotiations

Get all negotiations (official docs):

$negotiations = $api->negotiations->all();

Get only active negotiations (official docs):

$negotiations = $api->negotiations->active();

View the list of messages.

  • For employee: get messages of negotiation (official docs):
  • For employer: view the list of messages in the response/invitation (official docs):
$api->negotiations->messages($negotiationId);
// with pagination
$api->negotiations->messages($negotiationId, ['page'=>2]);

Sending new message.

$api->negotiations->message($negotiationId, $messageText);

Git list of responses/invitation for (official docs):

$responses = $api->negotiations->invited($vacancyId);

There are several types of invitations. For each of them you can pass a pagination array as a second argument:

Response

$responses = $api->negotiations->invitedResponses($vacancyId);
// with pagination
$responses = $api->negotiations->invitedResponses($vacancyId, ['page'=>2]);

Consider

$toConsider = $api->negotiations->invitedConsider($vacancyId);

Phone interview

$phoneInterviews = $api->negotiations->invitedPhoneInterviews($vacancyId);

Assessments

$assessments = $api->negotiations->invitedAssessments($vacancyId);

Interviews

$interviews = $api->negotiations->invitedInterviews($vacancyId);

Offers

$offers = $api->negotiations->invitedOffers($vacancyId);

Hired

$hired = $api->negotiations->invitedHired($vacancyId);

Discard by employer

$discard = $api->negotiations->invitedDiscardByEmployer($vacancyId);

View the response/invitation by id. NegotiationId can be taken from key url in the invited call response. (official docs):

$response = $api->negotiations->view($negotiationId);

Regions

Get all regions (official docs):

$regions = $api->regions->all();

Resumes

Get my resumes (official docs):

$resumes = $api->resumes->mine();

View resume (official docs):

$views = $api->resumes->view($resumeId);

Edit resume (official docs):

$api->resumes->edit($resumeId, ['first_name' => 'New name']);

Create a new resume (official docs):

$attributes = ['first_name' => 'New name'];
$result = $api->resumes->create($attributes);

Views history (official docs):

$views = $api->resumes->views($resumeId);

// with pagination

$views = $api->resumes->views($resumeId, ['page'=>2]);

Negotiations history (official docs):

$negotiations = $api->resumes->negotiations($resumeId);
// with pagination
$negotiations = $api->resumes->negotiations($resumeId, ['page' => 2]);

Update resume publish date (official docs):

$api->resumes->publish($resumeId);

Get resume conditions (official docs):

$conditions = $api->resumes->conditions($resumeId);

Remove resume (official docs):

$api->resumes->delete($resumeId);

Get current status (if it is blocked or ready to publish) (official docs):

$status = $api->resumes->status($resumeId);

Get jobs recommendations for resume (official docs):

$jobs = $api->resumes->jobs($resumeId)

// with pagination
$jobs = $api->resumes->jobs($resumeId, ['page' => 2])

Resume visibility

official docs

Get resume black/white list:

$blackList = $api->resumes->getBlackList($resumeId);
// ...
$whiteList = $api->resumes->getWhiteList($resumeId);

Add a company to black/white list:

$api->resumes->addToBlackList($resumeId, $companyId);
// ...
$api->resumes->addToWhiteList($resumeId, $companyId);

Remove a company from black/white list:

$api->resumes->removeFromBlackList($resumeId, $companyId);
// ...
$api->resumes->removeFromWhiteList($resumeId, $companyId);

Clear black/white list:

$api->resumes->clearBlackList($resumeId);
// ...
$api->resumes->clearWhiteList($resumeId);

Search in black/white list:

$companies = $api->resumes->searchInBlackList($resumeId, 'some-key-word');
//...
$companies = $api->resumes->searchInWhiteList($resumeId, 'some-key-word');

Search in black/white list:

Saved searches:

List searches (official docs):

$searches = $api->savedSearches->all();

Get one search (official docs):

$searches = $api->savedSearches->view($searchId);

Specializations

Get all specializations (official docs):

$specializations = $api->specializations->all();

Dictionaries

Get list of entities that are used in API (official docs):

$dictionaries = $api->dictionaries->all();

Suggests

Educational institutions (official docs):

$suggests = $api->suggests->educational_institutions($text);

Companies (official docs):

$suggests = $api->suggests->companies($text);

Specialization (official docs):

$suggests = $api->suggests->fieldsOfStudy($text);

Key skills (official docs):

$suggests = $api->suggests->skillSet($text);

Position (official docs):

$suggests = $api->suggests->positions($text);

Region (official docs):

$suggests = $api->suggests->areas($text);

Tips for vacancy search key words (official docs):

$suggests = $api->suggests->vacancySearchKeyword($text);

Metro

Obtaining all metro stations of all cities (official docs):

$stations = $api->metro->all();

List of metro stations and lines in a specific city (official docs):

$stations = $api->metro->forCity($cityId);

Languages

Obtaining available languages (official docs):

$languages = $api->languages->all();

Faculties

Get list of faculties of the educational institutions (official docs). Uses institutionId that can be obtained from the suggestions for educational institutions.

$faculties = $api->faculties->forInstitution($institutionId);

Custom requests (official docs):

Locale

You can set a locale for your requests, the results will be returned in the selected locale. RU is set by default (official docs):

$api->setLocale('EN');

// chain methods
$api->setLocale('EN')
    ->me
    ->info();

Host

Get data from different websites of the HeadHunter group. (official docs):

$api->setHost('hh.kz');

// chain methods
$api->setHost('hh.kz')
    ->me
    ->info();