What you need
- Multimeter for macOS 13 or later, $19.99 once.
- The package name, like
reactor@scope/name.
Set it up
- Check it in Terminal:Terminal
curl -s https://api.npmjs.org/downloads/point/last-week/react - Add a Web Address meter with your package in the address and the key path
downloads.Web addresshttps://api.npmjs.org/downloads/point/last-week/PACKAGE - 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):
| Setting | Value |
|---|---|
| Source | Web Address |
| Web address | https://api.npmjs.org/downloads/point/last-week/PACKAGE |
| Key path | downloads |
| Refresh every | 1 hour |
| Range | 0 to a weekly goal |
| Label | NPM |
| Face | LCD 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:
curl -s -m 8 https://api.npmjs.org/downloads/point/last-week/pkg-one,pkg-two | jq '[.[].downloads] | add'Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No number found in the response | The 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 address | No 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 404 | The 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.