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

techspy

v0.1.2

Published

Detect any website's tech stack, DNS and email security from your terminal or a coding agent. CLI for the TechSpy API.

Readme

techspy

Detect any website's tech stack — frameworks, hosting/CDN, analytics, payments, marketing tools, DNS and email security — from your terminal or a coding agent. CLI for the TechSpy API.

npx techspy scan stripe.com

Requires Node 18+ (no dependencies) and a TechSpy API key from the Plus or Max plan — create one at https://techspy.hi-daniel.com/dashboard/api.

Using an AI agent? TechSpy is also a remote MCP server with the same operations as native tools:

claude mcp add --transport http techspy https://techspy.hi-daniel.com/api/mcp \
  --header "Authorization: Bearer ts_YOUR_API_KEY"

Docs: https://techspy.hi-daniel.com/api-docs#cli · MCP: https://techspy.hi-daniel.com/api-docs#mcp

Authenticate

Create an API key at https://techspy.hi-daniel.com/dashboard/api (Plus or Max plan), then either:

export TECHSPY_API_KEY=ts_...

or save it once (stored in ~/.config/techspy/config.json, mode 600):

npx techspy login

TECHSPY_API_KEY takes precedence over the saved key. The key is never accepted as a command-line flag, so it doesn't end up in shell history.

Commands

| Command | What it does | |---|---| | techspy scan <domain> | Detect the tech stack. Add --dns, --subdomains, --sitemap, --deep, --interact, --force, --no-save | | techspy account | Plan, scans left today, Deep Scan / Interact credits | | techspy scans list [--limit N] [--offset N] | Your saved scans, newest first | | techspy scans get <scan-id> | One saved scan | | techspy analysis <scan-id> [--generate] [--force] | Five-pillar strategy analysis of a saved scan | | techspy login / techspy logout | Save / remove your API key |

Global options: --json, --base-url <url> (or TECHSPY_BASE_URL), --help, --version.

Credits

Scans share your plan's limits — there is no separate API quota:

  • Every scan uses 1 daily scan (Plus: 30/day, Max: unlimited), including when a recent result is reused.
  • --deep uses 1 Deep Scan credit. --interact uses 1 Interact credit and 1 Deep Scan credit.
  • Failed scans are refunded. techspy account shows what's left.
  • Scans are saved to your history (see them in the dashboard); pass --no-save to skip.
  • analysis --generate doesn't use credits (the first analysis of each scan is cached; 10 generations per hour per IP). --force regenerates your own scans, once per scan per 24h.

For agents and scripts

Use --json for machine-readable output on stdout; errors are printed as JSON on stderr:

npx techspy scan stripe.com --dns --json | jq '.tech_stack'

Exit codes let you branch without parsing text:

| Code | Meaning | |---|---| | 0 | OK | | 1 | Other error (network, 5xx) | | 2 | Usage error | | 3 | Missing / invalid API key (401, 403) | | 4 | Out of daily scans or credits (402) | | 5 | Rate limited (429) | | 6 | Not found (404) |

Source: https://github.com/danielovearth/techspy-cli