SC LLR
South Carolina Contractor License Lookup & Verify (SC LLR)
Search and verify South Carolina contractors by name, license number, city, or classification — license #, status, type, and city — or export the statewide roster from the official SC LLR registry.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
state | string|null |
license_number | string|null |
business_name | string|null |
person_name | string|null |
license_type | string|null |
status | string|null |
issue_date | string|null |
expiration_date | string|null |
city | string|null |
county | string|null |
address | string|null |
zip_code | string|null |
phone | string|null |
bond_amount | string|null |
bond_company | string|null |
insurance_company | string|null |
matched_by | string|null |
source_url | string|null |
Sample row
{
"state": "SC",
"license_number": "116578",
"business_name": "PAUL L.W. SMITH INC — DBA: SMITH CONSTRUCTION",
"person_name": null,
"license_type": "GENERAL CONTRACTOR",
"status": "Active",
"issue_date": null,
"expiration_date": null,
"city": "KINGSTON",
"county": null,
"address": null,
"zip_code": null,
"phone": null,
"bond_amount": null,
"bond_company": null,
"insurance_company": null,
"matched_by": "name",
"source_url": "https://verify.llronline.com/LicLookup/Contractors/Contractor.aspx?div=69"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
mode | string | no | "auto" | auto (default): a name, licence number, city or classification below runs the LIVE search; the export keys further down (cities, ZIPs, classifications, licence types, statewide) run the statewide export. lookup: live search only. export: the statewide export, live-search keys read as its filters. |
queries | array | no | [] | Each value is its own live search (one CAPTCHA solve and one search fee each): a licence number, else a business or last name. |
query | string | no | — | One value; same as the batch list. |
lastName | string | no | "Smith" | Search by business name or an individual licensee's last name (partial matches allowed, e.g. 'Smith'). Combine with other fields to narrow results. |
firstName | string | no | — | Individual licensee's first name. Only useful together with a last name. |
licenseNumber | string | no | — | Exact SC contractor license number (numeric, e.g. '116578'). When set, returns that specific license. |
licenseNumbers | array | no | [] | Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'License number'. Combined with 'License number' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted. |
city | string | no | — | Filter results to a licensee city (e.g. 'Columbia'). |
classification | string | no | "All" | Filter to a contractor classification. 'All' returns every classification (must be combined with another field). Tip: a name or classification search returns many licenses from one lookup. |
maxResults | integer | no | — | Cap on the number of records returned PER ENTRY, not per run — so a batch cannot silently return only the first 50 rows overall and read as 'the rest don't exist'. Defaults to 50. Unset: 50 per live search; every match per export search. |
cities | array | no | [] | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Several cities in ONE run, each searched separately. Combined with 'City' if you fill both. |
zip | string | no | — | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): A 5-digit ZIP code, matched against the licence's address ZIP, e.g. '29209'. |
zips | array | no | [] | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Several ZIP codes in ONE run, each searched separately. |
classifications | array | no | [] | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Several classifications in ONE run. A contractor holding two of them is returned (and billed) once. |
licenseType | string | no | — | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Filter by licence type, e.g. 'General Contractor', 'Mechanical Contractor', 'Construction Manager'. A word from the type is enough. |
licenseTypes | array | no | [] | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Several licence types; a licence matching any of them is kept. |
statuses | array | no | — | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Licence statuses to include, e.g. Active, Lapsed, Suspended, Closed. Default: Active only. Empty list = every status (the roster keeps every licence ever issued, and only about 45% are Active). Unset: Active on the export; every status on a live search (a live search filters its rows by these words when set). |
statewide | boolean | no | false | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Return every licence that passes the status, licence-type and state filters, with no city, ZIP or classification. Without it, a run with no city, ZIP, classification or licence type returns the free Discovery lists instead. |
inSouthCarolinaOnly | boolean | no | — | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): Keep only licences with a South Carolina address. Many commercial licences are held by out-of-state firms (most often North Carolina and Georgia); turn this off to include them. Unset = on. |
listOptionsOnly | boolean | no | false | Statewide export (a monthly snapshot of SC LLR's Commercial Contractors board, no CAPTCHA, no search fee): If true, return every city and every classification (with its code) on the roster, each with its count of licences. Free, not charged. |
status | string | no | — | One status; same as Statuses. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional, for the live search only (the export never contacts LLR). LLR is reachable directly; set a proxy only if a run is blocked. |
Pricing
Two charges: a per-search fee (search, $0.02/search) plus a
per-match fee (license-match, $0.01/match).
Example: a search returning 25 license matches ≈ $0.27.
An empty search is billed only the $0.02 search fee.
FAQ
Where does the data come from?
The official South Carolina Department of Labor, Licensing & Regulation (LLR) public contractor registry at verify.llronline.com.
What can I search by?
A business or licensee last name, a first name, an exact license number, a city, and/or a contractor classification (e.g. GENERAL CONTRACTOR). Combine fields to narrow results; results are deduped by license number.
What fields do I get?
License number, status, license type/classification, business name (and DBA), individual licensee name, and city — plus a link to the official SC LLR contractor search to re-check the license there.
How am I charged?
Two charges: a small per-search fee that covers the live, CAPTCHA-gated lookup, plus a per-match fee for each license returned. A search with no matches is billed only the per-search fee.
Can I export every contractor, not just search?
Yes. Set mode to export (or give cities, ZIPs, classifications, licence types or statewide) and the run filters a monthly snapshot of LLR's Commercial Contractors board instead of searching live: no CAPTCHA, no search fee, 'License match' per row. It defaults to Active licences with a South Carolina address; the run log states the sweep date.
Why is there a per-search fee when other lookup actors don't have one?
The SC LLR portal gates every search behind a CAPTCHA, which costs real money to clear on each run. The per-search fee covers that; because one search can return many contractors, the per-match cost stays low.
Is this personal data?
It's public professional-license data (business and license-holder records as SC LLR publishes them); we add no personal/PII enrichment.
How current is it?
It reflects the live SC LLR registry at lookup time.
Guides & use cases
Related actors