Iowa Contractor License Lookup & Export (DIAL)
Pricing
$0.004 / license record
Iowa Contractor License Lookup & Export (DIAL)
Export every active Iowa construction contractor registration (18,000 on 2026-10-07) from DIAL's official roster, with phone, email, mailing address, county and NAICS trade. Filter by trade, county, city, ZIP or name.
Pricing
$0.004 / license record
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Pain points
- Iowa has no state general-contractor licence: the statewide record is DIAL's construction contractor REGISTRATION, so a 'licence' search elsewhere comes back empty.
- DIAL publishes the roster only as a ZIP holding one 18,000-row CSV, which you have to download, unzip and filter yourself every week it changes.
- The file names each registrant's trade by a text label only (e.g. 'Plumbing/Heating & A/C Contractors'), with no NAICS code to join on.
What we solve
- Pull the whole statewide roster, or just the slice you need, in one run: filter by trade, county, city, ZIP or name, with a batch list for each.
- Every row carries the 6-digit NAICS code mapped from DIAL's own published activity list, beside the label.
- Phones are formatted, the duplicated 'CITY ST ZIP' line is dropped from the street address, and counties are title-cased.
Summary
Export Iowa's statewide roster of active construction contractor registrations straight from the Iowa Department of Inspections, Appeals, and Licensing (DIAL). Anyone earning $2,000 or more a year from construction in Iowa must register, so this is the state's list of working contractors: 18,000 active registrations on 2026-10-07, each with business name, registrant name, phone, email, mailing address, county, NAICS primary activity, registration number and issue/expiry dates. Leave the filters empty to take the whole state, or narrow by trade ('roofing', '238220'), county, city, ZIP or name. The file is read fresh on every run. Pay per registration returned.
Who it's for
- Sales teams selling materials, equipment, insurance or software to Iowa contractors
- Lead-generation agencies building trade-specific contractor lists by county
- General contractors and suppliers sourcing registered subcontractors near a job
- Compliance teams checking that vendors hold an active Iowa contractor registration
How to use
Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:
{"county": "Polk","trade": "roofing","maxResults": 500}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
license_number | DIAL registration number (e.g. C153532), unique per registration |
business_name | Registered business name |
person_name | Registrant's first and last name |
phone | Phone on file, formatted (XXX) XXX-XXXX |
email | Email on file with DIAL |
address | Mailing street address |
city | Mailing city |
address_state | Mailing state (out-of-state firms can register) |
zip_code | Mailing ZIP |
county | Iowa county as DIAL records it |
naics_code | 6-digit NAICS code of the primary activity |
primary_activity | DIAL's activity label, e.g. Roofing Contractors |
status | Always Registered (the file holds only active registrations) |
issue_date | Registration issue date |
expiration_date | Registration expiry date |
source_url | The dataset's page on data.iowa.gov |
Sample:
{"license_number": "C153532","business_name": "515 PAINTING & HOME SERVICES LLC","person_name": "MARLON NAZRALA DELCID","phone": "(515) 205-3017","email": "mjnazrala@gmail.com","address": "2910 WOOD STREET","city": "AMES","address_state": "IA","zip_code": "50014","county": "Story","naics_code": "238320","primary_activity": "Painting & Wall Covering Contractors","status": "Registered","issue_date": "2026-09-29","expiration_date": "2027-09-29","license_type": "Construction Contractor Registration","state": "IA","source_url": "https://data.iowa.gov/catalog/dataset/1052"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
trade | no | string | — | A word from DIAL's primary-activity label ('roofing', 'electrical', 'plumbing', 'remodelers') — matches at the start of a word — or a NAICS code ('238160') or code prefix ('2382' = every specialty trade). A value that matches none of the 32 activities is dropped and logged. |
trades | no | array | [] | Several trades in ONE run, e.g. roofing and siding. Combined with 'Trade' if you fill both. |
county | no | string | — | Iowa county, e.g. 'Polk', 'Linn County', 'obrien'. DIAL fills county for Iowa addresses only. An unrecognised county is dropped and logged. |
counties | no | array | [] | Several counties in ONE run. Combined with 'County' if you fill both. |
city | no | string | — | Mailing city, exact match ignoring case and punctuation, e.g. 'Des Moines'. |
cities | no | array | [] | Several cities in ONE run. |
zipCode | no | string | — | 5-digit mailing ZIP, e.g. '50309'. |
zipCodes | no | array | [] | Several ZIP codes in ONE run. |
nameFilter | no | string | — | Case-insensitive text found in the business name or the registrant's first/last name, e.g. 'roofing llc' or 'smith'. |
nameFilters | no | array | [] | Several names in ONE run; a registration matching any of them is returned once. |
iowaAddressesOnly | no | boolean | false | Registrants from any state can work in Iowa: 4,057 of 18,000 (22.5%, 2026-10-07) have an out-of-state mailing address. Tick to drop them. |
maxResults | no | integer | 500 | Cap on registrations returned for the WHOLE run (this is an export; the cap is your spend control). The full roster was 18,000 on 2026-10-07 — set 100000 to take everything that matches. |
proxyConfiguration | no | object | {"useApifyProxy": false} | Optional. data.iowa.gov answers direct requests; enable a proxy only if a run returns a 'blocked' notice. |
Pricing (Pay Per Event)
You pay per result (dataset-item) — no charge for empty runs. Example: 115 Polk County roofing contractors at $0.004/result ≈ $0.46.
The whole statewide roster (18,000 rows on 2026-10-07) costs $72.00 at maxResults 100000; the default run (500 rows) costs $2.00. Apify platform usage is billed separately.
Use cases
- Territory prospecting: export every roofing and siding contractor in Polk and Linn counties with phone and email for a CRM.
- Statewide list build: take all 18,000 active registrations once, then re-run monthly to catch new registrants by issue date.
- Subcontractor sourcing: list registered electrical (238210) or plumbing/HVAC (238220) contractors in a ZIP before sending bid invitations.
- Vendor compliance: match your vendor names against the active roster and note each expiry date.
Why this actor
- Contact data on nearly every row: phone on 17,954 of 18,000 registrations (99.7%), email on 17,583 (97.7%), street address on 17,997 (measured 2026-10-07).
- Straight from DIAL's official open-data roster, downloaded fresh on every run (~1.3 s), so each run reflects the latest weekly refresh.
- Filter by NAICS code or trade word, county, city, ZIP or name; a value it does not recognise is dropped and logged, never silently widened to the whole state.
- Pay per registration returned; outage and bad-input notices are free.
Limitations & updates
Covers active Iowa construction contractor registrations only: no expired or revoked registrations, and no DIAL trade licences (electrical, plumbing, mechanical), which are a separate system. The file is refreshed weekly, so a registration made in the last few days may not appear yet. County is blank on 4,269 of 18,000 rows (mostly out-of-state addresses; 255 Iowa addresses also lack one). Each registrant has one primary activity, so a firm doing several trades appears under one. The roster was exactly 18,000 rows on 2026-10-07; no cap was found in the source's published query, but DIAL publishes no separate total to confirm it against. Data: Iowa DIAL via data.iowa.gov, licensed CC BY 4.0 — attribute the source if you republish it.
FAQ
Where does the data come from?
From the Iowa Department of Inspections, Appeals, and Licensing (DIAL), Building & Construction Division: the open-data set 'Active Iowa Construction Contractor Registrations' (data.iowa.gov dataset 1052), published under CC BY 4.0 and refreshed weekly. The actor downloads it on every run.
Is this a licence or a registration?
A registration. Iowa does not license general contractors at state level; anyone earning at least $2,000 a year from construction in Iowa must register with DIAL and renew annually. Trades such as electrical and plumbing also need separate DIAL trade licences, which this file does not cover.
How many contractors are there?
18,000 active registrations on 2026-10-07. Largest trades: Residential Remodelers 3,397, All Other Specialty Trade 1,796, Electrical 1,727, Plumbing/Heating & A/C 1,436, Roofing 880. Largest counties: Polk 2,437, Linn 1,071, Johnson 553, Scott 496.
Does it include out-of-state contractors?
Yes, 4,057 of the 18,000 (22.5%) have a mailing address outside Iowa, most often Nebraska (887), Minnesota (527) and Illinois (435). Tick 'Iowa mailing addresses only' to drop them. DIAL leaves county blank for most of them, so a county filter returns Iowa addresses only.
How do I name a trade?
With a word from the activity label, matched at the start of a word ('roofing', 'electrical', 'remodelers'), or a NAICS code ('238160') or prefix ('2382' for every specialty trade). DIAL uses 32 activities: 230000 Other/Undefined plus the NAICS codes from 236115 New Single-Family Housing Construction to 238990 All Other Specialty Trade Contractors; a value that matches none of them is dropped and logged.
Does it include expired registrations?
No. DIAL's file holds only registrations with status Registered and an expiry date on or after the refresh date, so every row reads status 'Registered'.
How am I charged?
$0.004 per registration returned. The default run returns 500 rows ($2.00); the whole state is 18,000 rows ($72.00). Rows explaining an outage or an unrecognised filter are free.
Which actor to choose
Part of the contractor-data suite — pick the one that fits your goal:
- Virginia Contractor License Lookup (DPOR Bulk) — You want the same statewide export for Virginia's DPOR contractor licences.
- Arkansas Contractor License Lookup & Verify (ACLB) — You need Arkansas contractor licences, one lookup or the whole state.
- Minnesota Contractor License Lookup & Export (DLI) — You're verifying a Minnesota residential contractor (DLI).
- Mississippi Contractor License Lookup & Export (MSBOC) — You need Mississippi contractors — the active MSBOC roster with phone, street address and classifications, by county or class.
- Ohio Contractor License Lookup & Export (OCILB) — You need Ohio electrical, HVAC, plumbing, hydronics or refrigeration contractors — the full OCILB roster, by trade and county.
- Nebraska Contractor Registration Lookup & Export (NDOL) — You need Nebraska contractors — every current NDOL registration, by service and county, with phone on request.
- Delaware Contractor License Lookup & Export (DOR + DPR) — You need Delaware contractors — DOR business licences plus DPR electrical, plumbing and HVACR licences, by city or ZIP.
- DC Contractor License Lookup & Export (DLCP) — You need contractors licensed in Washington, DC — every active DLCP general contractor, home improvement and asbestos licence, by address state, ZIP or ward.
Guides & use cases
Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:
- How-to: How to run Iowa Contractor License Lookup & Export (DIAL)
- Use case: Export Polk County, Iowa Roofing Contractors
More actors, coverage and nightly verification results: scrapebench.dev
Works with AI assistants (MCP)
Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.
Then just ask:
"List the active Iowa contractor registrations for roofing contractors in Polk County, with phone and email."
That input returned 115 registrations on 2026-10-07. With no filters it exports the whole state (18,000 rows), so set a trade or county before running it from an agent. Runs started this way bill exactly like any other run.