OCILB
Ohio Contractor License Lookup & Leads Scraper (OCILB)
Look up or export every active Ohio OCILB licence — electrical, HVAC, plumbing, hydronics and refrigeration contractors — with company, address, phone and expiry. Filter by trade, county, city, ZIP or name.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
license_number | string|null |
trade_code | string|null |
license_type | string|null |
status | string|null |
person_name | string|null |
business_name | string|null |
in_escrow | boolean|null |
effective_date | string|null |
expiration_date | string|null |
address | string|null |
city | string|null |
address_state | string|null |
zip_code | string|null |
phone | string|null |
fax | string|null |
email | string|null |
county | string|null |
licensee_state | string|null |
state | string|null |
notice | string|null |
notice_type | string|null |
source_url | string|null |
Sample row
{
"license_number": "HV.11969",
"trade_code": "HV",
"license_type": "HVAC Contractor",
"status": "ACTIVE",
"person_name": "TIMOTHY M LAVELLE",
"business_name": "GORMAN LAVELLE CORP",
"in_escrow": false,
"effective_date": "04/01/2026",
"expiration_date": "03/31/2029",
"address": "3459 E 52nd Pl",
"city": "Cleveland",
"address_state": "OH",
"zip_code": "44127-1659",
"phone": "(216) 641-4600",
"fax": null,
"email": null,
"county": "Cuyahoga",
"licensee_state": "OH",
"state": "OH",
"source_url": "https://elicense4.com.ohio.gov/Lookup/GenerateRoster.aspx"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
trade | string | no | — | One OCILB trade: EL (electrical), HV (HVAC), HY (hydronics), PL (plumbing), RE (refrigeration) or TA (training agency). Words work too: 'electrical', 'hvac', 'plumbing'. Leave empty for all five contractor trades (training agencies are only returned when asked for). An unrecognised value is ignored with a log line; if nothing you gave is recognised, the run returns a free row saying so instead of the whole state. |
trades | array | no | [] | Several trades in ONE run, e.g. EL and PL. Combined with 'Trade' if you fill both. |
status | string | no | "all" | OCILB's roster lists only live licences. 'all' returns both ACTIVE and ACTIVE IN RENEWAL (a licence inside its renewal window); pick one to narrow it. |
county | string | no | — | Ohio county of the LICENCE HOLDER as OCILB records it, e.g. 'Cuyahoga' or 'Franklin County'. Matches Ohio holders only. An unrecognised county is ignored with a log line. |
counties | array | no | [] | Several Ohio counties in ONE run. Combined with 'County' if you fill both. |
city | string | no | — | Company city, exact match ignoring case and punctuation, e.g. 'Columbus' (does not also match 'Columbus Grove'). |
cities | array | no | [] | Several company cities in ONE run. Combined with 'City' if you fill both. |
zip | string | no | — | Company ZIP, 5 digits (a ZIP+4 is accepted and matched on its first 5). |
zips | array | no | [] | Several company ZIPs in ONE run. Combined with 'ZIP code' if you fill both. |
name | string | no | — | Text that the licensee's name or the company name contains (case-insensitive), e.g. 'MECHANICAL' or 'SMITH'. |
names | array | no | [] | Several name fragments in ONE run; a licence matching any of them is returned once. The run log says how many licences each one matched. |
maxResults | integer | no | 500 | Cap on licences returned for the whole run (a spend control). The full statewide roster is about 12,200 contractor licences, so 100000 returns everything that matches. The run log states how many matched when the cap cuts it short. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional. The OCILB site answers direct requests; enable a proxy only if runs come back with a 'blocked' notice. |
Pricing
Pay per result (dataset-item) — no charge for empty runs.
Example: 265 Cuyahoga County HVAC licences at $0.004/result ≈ $1.06.
FAQ
Where does the data come from?
From the Ohio Construction Industry Licensing Board's free roster download on the state eLicense site (elicense4.com.ohio.gov), which the actor generates and downloads on every run.
Does this include general contractors or home builders?
No. Ohio has no statewide general-contractor or residential builder licence; those are registered by cities and counties. OCILB licenses commercial electrical, HVAC, hydronics, plumbing and refrigeration contractors, and that is what this actor returns.
How many licences are there, and how many have a phone or email?
Counted 2026-10-07: 12,309 contractor licences. Company street address on 12,216 (99%), phone on 8,149 (66%), fax on 541 (4%), email on 458 (4%). Phone and email are whatever the licensee filed with OCILB; the actor does not add any.
What does the county mean?
It is the county OCILB records for the licence HOLDER, which is not always where the company is: a Cuyahoga County licensee can work for a company in Geauga County. Use city or ZIP to filter on the company's address instead. Largest counties on 2026-10-07: Cuyahoga 1,022, Franklin 693, Hamilton 585, Montgomery 410, Summit 407.
Are expired or revoked licences included?
No. OCILB's roster lists only live licences: ACTIVE (10,041) and ACTIVE IN RENEWAL (2,268, inside the renewal window), counted 2026-10-07.
What happens if I type a trade or county the actor does not know?
That value is ignored and the run log says so. If none of the values you gave for a filter is recognised, the run returns one free row explaining it instead of the whole state, so a typo never bills you for 12,000 rows.
How am I charged?
$0.004 per licence returned. The default input returns the first 500 licences statewide ($2.00); the full statewide export is about $49. Rows explaining an outage, an unrecognised filter or an empty result are free.
Guides & use cases
Related actors