Oregon Contractor License Scraper — CCB
Pricing
from $2.50 / 1,000 results
Oregon Contractor License Scraper — CCB
Extract licensed contractors from the Oregon Construction Contractors Board (CCB). Get license number, business name, phone, address, license type, bond & liability insurance details, RMI and expiry date — for B2B leads, insurance, compliance & market research.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Extract licensed contractors from the Oregon Construction Contractors Board (CCB) — the official registry of licensed contractors in Oregon. Filter by county and license type, and get clean records for every contractor: license number, business name, phone, address, license type, bond details, liability insurance, responsible managing individual (RMI), endorsements and expiry date.
No code, no login. Run it from the Apify Console, on a schedule, or from your own app via the API. Results download as JSON, CSV, Excel, HTML or XML, or sync straight into Google Sheets, Airtable, HubSpot, Make, Zapier and n8n.
🏗️ Built for B2B lead generation, compliance & insurance. Every record carries the license, phone, bond and liability-insurance details — a rare combination that makes this ideal for insurance, bonding, supplier and compliance use cases.
📋 What this scraper does
The Oregon CCB licenses every construction contractor operating in the state (~56,000 licensees). This actor turns that public registry into a clean, structured dataset you can filter, analyse or feed into a CRM.
Pick your counties and license types, and it will:
- ✅ Collect every matching licensed contractor
- ✅ Return the license number, type and status (Active / Expired)
- ✅ Capture the business name, phone and full address
- ✅ Include bond company + amount and liability insurance company + amount
- ✅ Add the Responsible Managing Individual (RMI) and endorsements
- ✅ Report license and registration dates
- ✅ Filter to active licenses only and by license type
- ✅ De-duplicate every contractor by license number
⭐ Why choose this scraper
- Bond + insurance details. Most state registries don't publish these — Oregon does, and this actor captures them. Perfect for insurance and surety products.
- Official license data. Straight from the Oregon Construction Contractors Board.
- Ready-to-use leads. Business name, phone and address for every licensed contractor.
- Trade & region targeting. Filter by license type (residential/commercial/specialty) and county.
- Fast and complete. The entire state in a single run — no anti-bot, no slow browser.
💡 Popular use cases
| Use case | How this scraper helps |
|---|---|
| Insurance & bonding | Reach contractors by type, bond and insurance limits for liability, WC and surety products. |
| B2B lead generation | Build targeted lists of licensed contractors for suppliers, SaaS and services. |
| License & compliance verification | Check license number, status, expiry, bond and insurance for due diligence. |
| Construction market research | Measure contractors, types and coverage across Oregon counties. |
| Supplier & distributor sales | Find contractors by type and county to sell materials and equipment. |
| Data products & dashboards | Feed a clean licensed-contractor feed into BI tools or a database. |
🚀 Quick start
- (Optional) Enter one or more Counties (e.g.
Multnomah,Washington,Lane). - (Optional) Pick License types (e.g.
RGC — Residential General Contractor). - Keep Active licenses only on for outreach.
- Set Max contractors and click Start.
- Download your data from the Storage → Dataset tab.
⚙️ Input
| Field | Type | Description |
|---|---|---|
| Counties | array | Oregon counties, e.g. Multnomah, Washington, Clackamas, Lane. Empty = all of Oregon. |
| License types | multi-select | Filter by CCB license type (RGC, RSC, CGC1/2, CSC1/2, LBPR, ...). Empty = all. |
| Active licenses only | boolean | Keep only non-expired licenses (recommended). |
| Max contractors | integer | Cap on total contractors. 0 = all (~56,000). |
| Proxy | object | Optional — the open-data API has no anti-bot. |
Example 1 — Residential general contractors in Portland metro
{"counties": ["Multnomah", "Washington", "Clackamas"],"licenseTypes": ["RGC"],"activeOnly": true,"maxItems": 2000}
Example 2 — All commercial contractors statewide
{"licenseTypes": ["CGC1", "CGC2", "CSC1", "CSC2"],"activeOnly": true,"maxItems": 5000}
Example 3 — Everything in Lane County
{"counties": ["Lane"],"activeOnly": true,"maxItems": 1000}
📦 Output
Each contractor becomes one dataset record:
{"licenseNumber": "100310","businessName": "HABITAT FOR HUMANITY PORTLAND METRO EAST","licenseType": "RGC","status": "Active","phone": "9713034180","address": "...","city": "PORTLAND","state": "OR","zip": "97211","county": "Multnomah","rmiName": "JESSE GUINN WITHERS","bondCompany": "TRAVELERS CASUALTY & SURETY CO OF AMERICA","bondAmount": "25000","bondExpires": "07/30/2026","insuranceCompany": "ACE AMERICAN INSURANCE CO","insuranceAmount": "1000000","insuranceExpires": "07/30/2026","endorsements": "Residential General Contractor","licenseExpires": "07/30/2026","originalRegistration": "06/20/1994","scrapedAt": "2026-07-03T00:00:00.000Z"}
Output fields
| Field | Description |
|---|---|
licenseNumber | CCB license number (used for de-duplication). |
businessName | Business / licensee name. |
licenseType | License type (RGC, RSC, CGC1/2, ...). |
status | Active or Expired (by license expiry date). |
phone / address / city / state / zip | Contact and location. |
county | Oregon county. |
rmiName | Responsible Managing Individual. |
bondCompany / bondAmount / bondExpires | Surety bond details. |
insuranceCompany / insuranceAmount / insuranceExpires | Liability insurance details. |
endorsements | License endorsements. |
licenseExpires / originalRegistration | License dates. |
scrapedAt | Extraction timestamp. |
🏗️ License types
RGC Residential General Contractor · RSC Residential Specialty Contractor · CGC1/CGC2 Commercial General Contractor (Level 1/2) · CSC1/CSC2 Commercial Specialty Contractor (Level 1/2) · LBPR Lead-Based Paint Renovator · RLC Residential Limited Contractor · RD/CD Developer · plus locksmith, home inspector, home services and energy-score endorsements.
🗺️ Counties
All 36 Oregon counties are supported — e.g. Multnomah (Portland), Washington, Clackamas, Lane (Eugene), Marion (Salem), Deschutes (Bend), Jackson (Medford). Leave empty for the whole state.
🧭 Tips for best results
- Use bond & insurance fields — they're the differentiator for insurance and surety outreach.
- Filter by license type to target residential vs commercial contractors.
- Keep
activeOnlyon for outreach; turn it off for full historical coverage. - Leave counties empty for the whole state in one run.
- Schedule runs to track new licenses, renewals and expirations over time.
🔌 Integrations & export
- Download formats: JSON, CSV, Excel, HTML, XML, RSS.
- CRM / Sheets / Airtable / Make / Zapier / n8n: push results automatically.
- API: run and fetch data with the Apify API or the JS / Python clients.
- Scheduling: run on a schedule to keep an always-fresh contractor database.
❓ FAQ
Do I need a CCB account or API key? No. You only need an Apify account.
Which contractors are covered? Every contractor licensed by the Oregon Construction Contractors Board (~56,000).
Does it include bond and insurance? Yes — bond company/amount and liability insurance company/amount are included, which most states don't publish.
Is email included? No — the CCB registry publishes phone and address, not email. Phone is on nearly every record.
Does it return duplicates? No. Contractors are de-duplicated by license number.
⚖️ Legal & responsible use
This actor collects publicly available license information that the Oregon Construction Contractors Board publishes as open data. It does not log in or access private data. Respect the Board's terms of use and applicable law, and use the data for lawful purposes such as license verification, compliance, insurance, market research and B2B outreach.
🛟 Support
Need an extra field or hit an issue? Open a ticket from the actor's Issues tab with your input configuration.
Happy sourcing! 🏗️