← Health board

LBGC

Alabama Contractor License Lookup & Verify (LBGC)

Verify an Alabama general contractor by license number or name, or export the whole LBGC roster by county, classification, status, city or ZIP — with phone, address and expiry.

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

Verification

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

Output fields

Authoritative field set from the dataset schema.

FieldType
statestring|null
license_numberstring|null
business_namestring|null
person_namestring|null
license_typestring|null
statusstring|null
issue_datestring|null
expiration_datestring|null
citystring|null
countystring|null
addressstring|null
zip_codestring|null
phonestring|null
bond_amountstring|null
bond_companystring|null
insurance_companystring|null
address_statestring|null
faxstring|null
bid_limitstring|null
classification_codesarray|null
extension_datestring|null
matched_bystring|null
source_urlstring|null

Sample row

{
  "state": "AL",
  "license_number": "8",
  "business_name": "DUNN CONSTRUCTION CO INC",
  "license_type": "BC: BUILDING CONSTRUCTION, H/RR: HEAVY AND RAILROAD, HS: HIGHWAYS AND STREETS, MU: MUNICIPAL AND UTILITY",
  "city": "BIRMINGHAM",
  "phone": "(205) 592-3866",
  "address": "P O BOX 11967",
  "zip_code": "35202",
  "expiration_date": "9/30/2026",
  "matched_by": "business_name",
  "source_url": "https://licensesearch.alabama.gov/genconbd/Details/2"
}

Inputs

FieldTypeReqDefaultDescription
mode string no "auto" auto (default): a licence number or name below runs a lookup, none runs an export. lookup: find licences by AL LBGC licence number or business name. export: the LBGC roster narrowed by the filters below (county, classification, status, city, ZIP, expiry), names and numbers ignored.
query string no "CONSTRUCTION" An Alabama LBGC general-contractor license number (exact) or a business name (substring). The board publishes a numeric license number; anything non-numeric is treated as a name search. Leave this and 'Search query (batch)' empty to export the whole LBGC roster instead, narrowed by the filters below.
queries array no ["CONSTRUCTION"] Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'Search query'. Combined with 'Search query' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted.
classification string no — Statewide export only. An LBGC classification code (BC, BCU4, MU, H/RR, HS, E, M, D, SP, EV, SC, ADM, REP, SUBCONTRACTOR, or a '-S' subclassification such as BC-S) matched exactly, or a word from the classification description, e.g. 'roofing', 'plumbing', 'electrical'. Empty = every classification. 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.
classifications array no [] Several classifications in ONE run (a licensee matching any of them is returned once). Combined with 'Classification' if you fill both.
licenseTypes array no [] Same as Classifications (LBGC's licence types are its classifications): codes like BC, MU, E, or words like 'roofing', 'plumbing'.
counties array no [] Alabama counties, e.g. Jefferson, Mobile. LBGC publishes no county, so it is derived from the mailing ZIP (or city) with Census data; each row's county_method says how. Licensees with an out-of-state mailing address have no county.
status string no — Statewide export only: active (default; includes licences LBGC lists as extended past their expiry), inactive, or all.
statuses array no [] Several statuses in ONE run. Combined with 'Licence status' if you fill both.
addressState string no — Statewide export only. Two-letter state of the licensee's mailing address, e.g. AL for Alabama-based firms. LBGC licenses many out-of-state contractors (4,222 of 8,993 licensees had an Alabama address on 2026-10-09), so leave empty for every licensee.
addressStates array no [] Several mailing-address states in ONE run. Combined with 'Mailing-address state' if you fill both.
city string no — Statewide export only. Mailing-address city, exact match ignoring case and punctuation. LBGC publishes no county, so filter by city or ZIP.
cities array no [] Several cities in ONE run. Combined with 'City' if you fill both.
zip string no — Statewide export only. Mailing-address ZIP, 5 digits (a ZIP+4 is matched on its first 5).
zips array no [] Several ZIPs in ONE run. Combined with 'ZIP code' if you fill both.
inStateOnly boolean no false Only licensees with an Alabama mailing address (same as Mailing-address state AL). LBGC licenses many out-of-state firms.
expiresAfter string no — Only licences expiring on or after this date (YYYY-MM-DD). With 'Expires on or before' it lists licences due for renewal in a window. Works on exports and on lookups with detail pages.
expiresBefore string no — Only licences expiring on or before this date (YYYY-MM-DD).
maxResults integer no — With a search query: cap on matches PER QUERY (default 50), so a batch cannot silently return only the first rows overall and read as 'no match'; with detail pages on, each match costs one page fetch. Statewide export: cap for the whole run (default 500, a spend control). The full roster is 8,993 licensees (measured 2026-10-09), so 100000 returns everything that matches; the run log states how many matched when the cap cuts it short.
includeDetails boolean no true Search queries only: fetch each match's detail page to add address, ZIP, and expiration date. Disable for a faster, roster-only run. The statewide export reads LBGC's roster file, which already carries address, ZIP, phone, fax, bid limit and expiry, so no detail pages are fetched there.
proxyConfiguration object no {"useApifyProxy":false} Optional. The Alabama LBGC site is reachable directly; a proxy is not needed.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 100 verified license records at $0.004/result ≈ $0.40.

FAQ

Where does the data come from?

The official Alabama Licensing Board for General Contractors (LBGC) public license-search registry — public, authoritative commercial general-contractor license data.

What can I search by?

An LBGC license number (exact match, e.g. 4510 or S-53030) or a business name (case-insensitive substring). Both return the matching licenses from the board's roster. Leave the search empty to export the roster instead, filtered by county, classification, status, mailing state, city, ZIP or expiry date.

How big is a full export?

Measured 2026-10-09: 8,993 licensees, 8,917 of them active, and 4,172 of the active ones with an Alabama mailing address. An export defaults to active licences and 500 rows; set maxResults to 100000 for everything, or status to 'all' to include the 76 inactive licences. LBGC publishes no county, so narrow by city or ZIP.

What fields do I get?

License number, business name, specialty classification, city, phone, street address, ZIP, and license expiration date. A search gets address, ZIP and expiration from each licensee's detail page; an export reads them from LBGC's roster file and adds status, fax, bid limit, classification codes and mailing state.

How am I charged?

Pay-per-result — per license match returned. No charge for searches with no results.

Is this personal data?

It's public professional-license data (business and license records as the LBGC publishes them); we add no personal/PII enrichment.

How current is it?

It reflects the LBGC's live license-search roster at run time, so results are as current as the board's published data.

Guides & use cases

Related actors