← Health board

LLR

South Carolina Contractor Directory & Leads Scraper (LLR)

Every South Carolina commercial contractor licensed by SC LLR, with phone, street address, classification and owner. Filter by city, ZIP, classification and status.

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

Verification

33%golden-diff success
18canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
business_namestring|null
person_namestring|null
phonestring|null
addressstring|null
citystring|null
zip_codestring|null
address_statestring|null
statestring|null
license_numberstring|null
license_typestring|null
statusstring|null
classificationsarray|null
expiration_datestring|null
issue_datestring|null
qualified_bystring|null
officersarray|null
qualifiersarray|null
requested_citystring|null
requested_zipstring|null
requested_classificationstring|null
matched_bystring|null
city_namestring|null
classificationstring|null
classification_codestring|null
licencesinteger|null
noticestring|null
notice_typestring|null
source_urlstring|null

Sample row

{
  "business_name": "RUMSEY CONSTRUCTION & RENOVATION LLC — DBA: RUMSEY CONSTRUCTION & RESTORATION",
  "phone": "(803) 764-0222",
  "address": "2630 SHOP RD",
  "city": "COLUMBIA",
  "address_state": "SC",
  "zip_code": "29209-4600",
  "license_number": "100101",
  "license_type": "GENERAL CONTRACTOR",
  "status": "ACTIVE",
  "classifications": [
    "Building-BD5"
  ],
  "issue_date": "09/15/1999",
  "expiration_date": "10/31/2028",
  "officers": [
    {
      "role": "President / Owner",
      "name": "BRENDON RUMSEY"
    },
    {
      "role": "Vice President",
      "name": "TONY RUMSEY"
    }
  ],
  "qualifiers": [
    "RUMSEY TONY (CQG)"
  ],
  "qualified_by": "Financial Statement",
  "source_url": "https://verify.llronline.com/LicLookup/Contractors/Contractor.aspx?div=69"
}

Inputs

FieldTypeReqDefaultDescription
listOptionsOnly boolean no false If true, return every city and every classification (with its code) on the roster, each with its count of licences. Free, not charged.
city string no "Columbia" The city on the licence's address, e.g. 'Columbia', 'Greenville', 'Myrtle Beach'. Exact match; case and punctuation are ignored. A city with no matching licence returns a free row saying so.
cities array no [] Several cities in ONE run, each searched separately. Combined with 'City' if you fill both.
zip string no — A 5-digit ZIP code, matched against the licence's address ZIP, e.g. '29209'.
zips array no [] Several ZIP codes in ONE run, each searched separately.
classification string no "Building" An SC LLR classification, by code ('BD', 'AC', 'EL', 'PB') or by a word from its name ('Building', 'Air Conditioning', 'Electrical', 'plumb'). Leave empty for every classification. Discovery Mode lists them all.
classifications array no [] Several classifications in ONE run. A contractor holding two of them is returned (and billed) once.
licenseType string no — Filter by licence type, e.g. 'General Contractor', 'Mechanical Contractor', 'Construction Manager'. A word from the type is enough.
licenseTypes array no [] Several licence types; a licence matching any of them is kept.
statuses array no ["Active"] 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).
statewide boolean no false 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 true 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.
maxResults integer no — Cap on the contractors returned PER city/ZIP + classification search, not per run. Leave empty to return every match.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 500 contractor records at $0.002/result ≈ $1.00.

FAQ

Where does the data come from?

SC LLR's public contractor licence lookup (Contractor's Licensing Board, commercial contractors). We sweep it once a month: every search plus every licence's detail page, which is where the phone, street address and officers are. The run log states the date of the sweep.

How current is it?

Up to about a month old. The current roster was read on 2026-10-24. A licence issued or renewed since the last sweep shows its state as of that sweep. To confirm one contractor's live status, check it on LLR's site.

Does it include email addresses?

No. LLR does not publish an email for contractors. Phone and street address are on almost every row.

Does it cover residential builders and specialty trades?

No. This is LLR's commercial contractor licence (General and Mechanical Contractors and Construction Managers). Residential builders and residential specialty contractors are licensed by a different LLR board and are not in this roster.

How do I search by trade?

Use 'classification' with a code (BD Building, EL Electrical, PB Plumbing, AC Air Conditioning, RF Roofing, GD Grading, WL Water & Sewer Lines, ...) or a word from its name ('roofing', 'plumb'). Run once with Discovery Mode on to get every classification with its code and count, free.

Why are there fewer rows than LLR's search shows?

By default the actor returns Active licences with a South Carolina address. On 2026-10-24 that was 11,476 of 45,025 licences. Clear the 'Statuses' list to get every status, and turn off 'South Carolina addresses only' to include out-of-state firms.

What happens if the monthly data cannot be loaded?

The run returns one free notice row saying so and charges nothing. It never returns a silent empty result.

How am I charged?

One event per contractor returned. Discovery lists, unknown-city notices and the unavailable notice are free.

Guides & use cases

Related actors