Minneapolis Building Permits Scraper — Contractor Leads avatar

Minneapolis Building Permits Scraper — Contractor Leads

Pricing

$4.00 / 1,000 permits

Go to Apify Store
Minneapolis Building Permits Scraper — Contractor Leads

Minneapolis Building Permits Scraper — Contractor Leads

Find contractor and construction leads from Minneapolis building permits: ~409k permits since 2016 from official city open data, refreshed daily, with contractor, valuation, address, ward and lat/long. Filter by contractor, ward or neighborhood; onlyNew skips repeats. $0.004/permit, no start fee.

Pricing

$4.00 / 1,000 permits

Rating

0.0

(0)

Developer

Parallel Studio

Parallel Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Security

Limited permissions

Share

Get fresh building permits from the City of Minneapolis as clean, analysis-ready JSON/CSV/Excel: permit number, issue date, address, parcel ID (APN), neighborhood, ward, latitude/longitude, permit & work type, valuation, fees, new/eliminated dwelling units, job description and the contractor/applicant name and address.

Who it's for: contractors, suppliers, lenders and investors who need a daily list of new Minneapolis building permits with the contractor, valuation and address, at $0.004 per permit.

Who uses it

  • Roofers, HVAC, solar, window, landscaping and remodel companies building lead lists
  • Building-material suppliers and lenders prospecting active contractors
  • Investors tracking teardowns, new construction and additions
  • Journalists and researchers following local development

Input

FieldMeaning
citiesMinneapolis (default, live) and/or St. Paul (history only, July 2015 to June 30, 2025)
daysBackPermits issued in the last N days (default 14). Use 3650 to reach back to the start of the city's records (Dec 2016)
minValueMinimum permit valuation in $
permitTypese.g. Res, Comm (empty = all)
workTypese.g. New, Addition, Remodel, Misc, Wreck
keywordText in the job description, e.g. roof, solar, deck
contractorSearchCase-insensitive "contains" match on contractor/applicant name, e.g. roofing
wardsWard numbers, e.g. ["13"] (Minneapolis and St. Paul)
neighborhoodsMinneapolis neighborhood names, "contains" match, e.g. Linden Hills (ignored for St. Paul)
onlyNewtrue returns only permits not delivered by an earlier run with the same filters (default false)
maxItemsCap on results, per city

Example input

{
"daysBack": 7,
"minValue": 10000,
"permitTypes": [
"Res"
],
"workTypes": [],
"keyword": "roof",
"maxItems": 200
}

Example output (real record from the 2026-10-12 cloud run)

{
"city": "Minneapolis",
"permitNumber": "BLDG1204564",
"issueDate": "2026-10-09T18:18:46.000Z",
"completeDate": null,
"status": "Issued",
"milestone": "Final Inspection",
"address": "410 THOMAS AVE S",
"parcelId": "2902924130003",
"neighborhood": "Bryn - Mawr",
"ward": "7",
"latitude": 44.97316,
"longitude": -93.31382,
"permitType": "Res",
"occupancyType": "SFD",
"workType": "Misc",
"value": 13000,
"fees": 337.3,
"dwellingUnitsNew": 0,
"dwellingUnitsEliminated": 0,
"description": "Remove shingles on house & detached garage, inspect decking, install ice & water shield to code, install new shingles & roof components",
"contractor": "JTR Roofing Inc",
"contractorAddress": "11200 Stillwater Blvd N #106B, Lake Elmo",
"source": "City of Minneapolis Open Data (CCS Permits)"
}

Data quality & history (measured, not promised)

We checked the official feed on 2026-10-13 so you know what you get before you run it:

  • History back to December 1, 2016: about 409,000 Minneapolis permits in total, roughly 40,000 to 47,000 a year (42,698 in 2017, 47,056 in 2024, 39,308 in 2025). Set daysBack high and raise maxItems to pull multi-year history for market studies or contractor track records.
  • Volume right now: 11,124 permits issued in the 90 days to Oct 11, 2026, about 120 a day.
  • Field completeness across the 2,000 most recent permits:
