← Health board

LBGC

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.

98%golden-diff pass
Run it on Apify → verified nightly

Verification

98%golden-diff success
41canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
business_namestring|null
license_numberstring|null
phonestring|null
faxstring|null
addressstring|null
is_po_boxboolean|null
citystring|null
address_statestring|null
zip_codestring|null
countystring|null
county_methodstring|null
classificationsstring|null
classification_codesarray|null
bid_limitstring|null
expiration_datestring|null
extension_datestring|null
statusstring|null
statestring|null
license_typestring|null
requested_countystring|null
requested_tradestring|null
matched_bystring|null
county_namestring|null
tradestring|null
trade_codestring|null
contractor_countinteger|null
noticestring|null
notice_typestring|null
source_urlstring|null

Sample row

{
  "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

FieldTypeReqDefaultDescription
listOptionsOnly boolean no 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 string no "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 array no ["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 string no "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 array no ["Jefferson","Shelby"] Several counties in ONE run, e.g. Jefferson and Shelby. Combined with 'County' if you fill both.
includeOutOfState boolean no 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 integer no — 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 object no {"useApifyProxy":false} Optional. LBGC 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: 123 Jefferson County building contractors at $0.002/result ≈ $0.25.

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.

Guides & use cases

Related actors