Use case
Verify an Alabama Contractor by License Number
Check an Alabama general contractor licence by number against the state Licensing Board for General Contractors - business name, city, licence type and contact, as an exportable row.
Say you run preconstruction for a municipal paving package in Birmingham. Four bids are in, each
with an Alabama licence number in the footer, and the award memo goes out Friday. Before any of
those numbers reaches a contract you need three things: that the number is real, that it belongs to
the company on the letterhead, and that the specialty on it actually covers highways and streets —
because a licence that reads BC: BUILDING CONSTRUCTION and nothing else is not the licence for
this job.
The manual way, and what it costs
The board’s licence search is public, free, and needs no account. It publishes the whole roster — roughly 9,600 licensees — in one table you filter in the browser, then click through to a detail page for the street address, ZIP and expiration date.
For four bids, use it. Four searches is ten minutes and there is no reason to pay for that. The arithmetic changes when the same check has to happen repeatedly: a vendor list re-verified each quarter, a marketplace onboarding queue, an underwriting pipeline. There the cost isn’t the search, it’s that a detail page is a page — no export, no CSV, nothing you can hand a compliance file. Every check ends in a copy-paste, and copy-paste is the step that quietly stops happening.
The faster way
Alabama Contractor License Lookup & Verify (LBGC) does the same search once and hands back every row at once.
{
"query": "4510",
"includeDetails": true,
"maxResults": 1
}
A bare number is treated as an exact licence-number lookup, so maxResults: 1 is all a single
verification needs — there is only ever one match, and the cap keeps the run from paying for
anything else. includeDetails is what turns a sighting into a compliance check: the roster row
alone carries name, city, specialty and phone, and the detail page adds street address, ZIP and the
expiration date. Turn it off only when you are scanning a name and don’t need the second tier yet.
What comes back
{
"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"
}
| Field | Example value | Meaning |
|---|---|---|
state | AL | Always ‘AL’ for this actor |
license_number | 8 | LBGC general-contractor license number |
business_name | DUNN CONSTRUCTION CO INC | Licensed business name |
license_type | BC: BUILDING CONSTRUCTION, H/RR: HEAVY AND RAILROAD, HS: HIGHWAYS AND STREETS, MU: MUNICIPAL AND UTILITY | Specialty classification (e.g. BC: BUILDING CONSTRUCTION, HS: HIGHWAYS AND STREETS) |
city | BIRMINGHAM | Business city |
phone | (205) 592-3866 | Business phone (as published on the roster) |
For the paving award, two fields close it. license_type decides: the specialty codes are the
board’s own statement of what this contractor is qualified to bid, and HS: HIGHWAYS AND STREETS
either appears in that string or it doesn’t. expiration_date is the second — a licence that runs
out in September is a problem for a job finishing in November, and it is the field people skip.
business_name is the quiet third: it catches the case where the number is perfectly valid but
belongs to an affiliate rather than the entity signing.
What you’d do with it
Store the row on the vendor record next to the bid, keep source_url so anyone auditing the award
can open the board’s own page and see the same thing, and note the run date so it is clear what was
true at award time. Re-run the same call before notice to proceed — it’s one input, so “check it
again” costs a few cents and a minute.
Worth knowing
There is no status field. The LBGC roster does not publish a licence status, so status comes
back null on every record — this actor cannot tell you Active, Suspended or Revoked. Read
expiration_date as the proxy, and if the answer is load-bearing, confirm standing with the board
directly. That is a real gap and worth knowing before you build a gate on top of this.
Commercial general contractors only. This is the LBGC roster; residential home-builder registration in Alabama sits with a different board and does not appear here at all.
Name searches match the business name. A query is either all digits (exact licence number) or a substring of the business-name column. There is no owner- or qualifier-name search, so a person’s name will not find a company’s licence.
Issue date, bond, insurance and county are not published on this registry and come back null.
An empty bond field means the board doesn’t publish one, not that the contractor has none.
Run it yourself: How to run Alabama Contractor License Lookup & Verify (LBGC) walks the whole thing step by step.
Need the status field Alabama doesn’t publish? Verify a Florida Contractor by License Number covers a registry that does. Checking one contractor across state lines, Multi-State Contractor & Trade License Lookup runs WA, OR, TX and CT from a single input.
Last updated 2026-07-22