← Back to data productsFor roofing lead vendors

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.

Raw lead$40-50
{ "name": "Sarah Johnson",
"address": "5701 W Loma Ln",
"phone": "+1-602-555-0192" }
POST /v1/enrich · 6 sec
+$15-25 margin
Enriched roofing lead$60-75
…name + address + phone +
"roof.area_sqft": 4003,
"roof.predominant_pitch": "4/12",
"property.roof_age_yrs": 18,
"storm.hail_2024": "1.75in",
…and 40+ more fields
$15-25
+margin per lead
6 sec
to enrich
$3.95
per call (→ $1.95 at scale)
24 mo
free storm-watch

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.

Capability
Roof sqft + pitch
Raw leadRoofer orders an EagleView ($35, 4 hrs)
RoofTap-enrichedAlready attached. Quote on first call.
Roof age
Raw leadUnknown until site visit
RoofTap-enrichedestimated_roof_age_years on every lead
Owner-occupied check
Raw leadDiscovered on the call, often wasted dispatch
RoofTap-enrichedowner_match + owner_occupied at intake
Storm claim signal
Raw leadRoofer guesses or buys a separate weather feed
RoofTap-enrichedclaim_eligible_window with days remaining
Per-lead resale price
Raw lead$40-50, commodity rate
RoofTap-enriched$60-75, premium enriched rate
Buyer close rate
Raw leadLower, leads die at measurement step
RoofTap-enrichedHigher, first-call quotes convert 2-3x
Storm renotification
Raw leadNone. Lead goes cold after sale.
RoofTap-enrichedAuto-pinged 24 mo when hail/wind hits, re-sell warm

Fields you'll use most

From the full API response, these are the fields this industry leans on.

FieldWhat you do with it
roof.area_sqftRoofers price by the square. The headline number that lets them quote without ordering an EagleView report.
roof.predominant_pitch4/12, 6/12, 8/12, drives material count and waste factor. Steep-pitch jobs price 30-50% higher.
roof.num_facetsComplexity indicator. More facets = more labor hours. Buyers price-segment on this.
roof.linear_measurements.drip_edge_ftEave + rake perimeter. Roofers use this for trim material counts.
property.estimated_roof_age_years20+ years old = high-intent buyer. Sortable for tier routing.
property.owner_occupiedOwner-occupied leads convert 2-3x better than rentals. Roofers pay more for them.
property.owner_matchCross-check the lead's name against the deed record. Filters out wholesalers and recyclers.
storm.hail_2024Largest hail diameter at this property in the last year. ≥1" = damage-likely; ≥1.25" = insurance auto-claim territory.
storm.claim_eligible_window.days_remainingThe 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_qualityLOW 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.

You sell a raw roofing lead at
$40-50
address + name + phone
We add roof + property + storm data
+$3.95
your enrichment cost (drops to $1.95 at volume)
You resell as an enriched lead at
$60-75
roofers skip the measurement step, close faster, pay more

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.

01

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.

02

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.

03

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.

04

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.

05

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.

$3.95
0 – 5,000 / mo
$3.25
5,001 – 15,000 / mo
$2.45
15,001 – 30,000 / mo
$1.95
30,000+ / mo

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.

Goes straight to ben@rooftap.app. We'll never share your contact info.