Oregon Contractor Directory & Leads Scraper (CCB) avatar

Oregon Contractor Directory & Leads Scraper (CCB)

Pricing

$0.002 / contractor records

Go to Apify Store
Oregon Contractor Directory & Leads Scraper (CCB)

Oregon Contractor Directory & Leads Scraper (CCB)

Pull every CCB-licensed contractor in any Oregon county — business name, license type, RMI, bond, insurance, address, and phone — direct from the official state open-data API.

Pricing

$0.002 / contractor records

Rating

0.0

(0)

Developer

ScrapeBench

ScrapeBench

Maintained by Community

Actor stats

0

Bookmarked

62

Total users

8

Monthly active users

4 days ago

Last modified

Categories

Features

Limited permissions

Share

Pain points

  • The CCB online portal looks up one contractor at a time; the county roster you actually want has to be assembled from the open data and filtered.
  • Building a county-scoped contractor prospect list from the CCB website requires hundreds of individual searches and hours of manual copy-paste.
  • Sales teams, GCs, and insurance agents need structured, county-filtered contact data — not a slow per-lookup search form.

What we solve

  • Pull every CCB-licensed contractor in any Oregon county in a single run — no per-record search, no manual export.
  • Returns license number, type code, endorsement description, business name, RMI, address, phone, bond, and insurance, structured and ready to import.
  • Filter by endorsement keyword (e.g. 'Residential General Contractor', 'Electrical', 'Plumbing') to narrow the list before it lands in your CRM.

Summary

Browse the complete roster of Oregon Construction Contractors Board (CCB) licensed contractors in any county — just supply a county name and get back every active licensee on record: CCB license number, type code, endorsement description (e.g. Residential General Contractor, Commercial Specialty Contractor), business name, Responsible Managing Individual (RMI), street address, phone, bond company and amount, and insurance company and amount. Data comes straight from the official Oregon open-data Socrata API (data.oregon.gov, dataset g77e-6bhs) — authoritative, up-to-date, no scraping fees beyond the flat per-record PPE charge. Optional endorsement-type filter narrows results to a specific trade before they hit your dataset. Ideal for building targeted contractor prospect lists, compliance coverage maps, and territory-scoped outreach campaigns. Have a licence number or a business name instead? Put it in 'Licence numbers or business names' and the same run looks it up statewide (exact licence number, business-name contains), with bond, insurance and RMI.

Who it's for

  • Sales and BD teams building county-scoped contractor prospect lists for tools, materials, or subcontracting services
  • Insurance and bonding agents prospecting for contractor accounts in an Oregon county territory
  • General contractors and developers building subcontractor shortlists by county and trade endorsement
  • Compliance teams and market researchers mapping licensed contractor coverage across Oregon counties

How to use

This actor does two jobs. Run it, then collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API).

Get a list (export): no names, just filters; returns the whole matching list.

{
"counties": [
"Multnomah"
],
"licenseType": "Residential General Contractor",
"maxResults": 200
}

Check specific firms (lookup): put company names or licence numbers in queries; Inputs below says how each is matched.

{
"queries": [
"CONSTRUCTION"
],
"maxResults": 25
}

See Inputs below for every available field.

What you get

One row per record:

FieldDescription
stateAlways 'OR' for this actor
countyOregon county of the contractor's business address
license_numberCCB license number
license_typeCCB license type code (e.g. RSC, RGC, CGC, LBPR)
license_endorsementHuman-readable CCB endorsement description (e.g. Residential General Contractor, Commercial Specialty Contractor)
business_nameLicensed business or entity name
rmi_nameResponsible Managing Individual (RMI) name (when on file)
addressBusiness street address
cityBusiness city
zip_codeBusiness ZIP code
phoneBusiness phone number (when published)
issue_dateOriginal CCB registration date (MM/DD/YYYY)
expiration_dateLicense expiration date (MM/DD/YYYY)
bond_amountSurety bond amount in USD (when on file)
bond_companySurety bond provider name (when on file)
insurance_amountLiability insurance coverage amount in USD (when on file)
insurance_companyLiability insurance provider name (when on file)
source_urlLink to the Oregon CCB contractor search

Sample:

