# Oregon Electrical & Plumbing Contractor List - BCD Licenses (`loomwise/oregon-electrical-plumbing-contractors`) Actor

Oregon electrical and plumbing contractor list: about 4,900 licensed electrical, plumbing, HVAC/R and solar businesses from Oregon BCD.

- **URL**: https://apify.com/loomwise/oregon-electrical-plumbing-contractors.md
- **Developed by:** [Loomwise](https://apify.com/loomwise) (community)
- **Categories:** Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Oregon Electrical & Plumbing Contractor List: licensed trade contractors from BCD

**About 4,900 licensed Oregon electrical, plumbing, HVAC/R, limited energy and solar contractor businesses.** Each row has the business name, license type and number, expiration date, county, city, ZIP and address, from the Oregon Building Codes Division's official open data.

**Sample output** (real rows, a few of the columns):

| `businessName` | `licenseType` | `trade` | `status` | `expirationDate` |
|---|---|---|---|---|
| FIRST ELECTRIC CO | Electrical Contractor | Electrical | Active | 2029-07-01 |
| CRAFTWORK PLUMBING INC | Plumbing Contractor | Plumbing | Active | 2029-07-01 |
| BENTLEY ELECTRIC INC | Electrical Contractor | Electrical | Active | 2029-07-01 |

> **Oregon electrical and plumbing contractor list, ready as a spreadsheet.** Set your filters, press **Start**, and download the results as Excel or CSV when the run finishes (usually seconds). No coding needed, and you can schedule it daily or weekly.
>
> **Free to try: Apify's free plan ($5/month credit, no credit card) covers about 1,600 records a month.** After that it's $3 per 1,000 records. [See a free sample CSV and the full field list](https://loomwise.app/data/oregon-electrical-plumbing-contractor-leads/?utm_source=apify\&utm_medium=readme).

### Quick start: 3 ready-made searches

Press **Try for free**, open the **JSON** view of the input form, paste one of these and press **Start**. Results appear in the **Output** tab in seconds and export to Excel or CSV.

**Every Oregon electrical contractor business** (up to 5,000 rows, so at most $15.00)

```json
{"licenseTypes": ["C"], "oregonOnly": true, "maxResults": 5000}
```

**Plumbing and HVAC/R contractors in Portland metro** (up to 2,000 rows, so at most $6.00)

```json
{"licenseTypes": ["PB", "LHR"], "counties": ["MULTNOMAH", "WASHINGTON", "CLACKAMAS"], "maxResults": 2000}
```

**Solar (limited renewable energy) contractors** (up to 1,000 rows, so at most $3.00)

```json
{"licenseTypes": ["CLR"], "maxResults": 1000}
```

Get **Oregon licensed electrical, plumbing, HVAC/R, limited energy and solar contractor businesses** from the official **Oregon Building Codes Division (BCD) "Active Contractor/Individual Licenses"** open data on data.oregon.gov (public domain). About **4,900 active contractor business licenses**: plumbing contractors, electrical contractors, limited maintenance HVAC/R, limited energy (low voltage, alarm, data), renewable energy (solar), boiler, pump, sign and elevator contractors. About 4,000 are based in Oregon; the rest are out-of-state companies licensed to work there.

These BCD trade licenses are separate from the general Construction Contractors Board (CCB) license, so this list complements our [Oregon Contractor Licenses](https://apify.com/loomwise/oregon-contractor-licenses) Actor.

Each result has the business name, DBA, BCD license number, license type, trade, **expiration date**, county, city, state, ZIP and business street address.

No browser, no proxies, no login. Runs take seconds.

### What's in the Oregon electrical and plumbing contractor list?

- Business name and DBA
- BCD license number, type and trade
- Status and expiration date
- County, city, state, ZIP and address
- Link to the official verification page

**Source:** Oregon Building Codes Division open data (data.oregon.gov).\
**How fresh is it?** Oregon BCD refreshes the dataset regularly; each result includes a retrievedAt timestamp.

#### Sample rows (real output, a few columns)

| `businessName` | `licenseType` | `trade` | `status` | `expirationDate` | `county` | `city` | `state` | `zipCode` |
|---|---|---|---|---|---|---|---|---|
| FIRST ELECTRIC CO | Electrical Contractor | Electrical | Active | 2029-07-01 | CLACKAMAS | SANDY | OR | 97055 |
| CRAFTWORK PLUMBING INC | Plumbing Contractor | Plumbing | Active | 2029-07-01 | WASHINGTON | PORTLAND | OR | 97298 |
| BENTLEY ELECTRIC INC | Electrical Contractor | Electrical | Active | 2029-07-01 | WASHINGTON | GASTON | OR | 97119 |

[Download a free sample CSV](https://loomwise.app/data/oregon-electrical-plumbing-contractor-leads/?utm_source=apify\&utm_medium=readme) to see the format in Excel.

### Who uses this

- **Electrical, plumbing and HVAC supply houses** building Portland, Salem, Eugene and Bend territory lists.
- **Solar and battery installers and distributors** finding licensed renewable energy and electrical contractors.
- **Insurance, surety bond and CE providers** targeting licenses by **expiration date**.
- **General contractors** finding licensed electrical and plumbing subs by county.
- **Field-service software** sales teams.

### Privacy by design

- **Business licenses only.** Journeyman, supervising electrician, inspector and other individual licenses are never offered.
- Rows whose holder and DBA are both a person's name are dropped. Street address is included only when the license holder is a registered business.

### Input

| Field | What it does | Default |
|---|---|---|
| `licenseTypes` | `PB` plumbing, `C` electrical, `LHR` HVAC/R, `CLE` limited energy, `CLR` renewable energy, `BB`, `CPI`, `CLS`, `ECM`... | PB, C, LHR, CLE, CLR |
| `oregonOnly` | Oregon-based businesses only | false |
| `counties`, `cities`, `zipCodes` | e.g. `Multnomah`, `Bend`, `972` | none |
| `keywords` | Name contains, e.g. `solar` | none |
| `expiresFrom` / `expiresTo` | Expiration window (YYYY-MM-DD) | none |
| `maxResults` | Cap | 100 |

### Output (example)

```json
{
  "businessName": "PATTERSON PLBG CO INC", "licenseNumber": "B99-2082", "licenseTypeCode": "BB",
  "licenseType": "Boiler Business", "trade": "Boiler", "status": "Active", "expirationDate": "2029-07-01",
  "county": "JACKSON", "city": "MEDFORD", "state": "OR", "zipCode": "97501", "businessAddress": "2086 LARS WAY"
}
```

### Run it on a schedule

Schedule it weekly and send results to Google Sheets, HubSpot, Slack or email with Apify integrations. It also works from AI assistants through the Apify MCP server.

### FAQ

**Is this legal to use?** Yes. The State of Oregon publishes this dataset on data.oregon.gov as public domain.

**How fresh is it?** BCD refreshes the dataset regularly; each result includes `retrievedAt`.

*Not affiliated with or endorsed by the Oregon Building Codes Division.*

### Input examples

Copy any of these into the JSON input tab, or start from the prefilled defaults (they return results in seconds).

**Oregon Electrical Contractors**

```json
{"licenseTypes": ["C"], "oregonOnly": true, "maxResults": 2000}
```

**Oregon Plumbing Contractors**

```json
{"licenseTypes": ["PB"], "oregonOnly": true, "maxResults": 2500}
```

**Portland Electrical & Plumbing Contractors**

```json
{"licenseTypes": ["C", "PB"], "counties": ["Multnomah", "Washington", "Clackamas"], "maxResults": 2000}
```

### Common questions about the Oregon electrical and plumbing contractor list

**How do I get the Oregon electrical and plumbing contractor list without coding?** Press **Try for free**, adjust the filters (or keep the defaults), press **Start**, then open the **Storage** tab and export the results as Excel, CSV or JSON. A run usually finishes in seconds.

**How much does it cost?** Free to try: Apify's free plan ($5/month credit, no credit card) covers about 1,600 records a month. After that it is $3.00 per 1,000 results (pay per result), plus a fraction of a cent per run. You only pay for rows you get.

**Can I get new records automatically every day or week?** Yes. Save your filters as a task and add a **Schedule** (daily or weekly). Connect Google Sheets, Slack, email, Zapier, Make or n8n under **Integrations** to receive each new batch.

**Can I call it from code or an AI agent?** Yes. Use the Apify API or the Python/JavaScript clients with the Actor ID shown above, or connect it to Claude, ChatGPT or Cursor through the Apify MCP server.

**Does it include personal data?** The output is business records (company names, business addresses and, where the source publishes them, business phone numbers) from an official public dataset. Records for individual people are left out where the source allows.

### More public-data lead tools from Loomwise

- [virginia-contractor-licenses](https://apify.com/loomwise/virginia-contractor-licenses): Virginia DPOR Class A, B and C contractor license lookup and list
- [colorado-electrical-plumbing-contractors](https://apify.com/loomwise/colorado-electrical-plumbing-contractors): Colorado electrical and plumbing contractor list and DORA license lookup: 7,800+ registered contractor businesses, new registrations and bulk lookup
- [illinois-idfpr-business-licenses](https://apify.com/loomwise/illinois-idfpr-business-licenses): Illinois IDFPR license lookup and list: licensed roofing contractors, design firms, home inspectors and other businesses, with new-license leads and bulk license lookup
- [us-new-business-filings](https://apify.com/loomwise/us-new-business-filings): All states in one run: new business filings and new LLCs from 17 official sources in 13 states (FL, TX, OR, CO, NY, CT, DE, CA, IL, PA, WA, VA, LA), $1.50 per 1,000
- [us-contractor-licenses](https://apify.com/loomwise/us-contractor-licenses): All states in one run: contractor license search across 13 official sources in 9 states (CA, WA, OR, TX, NY incl. NYC DOB, MD, TN, OH, CO), $1.50 per 1,000
- [florida-new-business-filings](https://apify.com/loomwise/florida-new-business-filings): New Florida LLCs and corporations every business day from official Sunbiz data
- [california-contractor-licenses](https://apify.com/loomwise/california-contractor-licenses): California CSLB contractor license list: 120,000+ licensed businesses with workers comp and bond
- [fmcsa-new-trucking-companies](https://apify.com/loomwise/fmcsa-new-trucking-companies): New trucking companies from FMCSA: new USDOT/MC carriers with fleet size and phone
- [federal-opportunities](https://apify.com/loomwise/federal-opportunities): SAM.gov federal contract opportunities and Grants.gov grants (no API key)
- [federal-contract-awards](https://apify.com/loomwise/federal-contract-awards): Federal contract awards from FPDS: who just won government contracts, with amount, agency, NAICS, set-aside and the winner's business address and phone
- [sec-form-d-funding-leads](https://apify.com/loomwise/sec-form-d-funding-leads): SEC Form D filings: newly funded startups and private companies with amount raised, every business day
- [city-building-permits](https://apify.com/loomwise/city-building-permits): Building permits from 50 US cities and counties (contractor, solar, roofing, ADU leads)
- [new-york-contractor-registry](https://apify.com/loomwise/new-york-contractor-registry): Newly registered New York State contractors with compliance flags
- [wa-contractor-licenses](https://apify.com/loomwise/wa-contractor-licenses): Washington State L\&I contractor licenses, new registrations daily
- [oregon-contractor-licenses](https://apify.com/loomwise/oregon-contractor-licenses): Oregon CCB contractor licenses with bond and insurance details
- [connecticut-business-licenses](https://apify.com/loomwise/connecticut-business-licenses): Connecticut business and contractor credentials (new licenses, renewals)
- [texas-contractor-licenses](https://apify.com/loomwise/texas-contractor-licenses): Texas TDLR A/C (HVAC) and electrical contractor licenses
- [texas-new-business-leads](https://apify.com/loomwise/texas-new-business-leads): New Texas businesses from Comptroller sales tax permits
- [colorado-new-business-filings](https://apify.com/loomwise/colorado-new-business-filings): New Colorado LLCs and corporations from the Secretary of State, daily
- [new-york-new-business-filings](https://apify.com/loomwise/new-york-new-business-filings): New New York LLCs and corporations from the Department of State, daily
- [connecticut-new-business-registrations](https://apify.com/loomwise/connecticut-new-business-registrations): New Connecticut businesses with NAICS industry codes, daily
- [california-new-business-leads](https://apify.com/loomwise/california-new-business-leads): New California businesses in Los Angeles and San Francisco with NAICS codes
- [illinois-chicago-new-business-licenses](https://apify.com/loomwise/illinois-chicago-new-business-licenses): New Chicago, Illinois business licenses, daily
- [pennsylvania-philadelphia-business-licenses](https://apify.com/loomwise/pennsylvania-philadelphia-business-licenses): New Philadelphia, Pennsylvania business licenses, daily

# Actor input Schema

## `licenseTypes` (type: `array`):

Leave empty for plumbing, electrical, HVAC/R, limited energy and renewable energy contractors.

## `oregonOnly` (type: `boolean`):

Skip out-of-state companies licensed to work in Oregon.

## `counties` (type: `array`):

e.g. Multnomah, Washington, Clackamas, Lane, Marion, Deschutes.

## `cities` (type: `array`):

e.g. Portland, Salem, Eugene, Bend.

## `zipCodes` (type: `array`):

e.g. 972 for Portland.

## `keywords` (type: `array`):

e.g. solar, heating.

## `expiresFrom` (type: `string`):

Expiration window start.

## `expiresTo` (type: `string`):

Expiration window end.

## `includeAddress` (type: `boolean`):

Only when the license holder is a business.

## `maxResults` (type: `integer`):

Cap on results. You pay per result.

## Actor input object example

```json
{
  "licenseTypes": [
    "C",
    "PB"
  ],
  "oregonOnly": false,
  "includeAddress": true,
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "licenseTypes": [
        "C",
        "PB"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("loomwise/oregon-electrical-plumbing-contractors").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "licenseTypes": [
        "C",
        "PB",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("loomwise/oregon-electrical-plumbing-contractors").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "licenseTypes": [
    "C",
    "PB"
  ],
  "maxResults": 100
}' |
apify call loomwise/oregon-electrical-plumbing-contractors --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,loomwise/oregon-electrical-plumbing-contractors"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RROiWcawu6hLrAVic/builds/M3m7f4uyrrGIYNSGH/openapi.json
