Score US property catastrophe risk.
REST API · MCP server · embeddable widget. Free tier with no credit card.
Generate your free key →Already a customer? Sign in to manage keys.
Generate your free API key
No credit card. 50 lookups/day on the free plan. Use as Authorization: Bearer YOUR_API_KEY.
Quick Start
Endpoint
GET https://app.perilscore.com/api/v1/score/?address=...
curl
curl "https://app.perilscore.com/api/v1/score/?address=123+Main+St,+Miami+FL+33101" \
-H "Authorization: Bearer YOUR_API_KEY"
Python
import requests
response = requests.get(
"https://app.perilscore.com/api/v1/score/",
params={"address": "123 Main St, Miami FL 33101"},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = response.json()
print(data["overall_score"], data["overall_risk_label"])
JavaScript
const res = await fetch(
"https://app.perilscore.com/api/v1/score/?address=123+Main+St,+Miami+FL+33101",
{ headers: { Authorization: "Bearer YOUR_API_KEY" } }
);
const data = await res.json();
console.log(data.overall_score, data.overall_risk_label);
Response Schema
{
"formatted_address": "123 Main Street, Miami, FL 33139",
"overall_score": null,
"overall_risk_label": null,
"overall_score_locked": true,
"perils": [
{
"peril": "hurricane",
"peril_name": "Hurricane",
"numeric_score": 8.5,
"risk_label": "Very High",
"factors": { "dist_coast_km": 2.1, "storm_count": 14, "max_category": 5 }
}
],
"fire_station": {
"name": "Miami Fire Station #1",
"distance_miles": 0.8
},
"fire_protection_score": 2,
"public_id": "P-A1B2C3D4E5F6",
"report_url": "https://app.perilscore.com/r/P-A1B2C3D4E5F6/?utm_source=api",
"tier": "free"
}
Includes all 6 perils: hurricane, wildfire, hail, flood, earthquake, tornado. fire_protection_score is a proprietary 1-10 score based on driving distance, drive time, and fire station characteristics; lower is better.
Already have a client who uses PerilScore? They can share their embed key from their Developer Dashboard – their plan applies, no extra cost to you.