Getting Started

Follow along step by step. Everything you need to go from zero to checking URLs.

1

Sign up

Create your account from the terminal. You'll get an API key and 3 free pipeline check credits.

Terminal
$ unphurl signup --email you@example.com --name "Sarah" --company "Acme Corp"
unphurl — account created
API Key: uph_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Email: you@example.com
Name: Sarah
Credits: 3
Store this key securely. It won't be shown again.
Check your email and click the verification link.
Your API key will not work until your email is verified.
The link expires in 24 hours. If it expires, run: unphurl verify --resend --email you@example.com
Next steps:
export UNPHURL_API_KEY=uph_a1b2c3d4...
unphurl --balance # Confirm your 3 free credits
unphurl https://example.com # Check a URL
unphurl pricing # View credit packages
unphurl purchase pkg_100 # Buy 100 credits ($9)

Check your email and click the verification link. Your key won't work until verified.

2

Set your API key

Set your key as an environment variable so you don't have to pass it with every command.

Terminal
$ export UNPHURL_API_KEY=uph_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
3

Check your balance

Confirm your 3 free pipeline check credits are ready.

Terminal
$ unphurl --balance
unphurl — account balance
Credits remaining: 3
Total purchased: 0
Total used: 0
Free lookups: 0
(includes 3 free signup credits)
4

Check a known domain (free)

Known domains (Google, GitHub, Amazon, etc.) return instantly at no cost.

Terminal
$ unphurl https://google.com
unphurl — domain intelligence
URL: https://google.com
Final: https://www.google.com/
Domain: google.com
Score: 0 ░░░░░░░░░░░░░░░░░░░░ KNOWN DOMAIN (Tranco Top 100K)
No signals — this is a known, trusted domain.
Meta
├─ Latency 729ms
├─ Cached no
├─ Charged no (free lookup)
└─ Profile default

Score 0, no credit used. Known domains are always free.

5

Check an unknown domain (uses 1 credit)

Unknown domains run through the full 7-dimension pipeline. This costs 1 pipeline check credit.

Terminal
$ unphurl https://super-sketchy-domain-2026.xyz
unphurl — domain intelligence
URL: https://super-sketchy-domain-2026.xyz
Domain: super-sketchy-domain-2026.xyz
Score: 33 ■■■■■■■░░░░░░░░░░░░░ MODERATE
Signals
├─ SSL invalid invalid SSL certificate +10
├─ Suspicious TLD .xyz TLD +3
├─ Domain entropy high domain entropy (4.21) +5
├─ No MX record no MX record (domain cannot receive email) +5
└─ Compound amplifier multiple weak signals present simultaneously +10
Domain
├─ MX record no
├─ Parked no
└─ Content type text/plain
URL Analysis
└─ Domain entropy 4.21 (high)
Meta
├─ Latency 1333ms
├─ Cached no
├─ Charged yes (1 pipeline check)
└─ Profile default

Score 33 (moderate). 5 signals fired. 1 credit charged. The score_breakdown shows exactly why.

6

Check your stats

See how your usage breaks down across the three gates.

Terminal
$ unphurl stats
unphurl — usage statistics
Usage
Total URLs submitted 3
Tranco lookups (free) 1
Cache lookups (free) 1
Pipeline checks (paid) 1
Free rate 66.7%
Scoring
URLs flagged (score 50+) 0
High risk (score 75+) 0
Account
Credits remaining 2
Total purchased 0
Last active 2026-04-09

66.7% of your checks were free. Only 1 out of 3 needed the pipeline.

7

Create a scoring profile

Different use cases need different scoring. Create a named profile with custom weights.

Terminal
$ unphurl profiles create cold-email \
--weights '{"parked":30,"no_mx_record":20,"ssl_invalid":15}'
Profile "cold-email" created with 3 custom weights.
Use it: unphurl https://example.com --profile cold-email
8

Check with your profile

The same URL scores differently with your custom weights.

Terminal
$ unphurl https://super-sketchy-domain-2026.xyz --profile cold-email
unphurl — domain intelligence
URL: https://super-sketchy-domain-2026.xyz
Domain: super-sketchy-domain-2026.xyz
Score: 53 ■■■■■■■■■■■░░░░░░░░░ ELEVATED
Signals
├─ SSL invalid invalid SSL certificate +15
├─ Suspicious TLD .xyz TLD +3
├─ Domain entropy high domain entropy (4.21) +5
├─ No MX record no MX record (domain cannot receive email) +20
└─ Compound amplifier multiple weak signals present simultaneously +10
Meta
├─ Latency 102ms
├─ Cached yes
├─ Charged no (free lookup)
└─ Profile cold-email

Same URL, same signals. Score went from 33 to 53 because your cold-email profile boosts parked, no_mx_record, and ssl_invalid. Cached result, free.

9

Run a batch check

Check multiple URLs at once. Create a file with one URL per line.

Terminal
$ cat urls.txt
https://google.com
https://github.com
https://linkedin.com
https://amaz0n-deals-today.xyz
https://microsoft.com
https://stackoverflow.com
https://cloudflare.com
$ unphurl --batch urls.txt
unphurl — batch results (7 URLs)
Score Distribution
├─ 0-24 (low): 6 ██████████████████████████░░░░ 86%
├─ 25-49 (moderate): 0 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0%
├─ 50-74 (elevated): 0 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0%
└─ 75-100(high): 1 ████░░░░░░░░░░░░░░░░░░░░░░░░░░ 14%
Billing
├─ Free lookups: 7 (Tranco + cache)
├─ Pipeline checks: 0 (charged)
└─ Errors: 0
High-risk URLs (score >= 75):
80 https://amaz0n-deals-today.xyz

amaz0n-deals-today.xyz scored 80 (brand impersonation of amazon.com). All 7 resolved free. Batch checks up to 500 URLs at once.

10

Filter your results

Extract clean or flagged URLs from batch results.

Terminal
$ unphurl --batch urls.txt --json | \
jq -r '.results[] | select(.result.score >= 50) | .url' > flagged.txt
$ cat flagged.txt
https://amaz0n-deals-today.xyz

Pipe JSON output through jq to filter by score. Export clean lists, flagged lists, or CSV.

11

Buy more credits

When you need more pipeline checks, purchase a package.

Terminal
$ unphurl pricing
unphurl — pipeline check pricing
Package Credits Price Per-check
├─ pkg_100 100 $9 $0.090
├─ pkg_500 500 $39 $0.078
├─ pkg_2000 2,000 $99 $0.050
└─ pkg_10000 10,000 $399 $0.040
$ unphurl purchase pkg_100
Opening Stripe checkout in your browser...

Complete the payment in your browser. Credits are added automatically.

Stripe checkout success page showing credits added to your account
12

Verify your new balance

Confirm credits were added.

Terminal
$ unphurl --balance
unphurl — account balance
Credits remaining: 102
Total purchased: 100
Total used: 1
Free lookups: 10

100 purchased + 2 remaining from signup = 102. Credits never expire.