Stop selling naked leads. Roofers pay $25 more for an enriched one.
You sell roofing leads. We enrich every one with roof sqft, pitch, age, and storm history in 6 seconds. Roofers skip the EagleView step, quote on the first call, and pay more for the lead. Plug in once. Every lead in your pipeline gets richer.
How it fits in
Day-to-day workflows our data slots into.
Inbound enrichment at intake
Lead lands in your CRM, you POST to our API, we return roof measurements + property + storm data on demand. Append to the lead payload before passing it to your roofer network. No batch jobs, no end-of-day reconciliation.
Tier routing by roof age
Roof 15+ years old, owner-occupied? Premium-tier roofer wants that. Roof under 8 years old? Standard tier, lower price. Auto-route based on estimated_roof_age_years and willingness to pay matches the lead profile.
Storm-watch on enriched addresses
Every enriched lead is auto-watched for storm events for 24 months. When NOAA flags a qualifying hail or wind event over the address (≥1" hail or ≥60 mph wind, insurance auto-claim thresholds), we ping your webhook so you can re-notify the buyer. Recurring value on leads you already sold.
Quality scoring + filtering
Use owner_match, imagery_quality, and footprint cross-check signals to score the lead before sale. Filter out storm-chasers, wholesalers, and recyclers automatically. Keep the leads worth selling.
Insurance restoration buyer routing
Recent storm exposure + claim-eligible window still open? That's a restoration buyer. They pay 2-3x roofing-buyer rates. Route via storm.claim_eligible_window and storm.last_event_date.
Lead-form append
Wire our API into the form-submit handler on your landing pages. Visitor types address, our data attaches before the lead even hits your CRM. Buyers see enriched leads from the second they're created.
Raw lead vs. RoofTap-enriched lead
Side-by-side of what your roofer customer sees, and what they're willing to pay for.
Fields you'll use most
From the full API response, these are the fields this industry leans on.
| Field | What you do with it |
|---|---|
| roof.area_sqft | Roofers price by the square. The headline number that lets them quote without ordering an EagleView report. |
| roof.predominant_pitch | 4/12, 6/12, 8/12, drives material count and waste factor. Steep-pitch jobs price 30-50% higher. |
| roof.num_facets | Complexity indicator. More facets = more labor hours. Buyers price-segment on this. |
| roof.linear_measurements.drip_edge_ft | Eave + rake perimeter. Roofers use this for trim material counts. |
| property.estimated_roof_age_years | 20+ years old = high-intent buyer. Sortable for tier routing. |
| property.owner_occupied | Owner-occupied leads convert 2-3x better than rentals. Roofers pay more for them. |
| property.owner_match | Cross-check the lead's name against the deed record. Filters out wholesalers and recyclers. |
| storm.hail_2024 | Largest hail diameter at this property in the last year. ≥1" = damage-likely; ≥1.25" = insurance auto-claim territory. |
| storm.claim_eligible_window.days_remaining | The single highest-intent signal. Days left on the homeowner's insurance-claim window after the last qualifying storm. Drives premium restoration pricing. |
| data_quality.imagery_quality | LOW imagery = canopy or out-of-date imagery. Route to manual review or discount the lead. Bad reads return billable: false. |
One enriched roofing lead = $15-25 of incremental margin.
At entry pricing, your margin per enriched roofing lead lifts $11-21. At volume tier ($1.95/call past 30k/mo), $13-23. The math compounds: when buyers see your leads close higher (because roofers can quote on first contact), they pay you more next month too.
Sample response - roofing lead
Trimmed to the fields this industry uses most. Full payload includes more.
POST https://api.rooftap.app/v1/enrich
{ "address": "5701 W Loma Lane, Glendale, AZ 85302",
"lead_id": "lead-9821",
"owner_match_name": "Sarah Johnson" }
200 OK
{
"ok": true,
"lead_id": "lead-9821",
"roof": {
"area_sqft": 4003,
"predominant_pitch": "4/12",
"num_facets": 9,
"linear_measurements": { "drip_edge_ft": 457 }
},
"property": {
"year_built": 1972,
"estimated_roof_age_years": 18,
"owner_match": true,
"owner_occupied": true
},
"storm": {
"hail_2024": "1.75in",
"claim_eligible_window": { "days_remaining": 340 }
},
"data_quality": { "imagery_quality": "HIGH" }
}From signup to live
Typical timeline from first call to your first enriched record.
Discovery call
30 minutes. We learn your pipeline (where leads come from, where they go, what your roofer network expects), confirm the use case is a fit, answer technical questions.
API key + sandbox access
Same-day after the discovery call. Live credentials, a free batch of test calls, developer documentation. Your team validates the response shape before integration.
Pilot batch
Send us 100-500 of your real recent leads. We enrich them on us. You give the enriched leads to your roofers and measure: do they pay more? Most pilots show $15-25 uplift per lead in week one.
Integration
Drop our Zapier action into your existing flow, or wire the direct API into your CRM webhook. Most aggregators live in 1-5 days. We're on Slack during integration.
Full rollout + monthly billing
Once the pilot is positive, scale to all your sources. Monthly Stripe billing at the volume rate that matches your usage. Change tiers any time.
Common questions
Do my roofer buyers know the data came from RoofTap?
Not unless you tell them. The JSON returns the data fields, you decide where they appear in your buyer-facing payload. Most aggregators present them as their own enriched lead data. Volume tier gets explicit white-label.
What if a lead's address can't be enriched?
Structured error code (ADDRESS_NOT_FOUND, NO_BUILDING_DETECTED, LOW_CONFIDENCE) so your code can handle it. You don't pay for failed lookups. Coverage is ~95% on US single-family homes.
How fast is the API?
Cold call lands in 4-7 seconds (Solar API + property + storm fetches in parallel). Cached addresses return sub-second. If you need to keep latency off the hot path, call /v1/enrich/prewarm at intake.
Can I bulk-enrich a CSV of old leads?
Yes. Bulk CSV upload at Enterprise tier. Upload addresses, get a CSV with enrichment columns appended. Same per-call pricing, no batch surcharge.
Can I really resell this data to roofers?
Yes. Our terms explicitly permit redistribution. No attribution required. Owner-data fields can be opted-out per request if your downstream buyers have PII restrictions.
What about the storm-watch, is that separate billing?
No. Storm-watch is included free with every enriched address for 24 months. We webhook your endpoint when a qualifying storm event (≥1" hail, ≥60 mph wind, EF1+ tornado, hurricane warning zone) covers a watched property. You can tune thresholds at the Enterprise tier.
Also sell solar leads?
Yes, same API returns solar suitability + kW potential alongside roof data. See the solar lead vendor page for the vertical-specific pitch.
One rate. Volume discounts apply automatically.
Once monthly volume crosses a threshold, the lower rate applies to every call that period. No retro-active surprises on the next invoice.
Bad reads return billable: false and never bill. Enterprise (30k+/mo) gets negotiated rates and dedicated support, talk to us.
Built to disappear into your workflow
We handle the data complexity, you keep your roofer relationships and pricing. No buyer marketplace, no rev-share, no exclusivity. Just an API call, billed monthly, scaling with your volume.
Tell us what you're building
We'll review your use case, answer questions, and get you set up if it's a fit.
Also sell solar leads?
See the solar lead vendor page →