
Research
/Security News
737 Chrome VPN Extensions Linked to Brand Impersonation and Browser Traffic Redirection
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
_ _ _ _ ____ _ _ _ _ ____ _
| | | | \ | | _ \| | | | | | | _ \| |
| | | | \| | |_) | |_| | | | | |_) | |
| |_| | |\ | __/| _ | |_| | _ <| |___
\___/|_| \_|_| |_| |_|\___/|_| \_\_____|
URL intelligence from the terminal. One URL in, structured signals out.
Unphurl analyses any URL across 7 dimensions and 25 configurable signals. It tells you the age of the domain, whether it impersonates a known brand, if SSL is valid, if the domain is parked, how the redirect chain behaves, and whether it can receive email. You get a risk score from 0 to 100 built from raw signals, not opinions.
AI agents have hands to grab URLs. Unphurl gives them eyes.
Most URL security tools are built for security teams. Dashboards, threat feeds, enterprise pricing. Unphurl is built for developers, AI agents, and anyone who works in a terminal.
No dashboard. No login portal. npx unphurl and you're checking URLs.
Every check returns signals across 7 dimensions:
| Dimension | What it tells you |
|---|---|
| Redirect behaviour | Full chain (up to 10 hops), shortener detection, stopped reasons |
| Brand impersonation | Levenshtein + homoglyph analysis against 150+ brands |
| Domain intelligence | Age, registrar, expiration, status codes, nameservers (via RDAP) |
| SSL/TLS | Real handshake validation from Cloudflare's edge |
| Parked detection | 4-layer check: registrar pages, for-sale, empty content, parking services |
| URL structure | Length, path depth, subdomain count, entropy, IP detection, encoded chars |
| DNS enrichment | MX record existence (can the domain receive email?) |
Every signal is business intelligence. Domain age tells you how established a company is. No MX record means they can't receive email. Expiring domains mean a business might be shutting down. Parked detection tells you if a business is real. Redirect chains reveal middlemen and tracking.
Every new account gets 20 free pipeline check credits. Most lookups are free. Known domains (Tranco Top 100K) and previously analysed domains return cached results at no cost. You only pay when an unknown domain runs through the full pipeline for the first time.
| Package | Credits | Price | Per check |
|---|---|---|---|
| Starter | 100 | $9 | $0.090 |
| Standard | 500 | $39 | $0.078 |
| Pro | 2,000 | $99 | $0.050 |
| Scale | 10,000 | $399 | $0.040 |
One-time purchases, no subscriptions. In typical use, 95-99% of URLs resolve free.
npx unphurl https://example.com
Or install globally:
npm install -g unphurl
# Sign up (get your API key)
unphurl signup --email you@example.com --name "Your Name"
# Set your key
export UNPHURL_API_KEY=uph_your_key_here
# Check a URL
unphurl https://suspicious-domain.xyz
# Check 500 URLs from a file
unphurl --batch urls.txt
# Output JSON for piping
unphurl https://example.com --json | jq '.score'
# Single URL
unphurl https://suspicious-domain.xyz
# Batch check from file (one URL per line, # comments ignored)
unphurl --batch urls.txt
# Use a custom scoring profile
unphurl https://example.com --profile cold-email
# Raw JSON output
unphurl https://example.com --json
# Clean URLs (score under 25)
unphurl --batch urls.txt --json | jq -r '.results[] | select(.result.score < 25) | .url' > clean.txt
# Flagged URLs (score 50+)
unphurl --batch urls.txt --json | jq -r '.results[] | select(.result.score >= 50) | .url' > flagged.txt
# Export as CSV
unphurl --batch urls.txt --json | jq -r '.results[] | [.url, .result.score, .result.domain, .result.signals.phishing.is_phishing] | @csv' > results.csv
# Create an account
unphurl signup --email you@example.com --name "Your Name"
unphurl signup --email you@example.com --name "Your Name" --company "Acme Inc"
# View account info
unphurl account
# Rotate your API key (new key shown once, old key revoked immediately)
unphurl account rotate-key
# Delete your account permanently
unphurl account delete --confirm
# Check your credit balance
unphurl --balance
# View available packages
unphurl pricing
# Buy pipeline checks (opens Stripe checkout)
unphurl purchase pkg_100
Profiles let you weight signals differently for different jobs. A security bot cares about brand impersonation. A cold email tool cares about parked domains and missing MX records. Create profiles for each use case.
# View all 24 default scoring weights
unphurl profiles defaults
# Create a custom profile (only include weights you want to change)
unphurl profiles create cold-email --weights '{"parked":30,"no_mx_record":20,"ssl_invalid":15}'
# List your profiles
unphurl profiles
# Show a profile with merged defaults
unphurl profiles show cold-email
# Delete a profile
unphurl profiles delete cold-email
# View check history
unphurl history
unphurl history --page 2 --limit 50
# View usage statistics
unphurl stats
unphurl stats --json
Set your API key as an environment variable:
export UNPHURL_API_KEY=uph_your_key_here
Or pass it directly:
unphurl https://example.com --key uph_your_key_here
By default, output is coloured for readability. To disable:
unphurl https://example.com --no-color
NO_COLOR=1 unphurl https://example.com
Use --json on any command for machine-readable JSON output.
Unphurl costs you $0.04-$0.09 per check. A website link audit takes 15 minutes and uses 50-100 credits. Charge $150-$500 per audit. The math works.
Service ideas: link health audits, lead list verification, SEO backlink audits, newsletter link monitoring, vendor vetting reports, brand protection monitoring.
npx -y @unphurl/mcp-server (Claude Code, Cowork, ChatGPT, Cursor, Windsurf)MIT
FAQs
Domain intelligence CLI — check URLs from the terminal
We found that unphurl demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.