{
"state": "OR",
"county": "Multnomah",
"license_number": "100260",
"license_type": "RSC",
"license_endorsement": "Residential Specialty Contractor",
"business_name": "THE FOXGLOVED PAINTERS & DESIGNERS INC",
"rmi_name": "CICELY W KEIRNAN",
"address": "8737 NE THOMPSON ST",
"city": "PORTLAND",
"zip_code": "97220",
"phone": "5032552327",
"issue_date": "06/30/1994",
"expiration_date": "05/14/2027",
"bond_amount": "20000",
"bond_company": "WESTERN SURETY COMPANY",
"insurance_amount": "1000000",
"insurance_company": "TWIN CITY FIRE INS COMPANY",
"source_url": "https://search.ccb.state.or.us/search/"
}

Inputs

FieldRequiredTypeDefaultDescription
modenostring"auto"auto (default): a licence number or business name below runs a lookup, none runs the county export. lookup: find licences by CCB licence number (exact) or business name (contains). export: counties and licence types, names ignored.
queriesnoarray[]Look up many in ONE run: each value is matched as an exact CCB licence number and as a business-name substring. Rows come back in the lookup's shape (bond, insurance, RMI as person_name).
querynostring—One value; same as the list above.
countynostring"Multnomah"Oregon county name to retrieve contractors for (e.g. 'Multnomah', 'Lane County', 'Washington'). Case, spacing and a trailing 'County' do not matter. If it is missing or is not an Oregon county, the run returns the free county list instead of failing, so you can see the exact names.
countiesnoarray["Multnomah"]Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'County'. Combined with 'County' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted.
licenseTypenostring—Optional partial match against the CCB endorsement description (e.g. 'Residential General Contractor', 'Electrical', 'Plumbing'). Leave blank for all license types.
maxResultsnointeger—Cap on the number of records returned PER ENTRY, not per run — so a batch cannot silently return only the first 500 rows overall and read as 'the rest don't exist'. Unset: 500 per county; 50 per lookup value.
licenseTypesnoarray[]Several endorsement words, any of them, e.g. 'Residential', 'Commercial'. Same as 'License type' for one.
statusesnoarray[]The CCB open-data set lists ACTIVE licences only: 'active' or 'all' (the same rows). Any other status returns a free row saying so.
statusnostring—One status; same as Statuses.
expiresAfternostring—Only licences expiring on or after this date (YYYY-MM-DD). With 'Expires on or before' it lists licences due for renewal in a window. Works on exports and lookups.
expiresBeforenostring—Only licences expiring on or before this date (YYYY-MM-DD).
proxyConfigurationnoobject{"useApifyProxy": false}Optional. data.oregon.gov is reachable directly; a proxy is not needed.

Pricing (Pay Per Event)

You pay per result (dataset-item) — no charge for empty runs. Example: 500 contractor records at $0.002/result ≈ $1.00.

Illustrative — the final per-record price is set at publish time. Apify platform usage (compute) is billed separately per your plan.

Use cases

  • Outbound lead generation — pull every active Residential General Contractor or specialty sub in Multnomah or Washington County, enrich with phone and address, and load into your CRM for cold outreach.
  • Territory mapping — build a full picture of licensed trade coverage in a county for market-entry research or competitive analysis.
  • Subcontractor discovery — find every licensed contractor with a specific endorsement (plumbing, electrical, roofing) in a county before bidding a project.
  • Insurance and bonding prospecting — export the county roster with bond and insurance details to identify contractors approaching renewal or with coverage gaps.

Why this actor

  • Direct from the official CCB open-data API (data.oregon.gov) — authoritative state data, not a third-party copy.
  • County-scoped in one run — pull the full Multnomah, Lane, or Washington County roster without per-record searching.
  • Bond and insurance fields included — CCB data includes surety bond company and amount plus liability insurance company and amount for every contractor that has filed them.
  • Endorsement-type filter narrows results before they hit your dataset — residential GC only, electrical only, or the full mix.
  • Pay per record; no results, no charge.

Limitations & updates

Covers Oregon CCB-licensed contractors only (the 'CCB Active Licenses' dataset). The dataset reflects active licenses as published; recently expired or cancelled licenses may lag by a few days. Bond, insurance, and RMI fields are null when not on file with CCB. County filter matches the business address county; licensees whose mailing address differs from their business address may not appear in the expected county. The endorsement-type filter is a substring match — broad terms like 'Contractor' match many endorsements. A lookup matches the CCB business name (contains) or licence number (exact); the RMI name is returned but cannot be searched, and each value is capped at 50 rows unless you set maxResults.

FAQ

Where does the data come from?

