Home › Funding, grants and compliance › Contractor License Lookup and Verification API (6 States)
Verify and monitor contractor and trade licenses from official state open-data portals (WA, TX, CT, CO, OR, DE): status, expiration, address and phone where published. Filter by trade, city, ZIP, name or number.
| Field | Name | Required | What it does |
|---|---|---|---|
mode | Mode | no | search: find licenses by trade, location, name or number. verify: one output row per item in the verify list, with found / not found. new_licenses: licenses issued or registered... |
states | States | no | Which state datasets to query. Empty = all 6 states. Oregon has two sources (CCB construction contractors and BCD electrical, plumbing, boiler and elevator licenses). |
trade | Trade | no | Normalized trade. States whose license types cannot express this trade are skipped (listed in the OUTPUT summary). Leave empty for all trades. |
city | City | no | Exact city name as published (case-insensitive), for example Seattle or Austin. |
zip | ZIP code | no | ZIP or ZIP prefix, for example 98101 or 981. |
county | County | no | County name without the word County, for example Harris. Only Texas and Oregon publish county; other states are skipped when this is set. |
maxResults | Max results | no | Maximum license records to return across all states (split fairly across states first, then topped up). Ignored in verify mode, which returns one row per input. |
businessName | Business name keywords | no | One keyword per line. A record matches if any keyword matches; within a keyword every word must appear in the business or DBA name. Example: smith roofing. |
personName | Person name keywords | no | One per line. Matches licensee or principal / responsible person names (word order does not matter). Example: john smith. |
licenseNumber | License number | no | Exact license number, for example 4WALLWD781M5 (WA), HIC.0702746 (CT), 100836 (CO). |
activeOnly | Active licenses only | no | Keep only licenses whose status is active AND whose expiration date has not passed. |
contractorsOnly | Contractor licenses only | no | Keep only business / contractor-level licenses and drop individual journeyman, apprentice and technician licenses. |
daysBack | Days back (new_licenses mode) | no | new_licenses mode: licenses issued in the last N days. |
expiringWithinDays | Expiring-soon window (days) | no | isExpiringSoon is true when the license expires within this many days. |
One row per result. These are the 36 fields declared in the actor's dataset schema (field list from the schema, not a sample run).
| Field | Type | Meaning |
|---|---|---|
state | string | |
source | string | |
licenseNumber | string | |
licenseType | string | |
licenseTypeCode | string | |
trade | string | |
trades | array | |
tradeBasis | string | |
specialties | array | |
businessName | string | |
dbaName | string | |
personName | string | |
holderType | string | |
entityType | string | |
isContractorLicense | boolean | |
status | string | |
isActive | boolean | |
issueDate | string | |
effectiveDate | string | |
expirationDate | string | |
daysToExpiration | integer | |
renewalRiskScore | integer | |
isExpiringSoon | boolean | |
address | string | |
city | string | |
addressState | string | |
zip | string | |
county | string | |
phone | string | |
verifyUrl | string | |
officialLookupUrl | string | |
sourceRecordUrl | string | |
sourceDataset | string | |
sourceId | string | |
details | object | |
retrievedAt | string |
Public data only, no login. Fields a source does not publish come back empty rather than guessed. Coverage and freshness follow the underlying public source.
Pay on Apify, no subscription: $0.002 per license record (pay per event). The live price is on the actor page.
Disclosure: we build and maintain this actor.