Blog/leads

Angi Leads Cost Per Lead for Roofing: The Real Math

How Angi roofing lead prices are set, why shared leads inflate your true cost per signed job, and how to audit a month of spend against jobs you actually won.

JT
Jake Thompson
Roofbird
September 15, 2026

Angi does not publish a roofing rate card. Neither does HomeAdvisor, Thumbtack, or Networx. That single fact is the most useful thing you can know before you sign: the price is set per account, per territory, per trade, and it moves. Roofers who report their numbers publicly cluster in a wide band, but nobody outside your account rep can tell you what you will pay.

So instead of chasing a number that does not exist, learn the machine. How the price is built, why it drifts, what sharing does to it, and how to prove what a signed job actually cost you. Then run the audit.

1. How the per-lead price is actually set

Angi's model is a marketplace. Homeowners submit a request, Angi sells that request to contractors, and the price of the request is set by a mix of factors that have nothing to do with your close rate:

  • Job type. A full tear-off and replacement prices higher than a repair or a gutter job. The platform knows replacement is the high-ticket request and charges accordingly.
  • Territory. Dense metro ZIPs with lots of competing roofers price higher than rural areas with fewer bidders. Scarcity cuts both ways: fewer contractors means fewer buyers for the same lead, so the platform may discount to move volume.
  • Trade competition. Roofing is one of the most contested categories on every marketplace. More roofers bidding on the same request means the request is worth more to the platform.
  • Your account history. Spend more, get offered more. That is not a discount, it is a volume relationship.
  • Exclusivity. Exclusive leads price above shared ones. This is the single most important line item and most contractors skim past it.

What you will not get is a published rate. When a vendor does not publish pricing, the honest answer to "what does Angi cost per lead" is: whatever your account rep quotes you, in your territory, for your trade, this quarter. Treat any specific number you read online as a reported range, not a fact.

2. Why the price moves with job type and territory

Think about what the platform is selling. It is not selling you a roof. It is selling you a contact event — a homeowner who filled in a form. The value of that event to the platform is a function of how many contractors will pay for it.

That is why a hail-hit suburb prices differently from a quiet town. After a storm, every roofer in three counties wants the same ZIPs, so demand for those leads spikes and the price follows. Six weeks later, when the storm chasers leave, the same lead gets cheaper. Your cost per lead is a weather derivative whether you like it or not.

It also explains the job-type spread. A homeowner asking about a $600 repair is a low-value event. A homeowner asking about a 28-square replacement with a detached garage is a high-value event. The platform prices the second one up, and it is right to. The problem is not the pricing. The problem is what happens next.

3. What share rate does to your effective price

The headline price is the price of a lead. It is not your cost per lead.

If the same homeowner request is sold to four roofers, you paid full price for a 25% shot at a conversation. Your effective cost per opportunity just quadrupled, and you have not even quoted yet.

Run it plainly. Say you pay a reported-range figure per shared lead and you buy 40 in a month. You call all 40. Some numbers are wrong. Some homeowners already signed with the first roofer who called, which is the structural problem with shared leads: speed beats quality, and you are racing three competitors to a phone that may already have hung up. Of the ones you reach, some are tire-kickers who wanted a free inspection. A few become appointments. A few of those become jobs.

Now divide your monthly spend by jobs won, not by leads bought. That number is your true cost per signed job, and for shared roofing leads it is routinely several times the sticker price. Not because the platform lied. Because you were buying a fraction of a lead and paying for a whole one.

This is the honest case against the model, and it is a structural case, not a smear. Shared marketplaces are built to sell the same request many times. That is the business. If you want exclusive leads, you have to source them yourself, and that is a different job than buying them.

4. How to compute your true cost per signed job

Do this once and you will never guess again.

  1. Total lead spend for the month. Every invoice, including top-ups.
  2. Leads delivered. Count them, not the estimate on the dashboard.
  3. Contactable leads. How many had a working number for a real decision-maker.
  4. Appointments set. Inspections you actually got on the calendar.
  5. Jobs signed. Contracts, not verbal maybes.
  6. Revenue and gross margin on those jobs.

Then: Total spend ÷ jobs signed = cost per signed job. Compare that to your gross profit per job, not your revenue per job. A $14,000 roof at 30% gross margin is $4,200 of gross profit. If your cost per signed job is $1,800, you are working for the difference and the marketplace is your largest single customer acquisition line.

Also compute cost per appointment, because it tells you where the leak is. If cost per lead is fine but cost per appointment is ugly, your follow-up is the problem. If cost per appointment is fine but cost per job is ugly, your close rate or your pricing is the problem. Different fixes.

5. The month-end audit: spend vs. jobs actually won

Pull one month and put it in a spreadsheet. Five columns: lead ID, date received, job type, outcome, revenue.

  • Match every lead to an outcome. Won, lost, no contact, bad number, duplicate, out of area. No blanks. Blanks are where money hides.
  • Flag duplicates. If the same homeowner appears twice, you paid twice.
  • Flag credits and disputes. Marketplaces often have a credit process for bad numbers and duplicates. Roofers report that getting those credits applied takes persistence and that friction is real. Track what you requested and what landed.
  • Segment by job type. If repair leads are dragging your average down, stop buying repair leads.
  • Segment by ZIP. Kill the two ZIPs that produce nothing and double the two that produce.
  • Recompute cost per signed job with credits applied. The number after credits is the number that matters.

