ND SOS
North Dakota Contractor License Lookup & Leads Scraper (ND SOS)
Every active North Dakota contractor licence from the Secretary of State: class, renewal and insurance dates, standing, phone and mailing address. Filter by city or class, or check a licence.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
source_url | string|number|array|object|null |
listing_id | string|number|array|object|null |
name | string|number|array|object|null |
phone | string|number|array|object|null |
phone_e164 | string|number|array|object|null |
email | string|number|array|object|null |
website | string|number|array|object|null |
street | string|number|array|object|null |
city | string|number|array|object|null |
region | string|number|array|object|null |
postal_code | string|number|array|object|null |
country | string|number|array|object|null |
category | string|number|array|object|null |
categories | string|number|array|object|null |
lat | string|number|array|object|null |
lng | string|number|array|object|null |
source | string|number|array|object|null |
extras | string|number|array|object|null |
notice | string|null |
Sample row
{
"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"
}
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
mode | string | no | "auto" | export: no names, just filters; returns the whole matching list. lookup / verify: put company names (matched if contained in the company name) or licence numbers (exact) in 'queries'. auto picks the mode for you. |
query | string | no | — | A business name (or listing number) to look up in the stored copy of the directory. Kept alongside 'queries' for saved tasks. |
queries | array | no | [] | A business name (or listing number) to look up in the stored copy of the directory. Several values in one run; combined with 'query'. |
status | string | no | — | Only listings in this status. Kept alongside 'statuses' for saved tasks. |
statuses | array | no | [] | Only listings in this status. Several values in one run; combined with 'status'. |
city | string | no | — | Only listings in this city. Kept alongside 'cities' for saved tasks. |
cities | array | no | [] | Only listings in this city. Several values in one run; combined with 'city'. |
class | string | no | — | Only listings in this class. Kept alongside 'classes' for saved tasks. |
classes | array | no | [] | Only listings in this class. Several values in one run; combined with 'class'. |
categories | array | no | [] | Only rows from this name initial (one or more). Available: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z. |
maxResults | integer | no | 500 | Per query in lookup mode; per run in export mode. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Used only for live lookups; exports read the stored snapshot. |
Pricing
Pay per result (dataset-item) — no charge for empty runs.
Example: 1000 contractor licences at $0.004/result ≈ $4.00.
FAQ
Where does the data come from?
The North Dakota Secretary of State's FirstStop contractor search (firststop.sos.nd.gov): each active licence's search result joined to its detail record (phone, mailing address, renewal, insurance and standing).
Does it include inactive or expired licences?
No. It holds the licences FirstStop lists as active. A licence that lapses drops out at the next refresh.
What do the licence classes mean?
North Dakota licenses contractors for jobs over $4,000 by the largest job they may take: Class A over $500,000 per job, Class B up to $500,000, Class C up to $300,000, Class D up to $100,000. Filter with class (one letter, or several in classes).
How do I get one city?
Set city (or cities). It matches the mailing address on the licence, so an out-of-state contractor licensed in North Dakota appears under its home city.
What is the name-initial filter?
The stored copy is kept in 36 parts by the first letter or digit of the company name (a to z, 0 to 9). Leave it empty for everything; set it only to split a big export into smaller runs.
Can I verify a licence number?
Yes. Put one or more licence numbers (e.g. 55711) or company names in queries. Type a number as the state prints it, leading zeros included: 43881 and 000043881 are two different licences, and an exact match wins. A few numbers belong to two firms in different classes (Class A 2174 and Class B 2174 are two companies). A number alone then returns one free notice saying so; add class (e.g. B) to get the one you mean.
Is there an email address?
No. The Secretary of State publishes a business phone and mailing address, not an email.
How current is it?
The roster was read on October 28–29, 2026. The stored copy is refreshed when it is older than a month and the actor is in use. The run log states the date of the copy, and a run served from a copy older than 45 days returns one free notice saying so.
How am I charged?
One event per licence returned. Notices are free.
Guides & use cases