← Back to data productsFor solar lead vendors

Pre-qualified solar leads. Re-roof bundles flagged. Installers pay more.

You sell solar leads. We attach PV suitability, kW potential, panel-capable area, and roof age in 6 seconds. Installers convert higher on pre-qualified leads, and aged roofs unlock a re-roof bundle that doubles your buyer payout.

Raw lead$80-120
{ "name": "Sarah Johnson",
"address": "5701 W Loma Ln",
"phone": "+1-602-555-0192" }
POST /v1/enrich · 6 sec
+$26-38 margin
Enriched solar lead$110-160
…name + address + phone +
"solar.suitability": "high",
"solar.kw_potential": 13.6,
"roof.area_sqft": 4003,
"property.roof_age_yrs": 18,
…and 40+ more fields
$20-40
+margin per lead
6 sec
to pre-qualify
$3.95
per call (→ $1.95 at scale)
payout on re-roof bundle

How it fits in

Day-to-day workflows our data slots into.

PV suitability pre-qualification

solar.suitability returns high / medium / low / unsuitable based on roof orientation, shading, pitch, and panel-capable area. Filter out unsuitable roofs before sending to installer. Installers pay more for leads they don't have to disqualify on the call.

System-size pre-routing

solar.kw_potential routes 8+ kW systems to high-tier residential installers, 3-7 kW to standard tier, 12+ kW to commercial. Match the lead to the installer who pays the most for that size.

Re-roof bundle opportunity flag

Roof 15+ years old? Homeowner needs a new roof before installing solar. That's a $20-40k re-roof + $25-50k solar bundle, double-pay your installer customer. Use property.estimated_roof_age_years to flag these for premium routing.

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, we ping your webhook, solar installers re-qualify leads where the roof now needs replacement first (a roof-then-solar bundle re-emerges).

Quality scoring + filtering

Use owner_match, imagery_quality, and footprint cross-check signals to score the lead before sale. Filter out renters and recyclers. Owner-occupied is the only solar lead worth selling.

Lead-form append

Wire our API into the form-submit handler on your landing pages. Visitor types address, our data attaches before the lead hits your CRM. Installers see pre-qualified solar leads from the second they're created.

Raw solar lead vs. RoofTap-enriched

What your installer customer sees, and what they're willing to pay for.

Capability
PV suitability
Raw leadUnknown, installer disqualifies on call
RoofTap-enrichedsolar.suitability = high/med/low/unsuitable
System size potential
Raw leadEstimated from roof photos on site visit
RoofTap-enrichedsolar.kw_potential + max_panel_count attached
Roof age (re-roof risk)
Raw leadDiscovered mid-quote, install postponed
RoofTap-enrichedestimated_roof_age_years flagged at intake
Re-roof bundle opportunity
Raw leadMissed, solar quoted alone
RoofTap-enrichedreroof_bundle_opportunity = true → 2× buyer payout
Per-lead resale price
Raw lead$80-120, commodity solar lead
RoofTap-enriched$110-160, pre-qualified premium
Installer close rate
Raw leadLower, leads die at suitability check
RoofTap-enrichedHigher, pre-qualified leads bid out cleanly
Storm renotification
Raw leadNone. Roof event = lost lead
RoofTap-enrichedAuto-pinged 24 mo when hail/wind hits, roof-then-solar re-pitch

Fields you'll use most

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

FieldWhat you do with it
solar.suitabilityhigh / medium / low / unsuitable. The headline qualification signal, installers route leads on this single field.
solar.kw_potentialMax system kW for this roof. Drives lead-tier routing and installer pricing.
solar.annual_kwh_potentialAnnual energy production. Drives homeowner ROI math and ad-targeting.
solar.max_panel_countHow many panels fit. Installer uses this to estimate system price before site visit.
roof.area_sqftTotal roof area, needed to validate panel placement options and unshaded array layout.
roof.predominant_pitchPitch drives panel tilt and energy yield. 4/12 to 8/12 is the solar sweet spot.
property.estimated_roof_age_years15+ years = the re-roof bundle opportunity. Bundles double the buyer payout.
property.owner_occupiedRenters don't install solar. Filter these out at intake.
property.owner_matchCross-check the lead's name against the deed. Filters wholesalers and recyclers.
data_quality.imagery_qualityLOW imagery = canopy or out-of-date imagery (canopy especially impacts solar suitability scores). Route to manual review.

One enriched solar lead = $20-40 of incremental margin.

You sell a raw solar lead at
$80-120
address + name + phone + interest level
We add roof + solar suitability data
+$3.95
your enrichment cost (drops to $1.95 at volume)
You resell as a pre-qualified solar lead at
$110-160
installers pay more because the lead is pre-qualified and re-roof opportunities are flagged

At entry pricing, your margin per enriched solar lead lifts $26-36. At volume tier ($1.95/call past 30k/mo), $28-38. The re-roof bundle flag alone can lift premium leads $50+ per, solar installers pay big for leads where they can quote roof + solar together. Solar economics are richer than roofing because the base lead price is higher.

Sample response - solar 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": "solar-9821",
  "owner_match_name": "Sarah Johnson" }

200 OK
{
  "ok": true,
  "lead_id": "solar-9821",
  "roof": {
    "area_sqft": 4003,
    "predominant_pitch": "4/12"
  },
  "solar": {
    "suitability": "high",
    "kw_potential": 13.6,
    "annual_kwh_potential": 14820,
    "max_panel_count": 34,
    "sunshine_hours_per_year": 3214
  },
  "property": {
    "year_built": 1972,
    "estimated_roof_age_years": 18,
    "reroof_bundle_opportunity": true,
    "owner_match": true,
    "owner_occupied": true
  },
  "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 installer 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 solar leads. We enrich them on us. You give the enriched leads to your installers and measure: do they pay more? Most solar pilots show $25-40 uplift per lead.

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

How is your solar suitability scored?

We blend Google Solar API segmentation (shading, panel-capable area, kW potential, annual kWh) with our own pitch + azimuth analysis. The suitability field summarizes these into high/medium/low/unsuitable. Raw fields are returned alongside for installers who want to compute their own tier.

Do you handle the re-roof bundle math, or just flag the opportunity?

We flag, property.estimated_roof_age_years tells you if a re-roof is likely needed in the next 5 years. Your installer customers decide how to bundle. Some pre-quote roof + solar in the same proposal; others route to a roofing partner first.

Do my installer 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 fetches in parallel). Cached addresses return sub-second. If you need to keep latency off the hot path, call /v1/enrich/prewarm at intake.

What's the storm-watch, is it useful for solar?

Yes. Every enriched address gets free storm-watch for 24 months. When a qualifying hail or wind event hits a watched property, we ping you. For solar, the play is: roof now needs replacement → re-engage the lead with a roof-then-solar bundle pitch. Roof-related churn is the #1 reason solar installs get postponed; this lets you catch it.

Also sell roofing leads?

Yes, same API returns roof measurements alongside solar data. See the roofing 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 installer 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.

Also sell roofing leads?

See the roofing lead vendor page →