Do this for three consecutive months before you renew anything. One month is noise. Three months is a trend, and a trend is what you take to the renewal conversation.

6. What to do with the audit

If the math works, keep buying and stop feeling bad about it. Shared leads can pencil out for a shop with strong phone discipline and fast follow-up.

If it does not, you have two levers. Negotiate, or replace the channel. Negotiating means asking for exclusivity, disputing bad leads aggressively, and cutting the job types and ZIPs that lose money. Replacing means sourcing your own leads, which sounds harder than it is now that imagery and property records do most of the walking.

7. The other way to get a lead: source it yourself

Here is the part the marketplaces cannot do. They only know who filled in a form. They do not know your territory, and they cannot tell you which roofs in it are actually worn out.

Roofbird reads every roof in your service area from satellite and ground-level imagery, ranks each one against its immediate neighbours, and lets you ask questions about them in plain English. "Find me the worst roofs in 75216." "Which of these have a tarp on them?" "Houses where most of the neighbours have already re-roofed." Searching roofs that have already been read is free, instant, and unlimited. Opening the photographs to answer a question about them is free too, and takes about half a minute.

Every lead carries two scores, because "needs a roof" and "will buy now" are different questions. NEED is condition and roof age. NOW is whether anything is forcing a decision on this house: visible active damage, hail on this specific roof, a recent purchase, patching already attempted, neighbours who have gone new. Neighbourhood hail deliberately does not inflate NOW, because every home in the scan shares it and it cannot separate one door from the next. That is the opposite of how storm lists work, and it is why the ranking holds up at the door.

The payoff is the contact record. The full property record shows free on every lead as soon as it is scanned: owner name, whether they live there or it is an absentee owner, estimated market value, year built, last sale date and price, beds and baths, living square footage, lot size, stories, garage, annual property tax, mortgage lender, and an owner-equity estimate, because equity is what decides whether someone can say yes. Only the phone and email sit behind a one-click unlock, and every number is DNC-scrubbed and labelled clear, DNC, or verify. Manual dialling only. A lookup that finds no contact never costs a credit.

And there is no quota and no per-lead fee. Roofs already replaced, the wrong material for your shop, or not homes at all are read, labelled as exactly that, and kept out of the way. A building anyone has already assessed is never re-assessed or re-charged. Pricing is one meter: free trial with 10 credits and no card, Hunter at $199/mo for 350 credits, Hunter Pro at $499/mo for 1,000 credits. Top-ups are $25 for 37 or 50 credits depending on plan. Credits buy reading ground nobody has read, looking at the photographs, bulk property data, or opening a house completely. Asking, searching, sorting, and saving lists are free and unlimited on every plan.

Run the audit on Angi first. Then run the same math on a channel where the lead is yours alone.

FAQ

Q: How much does Angi charge per roofing lead? A: Angi does not publish a rate card, and pricing is typically quoted per account, per territory, and per trade. Roofers report a wide range that moves with job type and local competition. Treat any specific figure you read online as a reported range, not a published price, and get your own quote in writing.

Q: Why is my effective cost per lead higher than the price I was quoted? A: Because shared leads are sold to multiple contractors. If four roofers buy the same request, you paid full price for a fraction of a lead. Divide total spend by jobs signed, not by leads purchased, to see your true cost per signed job.

Q: How do I audit a month of Angi spend? A: Pull every lead ID with date, job type, and outcome, match each one to won, lost, no contact, bad number, duplicate, or out of area, flag credit requests and what was applied, then recompute cost per signed job after credits. Segment by job type and ZIP to find what to cut.

Q: Can I get exclusive roofing leads without a marketplace? A: Yes. Roofbird reads every roof in your service area from imagery, ranks each against its neighbours, and surfaces the full property record and owner-equity estimate free, with only the DNC-scrubbed phone and email behind a one-click unlock. No quota and no per-lead fee.

Q: Does Roofbird predict which homeowners will buy? A: No. Roofbird scores roofs from imagery and public property records and reports what it reads. It does not know homeowner intent, does not guarantee a sale, and does not guarantee an insurance claim will be approved. Claim-window figures are estimates of the typical state notice deadline, so verify with the carrier.

New in Roofbird

Now with the homeowner's contact details on every lead

Finding the roof is half the job — you still have to reach the owner. Roofbird now unlocks the homeowner's name, phone, email, and mailing address on any lead, every phone DNC-scrubbed so you know who's safe to call, plus whether they're an owner-occupant or an absentee owner. No skip-tracing tools, no bought lists: find the roof, get the owner, call or mail the same day.

Written by

Jake Thompson

Roofbird

Have a question about anything in this post? Reach the Roofbird team at support@roofbird.ai.

Try Roofbird — 10 free leads in your area

See a sample dashboard for DFW first, no signup needed. Trial loads 10 free pre-scored leads in your own service area.