Use case
Bismarck ND Licensed Contractors with Phone Numbers
Active North Dakota contractor licences in Bismarck, with phone, mailing address, licence class, renewal and insurance expiry dates.
Say you sell lumber and roofing supplies, and your company has just opened a yard on the north side of Bismarck. Your manager wants a call list of every licensed contractor in town by the end of the week, with phone numbers, so the two new counter reps can start ringing round before the spring building season. North Dakota requires a Secretary of State licence for any job over $4,000, so the licence roll is the closest thing to a complete list of who builds in Bismarck. On October 28–29, 2026, 906 active licences had a Bismarck mailing address.
The manual way, and what it costs
FirstStop is free and good for checking one contractor: type a name, open the record, and you have the class, phone and insurance date. It is the wrong tool for a city list. The search matches company names, not cities, so there is no way to ask it for Bismarck; you would have to search the whole roster 100 names at a time and open every record to read its address. If you only need to vet the five firms bidding on your next job, do it there. For 906 contractors with phones, it is a week of clicking.
The faster way
North Dakota Contractor License Lookup & Leads Scraper (ND SOS) does the same search once and hands back every row at once.
{
"status": "Active",
"city": "Bismarck",
"maxResults": 500
}
city: Bismarck matches the mailing address on the licence. Firms that mail from Mandan, across the Missouri, are a separate city; add cities: ["Bismarck", "Mandan"] if your yard serves both. status: Active is what the roster holds anyway, and keeps the saved task honest if that ever changes. maxResults: 500 is a cheap first look at $2.00 at most, but it stops short of the 906 Bismarck licences; set maxResults to 1000 for the full list, $3.62.
What comes back
{
"listing_id": "000055711",
"name": "A to Z Professional Services, LLC",
"phone": "(701) 220-7269",
"phone_e164": "+17012207269",
"street": "3730 W REGENT DR",
"city": "BISMARCK",
"region": "ND",
"postal_code": "58504-7516",
"country": "US",
"category": "contractor",
"categories": [
"contractor"
],
"source": "snapshot",
"source_url": "https://firststop.sos.nd.gov/search/contractor#0007587022",
"extras": {
"status": "Active",
"licence_class": "A",
"standing": "Good Standing",
"sos_control_id": "0007587022",
"registered": "2026-09-11",
"expires": "2027-03-01",
"insurance_expires": "2027-02-15",
"standing_business": "Good",
"standing_wsi": "Good",
"standing_job_service": "Good",
"standing_other": "Good"
}
}
| Field | Example value | Meaning |
|---|---|---|
listing_id | 000055711 | Contractor licence number exactly as the state prints it, leading zeros included (e.g. 000055711) |
name | A to Z Professional Services, LLC | Licensed company or contractor name |
extras.licence_class | — | A, B, C or D: the largest job the licence allows (A over $500,000; B up to $500,000; C up to $300,000; D up to $100,000) |
extras.status | — | Licence status (Active) |
extras.standing | — | Good Standing or Not Good Standing with the Secretary of State |
extras.standing_business | — | Standing flag: Business |
For the reps, phone_e164 is the column that matters: 905 of the 906 Bismarck licences have one, already in +1 format for a dialler. extras.licence_class tells them who to call first. A Class A firm can take jobs over $500,000 and buys by the truckload; a Class D firm stops at $100,000 per job. In Bismarck that is 306 Class A, 86 Class B, 118 Class C and 396 Class D licences. extras.insurance_expires is worth a column in the sheet too, because a contractor whose certificate is about to lapse is a contractor busy with paperwork, not orders.
What you’d do with it
Export the dataset as CSV, sort it by extras.licence_class so the A and B firms come first, split it between the two reps, and import it into the CRM with extras.sos_control_id as the external ID. When the next refresh lands, that control number lets you match rows back without creating duplicates. Use it rather than the licence number: a few numbers belong to two firms in different classes.
Worth knowing
This is a licence list, not a contact database. The Secretary of State publishes no email, so there is none in the data. The address is the mailing address on file, which for a small firm is often the owner’s house, and the list only holds active general contractor licences: electricians and plumbers are licensed by their own state boards and are not in it. An active licence says a contractor may work anywhere in North Dakota, not that they work in Bismarck this season.
Run it yourself: How to run North Dakota Contractor License Lookup & Leads Scraper (ND SOS) walks the whole thing step by step.
If your yard also serves the Minnesota side of the Red River, Minnesota Contractor License Lookup returns Minnesota’s licensed contractors the same way.
Last updated 2026-10-29