Oklahoma Roofing Contractor Directory & Leads (CIB)
Pricing
$0.002 / roofing contractor record
Oklahoma Roofing Contractor Directory & Leads (CIB)
Export every Oklahoma CIB-registered roofing contractor statewide: company, registration #, status, phone, address, insurance and workers' comp carrier.
Pricing
$0.002 / roofing contractor record
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
4
Monthly active users
12 days ago
Last modified
Categories
Share
Pain points
- The CIB verify site shows 10 registrations per page and has no export button, so a statewide list of registered roofers (1,924 active on 2026-10-14) is about 190 pages of copying.
- The registry mixes active registrations with expired, pending and not-in-good-standing ones, and some registration numbers appear on more than one firm's record, so a raw pull double-counts.
- Roofing suppliers, insurers and storm-season sales teams need the phone number and address next to the registration, not just a yes/no verification.
What we solve
- Exports the whole Oklahoma Construction Industries Board roofing registry in one run, statewide or filtered by city and status.
- Returns company name, DBA, registration number, status, commercial endorsement, renewal date, phone, business address and the person named on the registration.
- Adds the general-liability insurer and workers' comp carrier (or exemption) the registrant filed, with their expiration dates.
- Keeps only In Good Standing registrations by default and deduplicates on CIB's own record id.
Summary
Get a ready-to-call list of Oklahoma roofing contractors straight from the Construction Industries Board (CIB) roofing registry. One run exports every registration in good standing statewide (1,924 on 2026-10-14) or just the cities you name, with phone number and business address on every row, plus registration number, status, renewal date, DBA, commercial endorsement and the insurer and workers' comp carrier on file. Choose other statuses (expired, pending, not in good standing) or 'all' when you want lapsed registrants too. The source publishes no county and no email address.
Who it's for
- Roofing material suppliers and distributors building an Oklahoma dealer prospect list
- Insurance agents writing general-liability and workers' comp for roofing contractors
- Storm-restoration and roofing software sales teams covering Oklahoma metros
- General contractors and property managers sourcing registered roofing subs
- Compliance teams checking a roofer's CIB status and insurance dates in bulk
How to use
Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:
{"statuses": ["In Good Standing"],"cities": ["Tulsa","Broken Arrow"],"maxResults": 500}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
business_name | Registered company name |
trade_name | Trade name / DBA the company filed (on 398 of 1,924 active rows) |
license_number | CIB roofing registration number (e.g. 80000002). Not unique on its own: some numbers appear on two firms' records |
registration_id | CIB's own record id; unique per row and the dedupe key |
license_type | 'Roofing Contractor Registration', or 'Roofing Contractor Application' for pending ones |
status | In Good Standing, Not In Good Standing, Expired, Expired - for non-renewal, or Pending |
commercial_endorsement | True when the registration carries CIB's commercial roofing endorsement |
expiration_date | Renewal due date (YYYY-MM-DD, Oklahoma time) |
processed_date | Date CIB last processed the registration |
phone | Business phone, formatted (XXX) XXX-XXXX |
address | Business address line as filed (a PO box on about 13% of active rows) |
city | Business city |
address_state | State of the business address (out-of-state registrants keep their own state) |
zip_code | ZIP code |
fax | Fax number when filed |
person_name | Person named on the registration |
company_type | LLC, Corporation, Sole Proprietorship, Partnership or LLP |
state_of_formation | State the company was formed in |
insurance_company | General-liability insurer on file |
insurance_expiration_date | Liability policy expiration date |
workers_comp_company | Workers' comp carrier on file |
workers_comp_expiration_date | Workers' comp policy expiration date |
workers_comp_exempt | True when the registrant filed a workers' comp exemption |
county | Always null: CIB does not publish a county |
source_url | The CIB public roofing search page |
Sample:
{"state": "OK","registration_id": 47591,"license_number": "80000002","business_name": "S & CM, LLC","trade_name": "MCROOF.US","license_type": "Roofing Contractor Registration","status": "In Good Standing","commercial_endorsement": true,"expiration_date": "2027-11-30","processed_date": "2026-09-29","phone": "(405) 877-7663","address": "722 ENTERPRISE DR #150","city": "EDMOND","address_state": "OK","zip_code": "73013","fax": null,"person_name": "SCOTT A MCCOLLUM,SR","company_type": "LLC","state_of_formation": "OK","insurance_company": "WESTERN WORLD IN CO","insurance_expiration_date": "2027-06-26","workers_comp_company": "TRAVELERS CAS & SURETY CO","workers_comp_expiration_date": "2027-07-01","workers_comp_exempt": false,"county": null,"matched_by": "statewide_export","source_url": "https://verify.cib.hbesystems.com/roofing/search"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
statuses | no | array | ["In Good Standing"] | Which CIB statuses to export: 'In Good Standing', 'Not In Good Standing', 'Expired', 'Expired - for non-renewal', 'Pending', or 'all'. Case and punctuation do not matter. Left empty, only 'In Good Standing' registrations are returned. A value that is not a CIB status is dropped (never widened to every status). |
status | no | string | — | One status, same values as 'Registration statuses'. Combined with that list if you fill both. |
cities | no | array | [] | Only registrations whose business address is in one of these cities (e.g. 'Oklahoma City', 'Tulsa', 'Edmond'). Exact city name, case-insensitive. Left empty, the export is statewide. Registrants based out of state keep their own city. |
city | no | string | — | One city, same as 'Cities'. Combined with that list if you fill both. |
maxResults | no | integer | 500 | Cap on rows returned for the whole run. The registry held 1,924 In Good Standing registrations and 6,069 in all statuses on 2026-10-14, so 2,000 covers every active roofer and 10,000 covers everything. Default 500. |
proxyConfiguration | no | object | {"useApifyProxy": false} | Off by default: the CIB registry is a public, keyless JSON service. Turn a proxy on only if a run returns a 'blocked' notice saying the source did not answer. |
Pricing (Pay Per Event)
You pay per result (dataset-item) — no charge for empty runs. Example: 1924 roofing contractor records at $0.002/result ≈ $3.85.
Example: the full In Good Standing registry on 2026-10-14 (1,924 rows) at $0.002 per record. The default maxResults of 500 costs $1.00. Notice rows (no match, source unavailable, budget reached) are free. Apify platform usage is billed separately per your plan.
Use cases
- Supplier prospecting: a shingle distributor exports every active registrant in Tulsa and Broken Arrow before a branch launch and loads the phone numbers into a dialer.
- Insurance renewals: an agent pulls the statewide list and sorts by liability or workers' comp expiration date to time outreach.
- Storm response: a restoration SaaS team pulls all Oklahoma City-area roofers after a hail event and calls the commercial-endorsed ones first.
- Sub vetting: a general contractor confirms a roofer is In Good Standing with insurance on file before awarding a job.
Why this actor
- Phone number and business address on every row, straight from the state's registry (1,924 of 1,924 active rows on 2026-10-14).
- The whole registry in one ~2 second fetch: statewide or by city, any status, up to 100,000 rows per run.
- Deduplicated on CIB's own record id, so two firms sharing a registration number are both kept and nothing is counted twice.
Limitations & updates
Covers the CIB roofing contractor registry only; Oklahoma licenses other trades (electrical, plumbing, mechanical) separately and they are not included. No county and no email in the source. The address is the business address as filed, and about 13% of active rows give a PO box (246 of 1,924 on 2026-10-14). City matching is exact after ignoring case and punctuation, so 'OKC' does not match 'Oklahoma City'. Data is read live on every run.
FAQ
Where does the data come from?
The Oklahoma Construction Industries Board's public roofing registry search at verify.cib.hbesystems.com. The actor reads the same public JSON that page uses; no login or key is involved.
How many records are there?
On 2026-10-14 the registry held 6,069 roofing records: 1,924 In Good Standing, 3,129 Expired - for non-renewal, 377 Expired, 332 Not In Good Standing and 307 Pending applications. 1,565 of the 1,924 active registrants have an Oklahoma address; the rest are out-of-state firms registered to work in Oklahoma.
Can I filter by county or get email addresses?
No. CIB publishes neither a county nor an email for roofing registrants. Filter by city instead; the county field is always null.
How am I charged?
$0.002 per registration returned. The full active registry is about $3.85. Rows that only explain a problem (no match, source down, budget reached) are free.
How current is the data?
Each run reads the live registry, so it is as current as CIB's own search page.
Why do some registration numbers repeat?
CIB has reused numbers across firms: on 2026-10-14, 228 numbers appeared on more than one record, 221 of them under different companies (18 among active registrations, all different companies). Every record is kept, keyed on CIB's unique record id.
Which actor to choose
Part of the contractor data suite — pick the one that fits your goal:
- Illinois Roofing Contractor Directory & Leads Scraper (IDFPR) — You want the same roofing contractor list for Illinois, by county.
Guides & use cases
Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:
- How-to: How to run Oklahoma Roofing Contractor Directory & Leads (CIB)
- Use case: Export Every Active Oklahoma Roofing Contractor
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 the roofing contractors in good standing in Tulsa and Broken Arrow, Oklahoma, with their phone numbers."
That pulled 240 registrations on 2026-10-14 (about $0.48); leave the cities out for the whole state. Runs started this way bill exactly like any other run.