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

@withresumeai/ats-data

v2.0.0

Published

738 large employers (Fortune 500, Global 2000, late-stage private) and the ATS systems they use. Data from the State of ATS 2026 report.

Readme

State of ATS 2026 — Dataset

npm version License: MIT

A selected employer dataset of ATS attributions and published careers-portal evidence, with a CSV and a typed, dependency-free Node.js API. Published by ResumeAI alongside the State of ATS 2026 report.

This snapshot contains 738 employers, with 704 rows marked verified=true and 551 rows containing a recorded apply_host. These are different measures. The latest nonempty per-row checked_at is 2026-08-13; a package release does not re-verify the employers.

The table counts only rows marked verified=true in this selected snapshot. It is not an estimate of industry-wide market share or current employer configurations.

| ATS vendor | Records | Share of flagged subset | | --- | ---: | ---: | | Workday | 267 | 37.9% | | Greenhouse | 88 | 12.5% | | SAP SuccessFactors | 68 | 9.7% | | Oracle Cloud HCM | 49 | 7.0% | | iCIMS | 39 | 5.5% | | Internal / proprietary | 30 | 4.3% | | Avature | 26 | 3.7% | | Eightfold | 24 | 3.4% | | SmartRecruiters | 19 | 2.7% | | Taleo | 17 | 2.4% | | Ashby | 15 | 2.1% | | USAJobs | 10 | 1.4% |

Version 2.0.0 copies the canonical export for the September 2026 release. A package release or copy date is not a revalidation date: the latest nonempty checked_at in this snapshot is 2026-08-13, and individual rows may have earlier dates or no date. The verification flag and a published evidence host are different measures.

Install and use

Requires Node.js 18 or later. Pin the package version for reproducible work:

npm install --save-exact @withresumeai/[email protected]

ES modules (.mjs, or a project with "type": "module"):

import { companies, verifiedCompanies, getATSForCompany } from "@withresumeai/ats-data";

console.log(companies.length, verifiedCompanies.length);
console.log(getATSForCompany("apple")); // Snapshot attribution; null if absent.
const recordedHostRows = companies.filter((company) => company.applyHost);
console.log(recordedHostRows.length);

CommonJS (.cjs):

const { companies, getATSForCompany } = require("@withresumeai/ats-data");
console.log(companies.length, getATSForCompany("apple"));

Both module formats load the package's own bundled CSV, regardless of the caller's working directory. A caller's data/companies.csv does not override it.

companies contains all rows; verifiedCompanies filters the dataset's verified flag. getATSForCompany(nameOrSlug) performs a case-insensitive lookup and returns only { company, slug, atsSystem, industry, sourceUrl }, or null. Find a row in companies when you need its verification or evidence fields. getCompaniesByATS(name) and getCompaniesByIndustry(name) return matching rows, including unconfirmed ones.

atsDistribution() returns counts and atsShare() returns percentages within the rows marked verified. Both accept { all: true } to include unconfirmed rows. Their results describe this selected sample, not industry-wide market share. For an evidence-host subset, filter companies by applyHost before computing your own counts.

Python / pandas

After installing the npm package and pandas (pip install pandas), run this from the directory containing node_modules:

import pandas as pd

df = pd.read_csv(
    "node_modules/@withresumeai/ats-data/data/companies.csv",
    keep_default_na=False,
)
verified = df.loc[df["verified"]]
recorded_host_rows = df.loc[df["apply_host"].ne("")]
print(df.shape)
print(verified["ats_system"].value_counts().head(5))

The CSV starts with its header; no comment="#" option is needed. keep_default_na=False preserves empty CSV fields as empty strings. Download the repository CSV or canonical export separately if preferred; those URLs may change independently of an installed package version.

Runnable repository examples are in examples/quickstart.mjs and examples/python.py.

CSV and TypeScript schema

The CSV has 14 columns in the order below. Blank evidence and geography strings become undefined in the JavaScript API. An empty top_roles value becomes an empty array.

| CSV column | Company property | Meaning / JavaScript type | | --- | --- | --- | | name | name | Employer name; string. | | slug | slug | Company-guide identifier; string. | | industry | industry | Assigned industry label; string. | | ats_system | atsSystem | Recorded ATS attribution; ATSSystem. | | verified | verified | Dataset verification flag; boolean. | | apply_host | applyHost | Published careers/apply host; optional string. | | evidence_method | evidenceMethod | Published evidence method; optional string. | | checked_at | checkedAt | Per-row evidence date (YYYY-MM-DD); optional string. | | hq_country | hqCountry | Assigned headquarters country; optional string. | | hq_country_code | hqCountryCode | Assigned headquarters country code; optional string. | | hq_region | hqRegion | Assigned headquarters region; optional string. | | hiring_volume_tier | hiringVolumeTier | Editorial tier: mega, high, or mid; optional HiringVolumeTier. | | top_roles | topRoles | Pipe-separated role slugs in CSV; optional string[] in JavaScript. | | source_url | sourceUrl | ResumeAI company-guide URL; string. |

source_url points to https://withresumeai.com/ats-checker/{slug}, not an independent employer evidence page. Hiring tiers and role labels are descriptive metadata, not measured current vacancy counts or live job listings. Types Company, ATSInfo, ATSSystem, and HiringVolumeTier are exported.

Upgrading from 1.3.0

Version 2 is a breaking CSV schema update: the published npm 1.3.0 snapshot had 743 rows and 8 columns; this release has 738 rows and 14 columns. The six evidence/headquarters columns were added, verified moved to fifth, and source_url is now last. The prose preamble was removed. Update positional readers, skipped-line settings, row-count assertions, and schema checks; prefer named columns.

The JavaScript helpers retain their signatures and the narrow getATSForCompany result. Full Company rows now expose the six optional evidence/headquarters properties above. Dataset contents and lookup availability have changed between snapshots.

Five former duplicate record slugs are absent: anthem, ge, k12, smurfit-kappa, and square. In the recorded deduplication, their retained counterparts are elevance-health, ge-aerospace, stride, westrock, and block, respectively. These are historical record aliases, not automatic lookup redirects or claims about current corporate relationships.

Keep the old package snapshot when a migration is not yet possible:

npm install --save-exact @withresumeai/[email protected]

Provenance and limits

Initial ATS attributions were compiled with AI from public information and were not individually checked. Subsequent evidence combines automated portal/vendor probes with manually recorded portal URLs. Read the report methodology and the per-row fields before interpreting a count.

  • verified=true alone may rest on the original June 2026 audit. Filter for a nonempty apply_host when you require recorded host evidence, then examine its method and date. Neither the flag nor that filter establishes current use.
  • Blank host, method, or date fields mean the corresponding evidence detail is not published here. Rows marked verified=false remain unconfirmed attributions. Missing evidence does not establish that an employer has no ATS.
  • A careers host does not reveal private screening rules, resume parser behavior, or every configuration across jobs, regions, and subsidiaries.
  • The employer list is a selected sample, not a representative survey. Attributions can change after their recorded checks; this release makes no guarantee of a recurring refresh schedule.

Contributing, citation, and license

See CONTRIBUTING.md for evidence and schema requirements. Citation is appreciated: Kayvan Zahiri / ResumeAI (2026), State of ATS 2026. Include the package version or repository revision used. Machine-readable metadata is in CITATION.cff.

MIT; see LICENSE. Retain its copyright and permission notices when distributing copies or substantial portions. A scholarly or journalistic citation is optional; NOTICE.md explains that distinction.