Show npm downloads in your Mac menu bar

Maintain a package? npm’s download counts are public, and a Web Address meter reads them directly from the registry’s own stats API.

Recipe tested October 29, 2026 with Multimeter 1.1. Source: Web Address.

Preview: the Split-Flap face and two alternatives, with sample values like the ones this recipe returns.

What you need

  • Multimeter for macOS 13 or later, $19.99 once.
  • The package name, like react or @scope/name.

Set it up

  1. Check it in Terminal:
    Terminal
    curl -s https://api.npmjs.org/downloads/point/last-week/react
  2. Add a Web Address meter with your package in the address and the key path downloads.
    Web address
    https://api.npmjs.org/downloads/point/last-week/PACKAGE
  3. Refresh every hour; npm updates these numbers once a day. Set a range or use a text face.

Multimeter settings

In Customize This Meter… (from the meter’s menu):

Settings for this meter
SettingValue
SourceWeb Address
Web addresshttps://api.npmjs.org/downloads/point/last-week/PACKAGE
Key pathdownloads
Refresh every1 hour
Range0 to a weekly goal
LabelNPM
FaceLCD Readout, Split-Flap or Sparkline

Tested: Run on October 29, 2026: react 246,493,837 last week; @anthropic-ai/sdk 10,581,790 yesterday.

More on this source, including every format it reads, in the Web Address guide.

Limits

  • npm’s counts trail by about a day, and a day’s numbers can change a little as they settle.

Variations

Daily or monthly

Replace last-week with last-day or last-month.

Scoped packages

Put the scope in as is: https://api.npmjs.org/downloads/point/last-week/@scope/name.

Several packages added up

For unscoped packages npm answers several at once. A Script meter can add them:

Command
curl -s -m 8 https://api.npmjs.org/downloads/point/last-week/pkg-one,pkg-two | jq '[.[].downloads] | add'

Troubleshooting

What the meter says, why, and what to do
SymptomCauseFix
No number found in the responseThe key path doesn’t match the reply.Run curl -s with the address and read the JSON. Dots walk into objects, numbers pick array items (items.0.count).
Couldn’t reach the addressNo network, a typo in the host, or the service is down.Open the address in your browser. Multimeter tries again at the next refresh.
The server answered 404The package name is misspelled or the package is brand new.npm has no stats for a package until its first full day.

Questions

Why does the number only change once a day?

npm publishes download counts in daily batches. Refreshing more often than hourly only repeats the same number.

Related

Put it in your menu bar

$19.99 one-time. No subscription. Needs macOS 13 Ventura or later.