← Health board

CCB

Oregon Contractor License Lookup & Verify (CCB)

Verify any Oregon contractor by license number or name — status, bond, insurance, expiration & RMI — from the official CCB registry.

100%golden-diff pass
Run it on Apify verified nightly

Verification

100%golden-diff success
332canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
statestring|null
license_numberstring|null
business_namestring|null
person_namestring|null
license_typestring|null
statusstring|null
issue_datestring|null
expiration_datestring|null
citystring|null
countystring|null
addressstring|null
zip_codestring|null
phonestring|null
bond_amountstring|null
bond_companystring|null
insurance_companystring|null
matched_bystring|null
source_urlstring|null
scraped_atstring|null

Sample row

{
  "state": "OR",
  "license_number": "100215",
  "business_name": "BRUCE HUIE",
  "person_name": "BRUCE HUIE",
  "license_type": "RGC",
  "status": "Active",
  "issue_date": "06/20/1994",
  "expiration_date": "02/06/2028",
  "bond_amount": "25000",
  "bond_company": "WESTERN SURETY COMPANY",
  "insurance_company": "SCOTTSDALE INDEMNITY CO",
  "city": "BROOKINGS",
  "county": "Curry",
  "address": "PO BOX 543",
  "zip_code": "97415",
  "phone": "5412150829",
  "matched_by": "license_number",
  "source_url": "https://search.ccb.state.or.us/search/"
}

Inputs

FieldTypeReqDefaultDescription
query string no "CONSTRUCTION" An Oregon CCB license number or business name. Searches by exact license number and by business-name substring; the RMI name is returned on the row but is not searchable.
queries array no ["CONSTRUCTION"] Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'Search query'. Combined with 'Search query' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted.
maxResults integer no 50 Cap on the number of records returned PER ENTRY, not per run — so a batch cannot silently return only the first 50 rows overall and read as 'the rest don't exist'. This is now honoured end to end - the Socrata query is issued for this many rows.
proxyConfiguration object no {"useApifyProxy":false} Optional. The Oregon CCB open-data API is reachable directly; a proxy is not needed.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 100 verified license records at $0.004/result ≈ $0.40.

FAQ

Where does the data come from?

The official Oregon Construction Contractors Board (CCB) 'Active Licenses' open-data registry — public, authoritative license data.

What can I search by?

A CCB license number (exact) or a business name (substring). The RMI (responsible managing individual) is returned on each row but is not searchable. Both return the matching licenses, deduped by license number.

Do I get bond and insurance details?

Yes — bond company and amount and the liability insurance carrier are included, alongside license type, dates, RMI, and location.

How am I charged?

Pay-per-result — per license match returned. No charge for searches with no results.

Is this personal data?

It's public professional-license data (business and license records as the CCB publishes them); we add no personal/PII enrichment.

How current is it?

It reflects the CCB open-data registry, which the state refreshes frequently.

Guides & use cases

Related actors