Developer Reference
Domain Similarity
Explore Domain Similarity API documentation, request parameters, response fields, code examples, and error handling for DomScan integrations.
Domain Similarity
Compare two domains for visual and textual similarity using multiple algorithms including Levenshtein distance, Jaro-Winkler similarity, and visual homoglyph analysis. Essential for detecting typosquatting, brand impersonation, and phishing domains.
GET
/v1/similarity
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| domain1 required | string | First domain (typically the legitimate domain) |
| domain2 required | string | Second domain (potentially suspicious domain) |
Similarity Algorithms
| Algorithm | Description |
|---|---|
levenshtein | Edit distance normalized (0-1) |
jaro_winkler | Prefix-weighted string similarity |
visual | Homoglyph/lookalike character detection |
Example Request
curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/similarity?domain1=paypal.com&domain2=paypa1.com"
import requests
domscan = requests.Session()
domscan.headers.update({"X-API-Key": "your-api-key"})
# Check multiple suspicious domains
legit = "paypal.com"
suspects = ["paypa1.com", "paypaI.com", "pаypal.com"] # Note: last one has Cyrillic 'а'
for suspect in suspects:
response = domscan.get(
"https://domscan.net/v1/similarity",
params={"domain1": legit, "domain2": suspect}
)
data = response.json()
print(f"{suspect}: {data['typosquatting_risk']} risk (visual: {data['similarity']['visual']:.2f})")
Example Response
{
"domain1": "paypal.com",
"domain2": "paypa1.com",
"similarity": {
"levenshtein": 0.86,
"jaro_winkler": 0.93,
"visual": 0.95
},
"is_similar": true,
"typosquatting_risk": "high",
"homoglyphs_detected": ["l → 1"],
"risk_factors": ["character_substitution", "high_visual_similarity"]
}
Response Fields
| Field | Type |
|---|---|
domain1 |
string |
domain2 |
string |
similarity_score |
number |
visual_similarity |
number |
textual_similarity |
number |
is_confusable |
boolean |
risk_level |
string |