Oregon Contractor License Leads
Pricing
$5.00 / 1,000 contractor licence records
Oregon Contractor License Leads
Oregon contractor business licence data from the official state registry. Filter by trade, city, county or expiry date, including licences expiring soon. No phone or email data.
Pricing
$5.00 / 1,000 contractor licence records
Rating
0.0
(0)
Developer
Yanai Ron
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Apify Actor that turns the official Oregon Building Codes Division contractor licence registry into clean, ready-to-use contractor leads (lead generation lists with trade names, DBAs, business addresses and licence expiry dates).
- Source: Building Codes Division - Active Contractor/Individual Licenses (public Socrata open dataset, ~45k active licences, updated by the state - no login, no scraping of HTML).
- Who it's for: insurance agents, warranty providers, tool/material suppliers, software vendors and service businesses that sell to licensed contractors.
What it does
- Pulls the live registry through Oregon's Socrata API (
lic_status = Active). - Filters by trade, city, county, state and licence expiry window.
- Classifies each record as a business or individual licence.
- Cleans and dedupes: one record per licence number, DBA preferred as the business name, expiry normalized to ISO date with a computed
daysUntilExpiration. - Privacy: individual records (journeymen, inspectors, trainees) have their street address removed; business records keep the published business address.
- Filters by licence expiry date to find licences expiring soon.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
professions | array | all | Electrical, Plumbing, Boiler, Certification, RV & Manufactured Dwellings, Prefab, Combo License, Elevator |
businessOnly | boolean | true | Exclude individual certifications |
expiringWithinDays | integer | - | Only licences expiring within N days |
city / county / state | string | - | Case-insensitive exact match |
mode | full / delta | full | Experimental: change tracking needs persistent storage and currently treats all records as new |
deltaDays | integer | 30 | Expiry window used in delta mode |
maxRecords | integer | 0 (no cap) |
Output
One dataset item per licence:
{"licenceNumber": "1875PB","businessName": "ACME ROOTER","registrantName": "ACME PLUMBING INC","dba": "ACME ROOTER","trade": "Plumbing","licenceType": "PB-Plumbing Contractor","recordType": "business","status": "Active","expirationDate": "2026-12-01","daysUntilExpiration": 53,"address": "123 MAIN ST","city": "PORTLAND","state": "OR","zip": "97201","county": "MULTNOMAH","isNewSinceLastRun": false,"sourceDataset": "Oregon Building Codes Division - Active Contractor/Individual Licenses"}
address is present on business records only.
Data quirks worth knowing
lic_statusisActivefor every row - the registry only lists active licences, so "status" filtering is really about the expiry window.expiration_dateis a text field (M/D/YYYY); ~8,400 rows have none. Date filtering happens in the Actor, not in SoQL.- The registry includes out-of-state licensees (~35k of ~45k rows are OR addresses). Use the
statefilter if you only want Oregon addresses. - ~1,000 of 45k rows carry a DBA; when present it becomes
businessName. - No phone/email in this dataset - the registry doesn't publish them.
Run locally
npm installnode src/run-local.js --professions Plumbing --state OR --expiring 90 --max 25npm test
Delta details
Delta mode is experimental. Change tracking needs persistent storage and currently treats all records as new under the Actor's default permissions. Filter by licence expiry date to find licences expiring soon.
Keywords
Oregon contractor leads, contractor lead generation, licensed contractor list, contractor license database, electrical contractor leads, plumbing contractor leads, trade names (DBA), Oregon Building Codes Division, CCB-style contractor lists, B2B leads for the construction trades.