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

@br-health-kit/ans

v1.0.0

Published

Registro de operadoras de planos de saude da ANS, tipado e versionado

Readme

@br-health-kit/ans

The ANS register of active health plan operators, typed and versioned.

npm install @br-health-kit/ans
import { ans } from '@br-health-kit/ans'

ans.find('419761')                    // by ANS registration number
ans.find(419761)                      // accepts a number; spreadsheets eat the zero
ans.findByCnpj('19.541.931/0001-25')  // formatted or bare
ans.isValidRegistro('419761')

ans.byUf('SP')
ans.byModalidade('Cooperativa Médica')
ans.search('unimed')
ans.modalidades()

The ANS number is not the CNPJ

The identifier used in TISS guides, billing and regulatory reporting is the ANS registration number (six digits), not the CNPJ. The two are frequently confused. This package indexes by both.

What the dataset contains

Active operators. Each record carries the legal name, trading name, legal form (modalidade), address, contact, legal representative, commercialisation region (1 to 6) and the ANS registration date.

Fields absent at the source become null, never an empty string.

Versioning

The source is updated continuously, so the version names the day ANS published, 2026.08.25, derived from the official file's Last-Modified.

ans.metadata.publishedAt  // publication date at the source
ans.load('2026.08.25')    // pinned
ans.latest()              // follows

Integrity guarantee

The pipeline refuses to publish if any CNPJ fails its check digits: that indicates a shifted column during parsing, not an invalid company. An unrecognised modalidade produces a warning rather than an error, because ANS does create new ones and that must not block a publication.

Environment

Node 20+ through the default entry, which reads its data from disk, including Next.js server components, route handlers and Remix loaders.

For a client bundle use @br-health-kit/ans/web. See docs/browser.md.

Provenance

ANS open data (PDA), redistributed without content modification. Code under MIT.