The official Oregon Construction Contractors Board (CCB) open-data registry, published on data.oregon.gov (Socrata, dataset g77e-6bhs — 'CCB Active Licenses'). Public, authoritative, and refreshed regularly.

Lookup or export — which do I use?

Lookup when you have CCB licence numbers or business names: put them in 'Licence numbers or business names' (statewide, exact licence number or name contains). Export when you want a county list: leave that empty and pick counties and licence types. 'Mode' can force one or the other; the default, auto, decides by whether you gave names or numbers.

What does the licenseType filter match?

It does a case-insensitive substring match against the CCB endorsement description field (e.g. 'Residential General Contractor', 'Commercial Specialty Contractor', 'Lead Based Paint Renovation Contractor'). Pass a partial string like 'General' or 'Electrical' to catch multiple related endorsements.

How many records does a typical county run return?

Counted on the live dataset 2026-07-28: Multnomah ~6,500, Washington ~5,400, Lane ~3,800. Smaller rural counties may have a few hundred. The actor pages through all results automatically.

What are the license type codes?

Common codes include RGC (Residential General Contractor), RSC (Residential Specialty Contractor), CGC (Commercial General Contractor), CSC (Commercial Specialty Contractor), LBPR (Lead-Based Paint Renovation Contractor), and others. The license_endorsement field gives the full human-readable description for each.

How do I find the right county name?

Use title-case Oregon county names: Multnomah, Lane, Washington, Clackamas, Marion, Jackson, Deschutes, etc. The actor normalizes case, so 'multnomah' and 'MULTNOMAH' both work.

How am I charged?

Pay per record returned — one PPE event per dataset item. Runs with no results incur no charge.

Is this personal data?

It's public professional-license data (business and license records as CCB publishes them); no personal/PII enrichment is added beyond what the state publishes.

How current is the data?

The CCB open-data export is refreshed regularly on data.oregon.gov; records reflect the most recently published snapshot. Expect up to a few days of lag for brand-new registrations.

Which actor to choose

Part of the contractor-data suite — pick the one that fits your goal:

  • Washington Contractor Directory & Leads Scraper (L&I) — You need the same county-level directory for Washington State contractors (L&I).
  • Texas Contractor Directory & Leads Scraper (TDLR) — You need a county-scoped roster of Texas TDLR-licensed contractors.
  • US Contractor License Lookup & List Scraper (State Boards) — You don't know the state, or want the same contractor checked across many states in one run.
  • Utah Contractor Directory & Leads Scraper (DOPL) — You need contractors in a Utah county or city, with phone and email, from DOPL's opt-in Construction Business Registry.
  • Nevada Contractor License Lookup & Verify (NSCB) — You need the same county-by-trade contractor list for Nevada, with phone and street address.

Guides & use cases

Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:

More actors, coverage and nightly verification results: scrapebench.dev

Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

"List active contractors in Multnomah County, Oregon with their bond and insurance details."

Oregon's CCB publishes the bond amount and the insurance carrier per licence, so rows carry more than name and status. Runs started this way bill exactly like any other run.

Data & lawful use

This actor collects publicly available information that the Oregon Construction Contractors Board publishes for public lookup — licence records, business listings and the contact details professionals list there. Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any names, phone numbers and emails in your results as personal data.

When you run this actor, you decide what is collected and what it is used for, so you are the controller of that data and we act only as your processor (Apify Standard Actor Contract). You need a lawful basis for your use, must honour opt-out and deletion requests, and must follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar). Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or for anything the source's own terms forbid.

Your results are stored in your own Apify account. We don't keep a copy of your results and don't sell or share them.

Disclaimer

This is an independent tool. It is not affiliated with, endorsed by or sponsored by the Oregon Construction Contractors Board. Names and marks are used only to describe the data source. Records are provided as published by the source and may be out of date or incomplete. For anything consequential (hiring, a permit, a legal decision), confirm the record with the issuing agency. You are responsible for making sure your use complies with applicable law and the source's terms.

Need help?

Open an issue on this actor's Issues tab and we'll respond there. Bug reports, missing fields and feature requests are all welcome. Guides and examples: scrapebench.dev.

If you are a person named in this data and want your record removed from our copy, email apify-help@scrapebench.dev; the source agency remains the official record.

Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: Apify Console → Settings → Security → Share run data with developers. It lets us see exactly what went wrong and keep improving the actor.

If this actor saved you time, a short review on its Store page helps other buyers find it.