Roofing Jobs in Minnesota
Minnesota · Roofing careers
Explore roofing work around Minneapolis–St. Paul, Rochester, Duluth, and St. Cloud. Compare installation, repair, service, sales, estimating, and field leadership roles by the actual worksite and pay arrangement.
Use the listings
Results below use the Minnesota state filter. Open a posting to confirm its real worksite, project type, and travel territory.
Before you apply
Ask how much of the year is installation work and what happens to hours during winter. Check whether the role is employee or subcontractor work and who provides tools, safety equipment, and training.
Work areas to compare
Minneapolis–St. Paul
For a Minneapolis–St. Paul posting, confirm whether the day centers on residential replacement, commercial installation, or repair. Check the crew’s usual work radius.
Rochester
In Rochester, compare field and service work by dispatch point, on-call expectations, and whether travel between jobs is paid.
Duluth
For Duluth openings, ask how estimating, project oversight, or sales duties are divided and whether leads or a vehicle are provided.
Minnesota conditions and the offer
NOAA’s Minnesota summary describes long cold winters and increasing spring precipitation. Ask how the employer plans around these conditions; weather alone does not establish hiring demand. Read the NOAA state summary.
- Field work: compare hourly pay, overtime terms, equipment, and paid travel.
- Sales: ask about base pay, leads, commission timing, and cancellations.
- Estimating and leadership: clarify territory, reporting duties, and vehicle use.
Roofer wages in Minnesota
The 2025 BLS wage estimates published by O*NET report a median of $35.81 per hour and $74,490 per year for roofers in Minnesota. The middle half of reported hourly wages runs from $26.76 (25th percentile) to $44.05 (75th percentile). These percentiles describe the wage distribution; they are not apprentice, journeyman, or foreman pay grades.
| Survey geography | Hourly median | Annual median |
|---|---|---|
| Minnesota | $35.81 | $74,490 |
| Duluth, MN-WI | $35.03 | $72,860 |
| Fargo, ND-MN | $29.62 | $61,610 |
| Grand Forks, ND-MN | $24.40 | $50,750 |
| Mankato, MN | $24.16 | $50,250 |
| Minneapolis-St. Paul-Bloomington, MN-WI | $36.25 | $75,400 |
| Northwest Minnesota nonmetropolitan area | $23.59 | $49,060 |
| Rochester, MN | $29.78 | $61,940 |
| Sioux Falls, SD-MN | $23.50 | $48,880 |
| Southeast Minnesota nonmetropolitan area | $23.56 | $49,000 |
| St. Cloud, MN | $38.10 | $79,250 |
Compare an offer with the row that covers its actual worksite. A metro may cross a state border, and nonmetropolitan estimates cover a broader area than one town. An omitted region has no row in the table checked here; its wage should not be inferred from a neighboring metro.
These estimates concern employee roofers. They do not establish sales commissions, self-employed contractor income, prevailing-wage obligations, or guaranteed annual earnings. Benefits, overtime, paid travel and seasonal hours affect an offer’s value. The median is not a legal minimum.
Source: O*NET local wages for roofers in Minnesota, identifying BLS 2025 wage data. Retrieved October 23, 2026.
Among the published regional rows for Minnesota, Sioux Falls, SD-MN has a median of $23.50 per hour and St. Cloud, MN has a median of $38.10. These are regional benchmarks, not a ranking of employers or a forecast of vacancies. Compare the worksite geography before treating a statewide figure as local pay.
Explore roofing jobs by city in Minnesota
Use these local guides to compare reporting points, regional wages, and practical questions for employers. A city page is a starting point; confirm the project address in each listing.