domainanddomainLiveendpoints broken by schema drift — addedFollowers,Employees, andProductCountfields- API errors returned as HTTP 200 (e.g. invalid API key) now throw clear messages instead of confusing Zod validation errors
- CLI flag typos (e.g.
--onlyLiveTechnologes) silently ignored — now rejected with an error --versionflag anywhere in argv hijacked the command (e.g.builtwith domain x.com --versionprinted version instead of running the command)- Single-dash args like
-xaccepted as the primary value — now correctly rejected as missing argument --tableoutput blank for arrays of empty objects- Per-command
--helpmissing--api-keyand--tableglobal flags
- Monorepo split — MCP server is now a separate npm package (
builtwith-mcp), installable standalone vianpx -y builtwith-mcp - CLI
--tableflag — human-readable pretty-print output instead of raw JSON - Strict response schemas — all response schemas use
z.strictObject()to catch upstream API drift - Date range validation —
firstDetectedRangeandlastDetectedRangeparams validated with regex - Homebrew distribution —
brew install zcaceres/tap/builtwith - Pre-commit hook — lint, build, and test run automatically on every commit
- VitePress docs site — deployed to builtwith.zach.dev with TypeDoc API reference
- Rate limit documentation — per-second throttle and credit-based quota guidance
- Biome linter for consistent code formatting
- Comprehensive test coverage for non-JSON response formats (XML, CSV, TSV, TXT)
- Network error and HTTP status code tests
builtwith-apinow depends only onzod(removed@modelcontextprotocol/sdkfrom runtime deps)- Library users no longer pull MCP SDK as a transitive dependency
- CLI (
builtwith) — all 13 API methods accessible from the command line - MCP server (
builtwith-mcp) — all 13 methods exposed as tools for LLM clients - Shared command registry (
src/commands.ts) used by both CLI and MCP --api-keyflag for CLI and MCP (alternative toBUILTWITH_API_KEYenv var)--versionflag for CLI- Human-readable error messages (Zod validation errors are now formatted cleanly)
- Cross-compiled standalone binaries via GitHub Actions release workflow
- Tests for CLI, MCP server, command registry, and error formatting
- ESM-only — dropped CommonJS/
require()support - Named export — use
import { createClient } from 'builtwith-api'instead of default export - Zod validation — invalid inputs throw
ZodError; invalid API responses throwZodErrorinstead of silently returning unvalidated data - Typed responses — all 13 endpoints return fully typed response objects (when using JSON format), matching the BuiltWith API documentation
- Node.js >= 18 — uses native
fetch, no morenode-fetchdependency
- Zod 4 schemas for all request parameters and response shapes
- Full type safety on response data (e.g.
DomainResponse.Results[0].Meta.CompanyNameisstring) - Schema validation tests for all 13 response types
productendpoint supportredirectsendpoint supportrecommendationsendpoint supporttagsendpoint supportdomainLiveendpoint support
lodashdependencynode-fetchdependencydotenvdependency- CommonJS build output
- JavaScript API wrapper with support for domain, lists, relationships, keywords, trends, companyToUrl, trust, and free endpoints
- CommonJS module format
- Multi-domain lookup support (up to 16 domains)
- Multiple response format support (JSON, XML, CSV, TSV, TXT)