npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-hhru-api

v0.2.30

Published

HeadHunter API wrapper for Node.js

Readme

HeadHunter API SDK for Node.js

npm version npm downloads GitHub License TypeScript

In Development

A lightweight TypeScript/JavaScript SDK for HeadHunter API.


📦 Installation

npm install node-hhru-api

or with yarn:

yarn add node-hhru-api

⚡ Quick Start

import { getUserToken, getResume, setHttpConfig } from 'node-hhru-api'

setHttpConfig({
  locale: 'RU',
  host: 'hh.ru',
  userAgent: 'MyApp/1.0 ([email protected])',
})

const userTokenResponse = await getUserToken(
  clientId,
  clientSecret,
  code // received from OAuth redirect
)

const resume = await getResume(userTokenResponse.access_token)
console.log(resume.id)

🛠 Usage

You can import methods in two ways:

  1. Direct imports (tree-shaking friendly)
  2. Grouped namespaces (Common, Applicant, Employer)

1. Direct Imports

import { getUserToken, getResume } from 'node-hhru-api'

const userTokenResponse = await getUserToken(
  clientId,
  clientSecret,
  code // received from OAuth redirect
)

const resume = await getResume(userTokenResponse.access_token)
console.log(resume.id)

2. Using Namespaces

import { Common, Employer } from 'node-hhru-api'

const userTokenResponse = await Common.getUserToken(
  clientId,
  clientSecret,
  code // received from OAuth redirect
)

const me = await Employer.getCurrentUser(userTokenResponse.access_token)
console.log(me.email)

🔑 Authentication Flows

Application Token (Client Credentials)

import { getAppToken } from 'node-hhru-api'

const appTokenResponse = await getAppToken(clientId, clientSecret)
console.log(appTokenResponse.access_token)

User Token (Authorization Code)

import { getUserToken } from 'node-hhru-api'

const userTokenResponse = await getUserToken(
  clientId,
  clientSecret,
  code, // received from OAuth redirect
  redirectUri // optional
)
console.log(userTokenResponse.access_token)
console.log(userTokenResponse.refresh_token)

Refresh User Token

import { refreshUserToken } from 'node-hhru-api'

const refreshed = await refreshUserToken(clientId, clientSecret, refreshToken)
console.log(refreshed.access_token)

⚙️ Configuration

You can customize HTTP client (headers, locale, etc.):

import { setHttpConfig } from 'node-hhru-api'

setHttpConfig({
  locale: 'RU',
  host: 'hh.ru',
  userAgent: 'MyApp/1.0 ([email protected])',
}) // Use this at the beginning of your code

⚠️ HeadHunter requires a valid HH-User-Agent. It should be in the format:

AppName/Version ([email protected])


📂 Types

All response objects are fully typed:

import {
  Resume,
  CurrentUser,
  AppTokenResponse,
  UserTokenResponse,
} from 'node-hhru-api'

🧪 Tests

The project includes tests with Vitest:

Before running, make sure to set environment variables:

export HH_CLIENT_ID=your_client_id
export HH_CLIENT_SECRET=your_client_secret
export HH_AUTH_CODE=your_auth_code
export HH_REDIRECT_URI=your_redirect_uri
npm run test

📜 License

MIT © 2025 Zoomish