GroundCheck is not a background check service and is not FCRA-regulated. See how it works.
Every US state answers a general-contractor licence check differently, because every state licenses general contractors differently. This page shows which mechanism answers your search — not a row count, the actual answer a licence check produces there.
Select a state for its licence lane, whether a statewide licence is required there, and the honest caveat on that answer.
Select any state above to see the licence lane, whether a statewide general-contractor licence is required there, and the honest caveat on that answer.
| State | Statewide GC licence? | Grade | Mechanism |
|---|---|---|---|
| Alaska (AK) | Yes | A | Ingested license roster |
| Alabama (AL) | Yes | A | Ingested license roster |
| Arkansas (AR) | Yes | A | Ingested license roster |
| Arizona (AZ) | Yes | A | Ingested license roster |
| California (CA) | Yes | A | Dedicated live scraper |
| Colorado (CO) | No — municipal/local | — | Dedicated live scraper |
| Connecticut (CT) | Yes | A | Ingested license roster |
| District of Columbia (DC) | Yes | A | Ingested license roster |
| Delaware (DE) | No — municipal/local | — | Ingested license roster |
| Florida (FL) | Yes | A | Dedicated live scraper |
| Georgia (GA) | Yes | D | Web-search floor |
| Hawaii (HI) | Yes | D | Web-search floor |
| Iowa (IA) | No — municipal/local | — | Ingested license roster |
| Idaho (ID) | Yes | A | Ingested license roster |
| Illinois (IL) | No — municipal/local | — | Ingested license roster |
| Indiana (IN) | No — municipal/local | — | Live per-record portal lookup |
| Kansas (KS) | No — municipal/local | — | Web-search floor |
| Kentucky (KY) | No — municipal/local | — | Web-search floor |
| Louisiana (LA) | Yes | A | Ingested license roster |
| Massachusetts (MA) | Yes | A | Ingested license roster |
| Maryland (MD) | Yes | A | Live per-record portal lookup |
| Maine (ME) | No — municipal/local | — | Ingested license roster |
| Michigan (MI) | Yes | A | Live per-record portal lookup |
| Minnesota (MN) | Yes | B | Ingested license roster |
| Missouri (MO) | No — municipal/local | — | Web-search floor |
| Mississippi (MS) | Yes | D | Web-search floor |
| Montana (MT) | Yes | A | Ingested license roster |
| North Carolina (NC) | Yes | A | Dedicated live scraper |
| North Dakota (ND) | Yes | A | Live per-record portal lookup |
| Nebraska (NE) | No — municipal/local | — | Web-search floor |
| New Hampshire (NH) | No — municipal/local | — | Ingested license roster |
| New Jersey (NJ) | Yes | B | Ingested license roster |
| New Mexico (NM) | Yes | D | Web-search floor |
| Nevada (NV) | Yes | A | Ingested license roster |
| New York (NY) | No — municipal/local | — | Ingested license roster |
| Ohio (OH) | No — municipal/local | — | Ingested license roster |
| Oklahoma (OK) | Yes | C | Live per-record portal lookup |
| Oregon (OR) | Yes | A | Dedicated live scraper |
| Pennsylvania (PA) | Yes | D | Web-search floor |
| Rhode Island (RI) | Yes | A | Live per-record portal lookup |
| South Carolina (SC) | Yes | D | Web-search floor |
| South Dakota (SD) | No — municipal/local | — | Web-search floor |
| Tennessee (TN) | Yes | A | Ingested license roster |
| Texas (TX) | No — municipal/local | — | Dedicated live scraper |
| Utah (UT) | Yes | A | Dedicated live scraper |
| Virginia (VA) | Yes | A | Ingested license roster |
| Vermont (VT) | No — municipal/local | — | Ingested license roster |
| Washington (WA) | Yes | A | Dedicated live scraper |
| Wisconsin (WI) | Yes | D | Web-search floor |
| West Virginia (WV) | Yes | A | Live per-record portal lookup |
| Wyoming (WY) | No — municipal/local | — | Web-search floor |
A grade describes the mechanism that answers a search, not how many rows we hold. A state with zero licence rows can still be an honest, correct answer — and a state with a large corpus can still be a gap if that corpus can’t hold a general contractor.
A live scraper or ingested roster answers directly — both a hit and a real "not found" are reliable.
Same mechanism as A, but the register is residential-only or a live portal lookup — a commercial-only general contractor can miss it.
A general contractor licence is required here, but the corpus we hold cannot answer that question (trade-only data, or a portal not yet scope-guarded).
No ingested roster, dedicated scraper, or live portal — the only mechanism is a web-search fallback, measured at roughly 90% source_error in production.
17 states don’t license general contractors at the state level at all — licensure is municipal (Colorado and Texas among them). For those states, “no record found” is the correct answer and is never presented as a coverage gap.
Lane and grade are read directly from the routing code (licenseLaneForState() in taxonomy.ts) via scripts/ci/state-answer-matrix.mjs, and whether a state requires a statewide licence comes from gc_state_license_required (snapshotted 2026-06-29). This page reflects the mechanism, not live roster freshness or row counts — run a live search on /trust for a check against current data for a specific business.