← Health board

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.

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

Verification

84%golden-diff success
43canary 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
matched_bystring|null
source_urlstring|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

FieldTypeReqDefaultDescription
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