PermitLookup
NOAA × 35M mortgages × 297M distress signals

Storm Strike Dispatch.

Within 48 hours of a hail event, get ranked rooftop addresses ready for outreach. 15K TX hail events. 35M mortgage records. 297M code-violation distress signals. One API call.

15K
TX hail events since 2014
35M
mortgage records
771K
all NOAA storm events
2
endpoints live

Live recent strikes

Find storm-strike leads in your state.

Hits the same production endpoint your code would — no key required for this demo widget. Pick a state, dial in your recency window, and we'll surface the top-scoring rooftops.

14d
50
Pick a state, dial in your window, and we'll surface the highest-scoring rooftops from recent hail strikes.

Three ways roofers run it

Built for the 48-hour window that matters.

Pre-storm targeting

Pull older homes with active mortgages inside the forecast cone. Door-knock the path before the storm even hits.

48-hour rapid response

Within two days of NOAA logging the event, get every parcel inside the hail footprint scored and ready for outbound.

Insurance claim correlation

Cross-reference hail magnitude with mortgage status and home age to predict which addresses will actually file a claim.

How we rank

Composite score, 0–100.

Every rooftop in the storm footprint gets scored on four signals. The result is one number you can rank against and dispatch on.

  • Storm severity0–30

    Normalised from NOAA hail size in inches. 2.75″ baseballs cap the score.

  • Home age0–25

    Older homes score higher — more likely to qualify for a full replacement.

  • Mortgage active0–20

    Active mortgage means insurance + escrow are already in place. Big claim signal.

  • Recent roof permit penalty0–−20

    Suppress rooftops already replaced. We pull permits weekly and zero out the recently-roofed.

components example
"components": {
  "storm_severity":            22.5,  // 1.75" hail
  "home_age_score":            18.0,  // built 1998
  "mortgage_score":            20.0,  // active
  "roof_permit_recency_penalty": 0.0, // never replaced
  "distance_miles":             3.4
}
// composite_score = 87.4 / 100

Pricing

Pay per lead, claim a territory, or wire the API.

Pay per lead

$50/lead

Prepaid, no monthly commitment

  • 10-pack — $500
  • 100-pack — $4,500 (10% off)
  • Every lead is composite-scored 0-100
  • Address, lat/lon, storm event, magnitude, distance
  • Replace any zero-contact lead within 30 days

Territory

Most popular
$500/mo

Exclusive within geo

  • Single TX county exclusive — $500/mo
  • TX metro region (HOU / DFW / SAT / AUS) — $1,000/mo
  • Unlimited leads in your footprint
  • First 48-hour notification on new strikes
  • Cancel anytime, no setup fee

Enterprise

$2,500/mo

Multi-state API

  • Multi-state coverage (TX + FL + GA + NC + SC)
  • Direct API access with your own X-API-Key
  • Custom score weights per business model
  • Webhook delivery on new qualifying strikes
  • Dedicated Slack channel

Endpoints

Two GETs. JSON in, JSON out.

Both endpoints are live on Railway behind an X-API-Key header. Sample curls and response shapes below.

GET/v1/roofer-leads/recentRecent strikes by state

Rolling cross-event hail leads for a state. Ranks every parcel inside any storm footprint logged in the last N days by composite score.

Request
curl "https://permit-api-production-6eae.up.railway.app/v1/roofer-leads/recent?\
state=TX&days_back=14&min_score=50&limit=100" \
  -H "X-API-Key: pl_live_..."
Response
{
  "state": "TX",
  "days_back": 14,
  "min_score": 50,
  "event_count": 7,
  "count": 142,
  "leads": [
    {
      "address": "1812 Bluebonnet Trl",
      "city": "Round Rock",
      "state": "TX",
      "zip": "78664",
      "county": "Williamson",
      "lat": 30.5083,
      "lon": -97.6789,
      "year_built": 1998,
      "has_active_mortgage": true,
      "recent_roof_permit_date": null,
      "storm_event_id": 1098221,
      "storm_date": "2026-05-11T18:23:00Z",
      "days_after_storm": 4,
      "storm_magnitude": 1.75,
      "composite_score": 87.4,
      "components": {
        "storm_severity": 22.5,
        "home_age_score": 18.0,
        "mortgage_score": 20.0,
        "roof_permit_recency_penalty": 0.0,
        "distance_miles": 3.4
      }
    }
  ]
}
GET/v1/roofer-leads/by-hail-eventLeads by hail event

Ranked rooftop leads inside a single storm event's footprint. Pin a NOAA event_id, expand the radius, and pull every scored parcel.

Request
curl "https://permit-api-production-6eae.up.railway.app/v1/roofer-leads/by-hail-event?\
event_id=1098221&days_after=120&radius_miles=20&min_score=50" \
  -H "X-API-Key: pl_live_..."
Response
{
  "event": {
    "event_id": 1098221,
    "state": "TX",
    "begin_date": "2026-05-11T18:23:00Z",
    "magnitude": 1.75,
    "centroid_lat": 30.51,
    "centroid_lon": -97.68
  },
  "days_after": 120,
  "radius_miles": 20,
  "min_magnitude": 1.0,
  "count": 412,
  "leads": [ ... RooferLeadItem ... ]
}
Part of the ecbtx.com data portfolio. See the full lineup at portfolio.ecbtx.com.