URL, file, domain, and IP scanning via VirusTotal CLI and API. Threat detection, reputation checks, malware analysis, phishing detection.
Scan URLs, files, domains, and IPs for threats using VirusTotal.
Install vt CLI:
# Download from https://github.com/VirusTotal/vt-cli/releases
# Or: pip install vt-py (Python library)
vt init --apikey $VT_API_KEY
Free tier: 4 lookups/minute, 500/day. Premium: higher limits.
vt scan url "https://example.com"
# Returns analysis ID, then:
vt url "https://example.com" --include=last_analysis_stats,reputation
vt domain "example.com" --include=last_analysis_stats,reputation,registrar,creation_date
vt scan file /path/to/file
# Or by hash:
vt file "SHA256_HASH" --include=last_analysis_stats,type_description,size
vt ip "1.2.3.4" --include=last_analysis_stats,country,as_owner
harmless: X — engines found it safe
malicious: X — engines flagged as malicious
suspicious: X — engines found it suspicious
undetected: X — engines didn't flag it
Decision matrix:
Scan multiple URLs from a file:
while IFS= read -r url; do
echo "Scanning: $url"
vt scan url "$url"
sleep 15 # respect rate limit (free tier)
done < urls.txt
import vt
import os
client = vt.Client(os.environ["VT_API_KEY"])
# Scan URL
analysis = client.scan_url("https://example.com")
# Get results
url_obj = client.get_object("/urls/{url_id}")
stats = url_obj.last_analysis_stats
print(f"Malicious: {stats['malicious']}, Clean: {stats['harmless']}")
client.close()
For auditing a website or skill: