Alabama Commercial Contractor Directory & Leads (LBGC)
Pricing
$0.002 / contractor record
Alabama Commercial Contractor Directory & Leads (LBGC)
Every LBGC-licensed commercial contractor and subcontractor in an Alabama county, by classification — business name, phone, fax, mailing address, ZIP, licence, classifications and bid limit.
Pricing
$0.002 / contractor record
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pain points
- LBGC publishes its whole roster as a free CSV (8,917 licensees on 2026-10-06), but it has no county column, so 'every building contractor in Jefferson County' cannot be filtered out of it — only cities and ZIPs.
- More than half of that roster is not in Alabama: 4,729 of the 8,917 licensees (53%) have an out-of-state mailing address, which is noise when you want local firms.
- Its Specialty column joins every classification with commas, and the descriptions contain commas too ('SUBCONTRACTOR: ABATEMENT, DEMOLITION'), so splitting it in a spreadsheet breaks 1,890 rows.
What we solve
- Pick a county and a classification and get every matching LBGC licensee in one run, with phone, fax and mailing address, ready for a CRM.
- Assigns each Alabama licensee a county from its mailing ZIP or city using U.S. Census tables, and says on every row which method decided it.
- Splits classifications at each code, so 'BC' finds Building Construction licensees and not the BC-S subclassifications, and a word like 'paving' finds every classification that mentions it.
Summary
Build a prospect list of Alabama commercial contractors for any county in one run. Choose a county (or several) and an LBGC classification — Building Construction (BC), Municipal and Utility (MU), Highways and Streets (HS), Heavy and Railroad (H/RR), Electrical, any subclassification, or registered subcontractors — and get back every licensee that matches: business name, phone, fax, mailing address, PO-box flag, city, ZIP, county, licence number, status, expiry date, every classification held, and the LBGC bid limit. The data is the Alabama Licensing Board for General Contractors' own roster, read fresh on every run. LBGC publishes no county and no email; the county is derived from the mailing ZIP or city and every row says how. Leave the classification empty for every licensee in the county. Pay only per contractor returned.
Who it's for
- Sales teams selling materials, equipment, insurance or software to commercial contractors in an Alabama territory
- General contractors building a subcontractor shortlist by classification before bidding a public or commercial job
- Surety and bonding agents prospecting for licensed commercial contractors by county
- Market researchers sizing licensed commercial contractor coverage across Alabama counties
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:
{"county": "Jefferson","trade": "BC"}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
business_name | Licensee name as LBGC lists it |
phone | Phone number on file with LBGC |
fax | Fax number, when listed |
address | Mailing street address as filed (may be a PO box) |
is_po_box | True when the mailing address is a PO box or drawer |
city | Mailing city |
zip_code | Mailing ZIP code |
county | Alabama county derived from the mailing ZIP or city — LBGC publishes none; null when it cannot be told |
county_method | zip, city, zip_majority (the ZIP spans counties; largest by land area) or null |
license_number | LBGC licence number ('S-' prefix = registered subcontractor) |
status | Active, 'Active (extended)', or Inactive |
expiration_date | Licence expiry date (M/D/YYYY) |
extension_date | Renewal extension date, when LBGC lists one |
classifications | Every LBGC classification held, as 'CODE: DESCRIPTION' |
classification_codes | The distinct codes held, e.g. BC, MU-S, SUBCONTRACTOR |
bid_limit | LBGC bid limit: 'Unlimited' or a dollar amount |
address_state | State of the mailing address |
requested_county | The county search that returned the row |
requested_trade | The classification search that returned the row |
source_url | LBGC's licence verification list |
Sample:
{"business_name": "A G GASTON CONSTRUCTION CO INC","phone": "(205) 328-0376","fax": "(205) 876-1138","address": "1820 3RD AVE N SUITE 400","is_po_box": false,"city": "BIRMINGHAM","zip_code": "35203","county": "Jefferson","county_method": "zip","address_state": "AL","state": "AL","license_number": "14788","status": "Active","expiration_date": "8/31/2027","extension_date": null,"classifications": "BC: BUILDING CONSTRUCTION, HS: HIGHWAYS AND STREETS, MU: MUNICIPAL AND UTILITY","classification_codes": ["BC","HS","MU"],"bid_limit": "Unlimited","requested_county": "Jefferson","requested_trade": "BC","source_url": "https://licensesearch.alabama.gov/genconbd"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
listOptionsOnly | no | boolean | false | If true, skip the search and return the 67 Alabama counties plus every classification code on the Alabama Licensing Board for General Contractors (LBGC) roster, with how many licensees hold it. Free, not charged. |
trade | no | string | "BC" | An LBGC classification code, e.g. 'BC' (Building Construction), 'MU' (Municipal and Utility), 'HS' (Highways and Streets), 'BC-S' or 'SUBCONTRACTOR' — a code matches exactly, so 'BC' does not include 'BC-S'. Or a word: 'electrical', 'paving', 'plumbing' finds every classification whose description contains a word starting with it. Leave empty for every classification in the county. |
trades | no | array | ["BC", "MU"] | Several classifications in ONE run, e.g. BC and MU and electrical. Combined with 'Classification / trade' if you fill both. A contractor matching two of them is returned (and billed) once. |
county | no | string | "Jefferson" | Alabama county, e.g. 'Jefferson', 'Mobile County', 'saint clair'. LBGC publishes no county, so this matches the county derived from each contractor's MAILING ZIP or city. If it is not an Alabama county, the run returns the free county and classification lists instead of failing. |
counties | no | array | ["Jefferson", "Shelby"] | Several counties in ONE run, e.g. Jefferson and Shelby. Combined with 'County' if you fill both. |
includeOutOfState | no | boolean | false | LBGC licenses firms from every state: 4,729 of its 8,917 licensees (53%, 2026-10-06) have a mailing address outside Alabama. Off by default. Only applies when no county is set — a county search is always Alabama addresses. |
maxResults | no | integer | — | Cap on the contractors returned PER county + classification search, not per run, so adding counties can never silently truncate the ones later in the list. Leave empty to return every match. |
proxyConfiguration | no | object | {"useApifyProxy": false} | Optional. LBGC answers direct requests; enable a proxy only if runs come back with a 'blocked' notice. |
Pricing (Pay Per Event)
You pay per result (dataset-item) — no charge for empty runs. Example: 123 Jefferson County building contractors at $0.002/result ≈ $0.25.
Discovery Mode and unrecognised inputs return the free county and classification lists. Apify platform usage is billed separately.
Use cases
- Territory prospecting — pull every Building Construction licensee in Jefferson and Shelby counties and load the phone list into your CRM.
- Subcontractor sourcing — list every licensee with a paving, electrical or site-work classification near a project, with their bid limit, before you send bid invitations.
- Market sizing — count LBGC licensees per classification and county to decide where to place a rep.
- List refresh — re-run monthly and compare status and expiry dates to spot licences that lapsed or were extended.
Why this actor
- Phone on 545 of 545 Jefferson County licensees and 123 of 123 Jefferson Building Construction licensees, with a ZIP on every one (measured 2026-10-06).
- Straight from the Alabama Licensing Board for General Contractors' own roster, read fresh on every run — no stale copy.
- A county on 96% of Alabama licensees (4,019 of 4,188), each labelled with how it was derived, so you can drop the less certain ones.
- Out-of-state firms (53% of the roster) are left out unless you ask for them, and PO-box addresses are flagged.
- Pay per contractor returned; the county and classification lists are free.
Limitations & updates
Covers licensees on the Alabama Licensing Board for General Contractors roster: commercial contractors and registered subcontractors. Residential home builders are licensed by a different board and are not included. LBGC publishes no email and no county; the county is derived from the mailing ZIP or city with U.S. Census 2020 tables, is the county of the mailing address (25% of Alabama licensees file a PO box), and is null for 4% of Alabama licensees whose PO-box ZIP and city both span counties. A firm working in several counties appears only under its mailing county. If LBGC does not answer, the run returns a free row saying so instead of an empty dataset.
FAQ
Where does the data come from?
From the Alabama Licensing Board for General Contractors (LBGC): its full licence roster download at licensesearch.alabama.gov, fetched on every run. County is added by this actor from U.S. Census 2020 ZIP-to-county and place-to-county tables.
Can't I just download LBGC's roster myself?
Yes, it is free, and if you want the whole state once you should. This actor is for when you want one county and one classification on demand, with out-of-state firms removed, classifications split correctly, and a county on each row.
How is the county worked out?
LBGC publishes no county. If the mailing ZIP's Census area lies at least 90% in one county, that county is used (county_method 'zip', 2,938 of 4,188 Alabama licensees on 2026-10-06). Otherwise, if the mailing city is a Census place in exactly one county, that one ('city', 719). Otherwise the county holding most of the ZIP's land area ('zip_majority', 362). 169 (4%) — mostly PO-box ZIPs in cities that span counties, like Decatur and Huntsville — stay null rather than be guessed. It is the county of the mailing address, not of where the firm works.
How many contractors does a county return?
Counted 2026-10-06, all classifications: Jefferson 545, Mobile 402, Baldwin 336, Shelby 268, Madison 237, Tuscaloosa 222, Montgomery 201. Jefferson Building Construction (BC) alone is 123.
How do I name a classification?
By LBGC code ('BC', 'MU', 'HS', 'H/RR', 'BC-S', 'SUBCONTRACTOR') for an exact match, or by a word from the description ('paving', 'electrical', 'plumbing'), which matches at the start of a word. Turn on Discovery Mode for all codes with how many licensees hold each, free.
Is there an email address?
No. LBGC's roster has no email field at all, so no row has one. You get phone (on 4,185 of 4,188 Alabama licensees), fax where listed, and the mailing address.
Does this include home builders and residential roofers?
No. LBGC licenses commercial work and registers subcontractors. Residential home builders are licensed by a different board, the Alabama Home Builders Licensure Board, which this actor does not cover.
How am I charged?
One event per contractor returned ($0.002). A contractor that matches two of your searches is returned and charged once. The county and classification lists, and any row explaining a source problem, are free.
Which actor to choose
Part of the contractor-data suite — pick the one that fits your goal:
- Alabama Contractor License Lookup & Verify (LBGC) — You have a contractor's name or licence number and want to check that one LBGC licence.
- Arkansas Contractor Directory & Leads Scraper (ACLB) — You need the same county-by-trade contractor list for Arkansas, with email.
- California Contractor Directory by Trade & County (CSLB) — You need the same trade-by-county contractor list for California.
- Texas Contractor Directory & Leads Scraper (TDLR) — You need a county-scoped roster of Texas TDLR-licensed contractors.
- Virginia Contractor Directory & Leads Scraper (DPOR) — You need the same county-by-trade contractor list for Virginia, with email and mailing address.
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 Alabama Commercial Contractor Directory & Leads (LBGC)
- Use case: Build a Birmingham-Area Building Contractor Call List
- Use case: List Commercial Contractors in Mobile and Baldwin Counties
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 LBGC Building Construction (BC) licensees with a Jefferson County, Alabama mailing address, with their phone numbers."
Each row also carries the contractor's LBGC bid limit and every classification it holds, so you can ask for the ones with an unlimited bid limit. Runs started this way bill exactly like any other run.