FieldFilled
Contractor/applicant name & address, parcel ID, latitude/longitude, permit value, fees, permit & work type, status100%
Neighborhood, ward99.6%
Job description99.5%
Occupancy type (SFD, duplex, commercial...)75.8%
Dwelling units new/eliminated (the city leaves it blank on the rest; we output 0)42.5%
Complete date (mostly blank because the permit is still open)8.1%
  • Straight from the source: every row comes from the City of Minneapolis CCS Permits feed at run time, sorted newest first, with the same permit number the city uses, so you can de-duplicate daily runs on permitNumber.

St. Paul history (optional)

Checked on 2026-10-15 against the City of Saint Paul's Approved Building Permits feed:

  • About 318,000 permits issued July 2015 to June 30, 2025 (29,383 in 2016, 29,549 in 2020, 33,218 in 2024). The feed has no permits after June 30, 2025.
  • Across the 2,500 most recent St. Paul permits: contractor name & address and job description 100%, parcel ID (PIN) 99.2%, ward 98.8%, latitude/longitude 95.0%, estimated value of work 87.3%, final date 11.8%.
  • St. Paul rows use the same columns. permitType is the city's permit category (Building, Electrical, Mechanical, Plumbing...), subType adds detail (e.g. Solar PV Systems), neighborhood is the district council (e.g. District 3), and fees / dwelling units are blank because the city doesn't publish them.

FAQ

How do I get only new permits every day without paying for repeats? Schedule the actor daily with onlyNew: true and a daysBack of 2 or more for overlap. Permits you already received with the same filters (cities, minValue, permitTypes, workTypes, keyword, contractorSearch, wards, neighborhoods) are skipped before output, so you are only charged for new rows. State is stored in the named key-value store twin-cities-permits-state (latest 50,000 permits per filter set). Change a filter and you start a fresh feed.

Can I get roofing (or solar, HVAC, deck) leads only? Use keyword, e.g. roof, solar, furnace, deck. It matches the job description text. Use keyword rather than workTypes for trade leads: in our check of Minneapolis permits issued Oct 8 to 22, 2026, 174 of the 211 roof jobs were filed under work type Misc, so a work-type filter would miss most of them. For solar, keyword: solar found 389 Minneapolis permits issued Oct 2025 to Sep 2026, with a median permit value of $7,225.

How do I get the permits into Google Sheets, my CRM or Slack? Every run saves a dataset you can download as CSV, Excel or JSON, or read through the Apify API. To automate it, put the actor on an Apify schedule and connect one of Apify's integrations (Google Sheets, Slack, email, Zapier, Make or a webhook) so each day's new permits land where your team works.

Does it cover St. Paul? Yes, for history. Add St. Paul to cities. St. Paul's official open-data permit feed has about 318,000 permits issued from July 2015 to June 30, 2025, and the city stopped updating it after that date, so it can't give you fresh St. Paul leads. A recent daysBack returns nothing for St. Paul and logs a warning instead of charging you. Suburbs aren't covered.

Pricing

Pay per event: $0.004 per permit returned ($4 per 1,000). No start fee, no proxies needed, runs in seconds. With onlyNew: true you're only charged for permits you haven't received before.

What that means in practice, based on the city's own volumes (47,056 permits in 2024, 39,308 in 2025):

UseRowsCost
Every new Minneapolis permit, daily onlyNew feedabout 108 to 129 a day on averageabout $0.43 to $0.52 a day
Same feed filtered with minValue, a ward, or a contractora fraction of thatproportionally less
One full year of history (e.g. 2024)47,056about $188
Everything since Dec 2016about 409,000about $1,636

Set maxItems to cap any run.

Data source & legality

Official public open data published by the City of Minneapolis (Open Data portal). No login, no personal account data. Always follow local rules for marketing outreach.

Other public-data Actors from parallelstudio: