South Carolina Contractor Directory & Leads Scraper (LLR)
Pricing
$0.002 / contractor record
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.
Pricing
$0.002 / contractor record
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pain points
- SC LLR's contractor search returns one name or city at a time, and every search sits behind a reCAPTCHA, so a statewide list means hundreds of solved searches.
- The phone, street address and owner are only on each licence's detail page, one click per contractor. The search results list just the name, city and status.
- Most of the roster is not useful for outreach: of 45,025 licences counted on 2026-10-24, only 20,556 are Active, and 9,080 of those Active licences belong to firms outside South Carolina.
What we solve
- Returns every matching licence in one run, with the detail-page fields already filled: phone, street address, ZIP, classifications with their licence limit, issue and expiry dates, officers and qualifiers.
- Defaults to Active licences with a South Carolina address, which is 11,476 contractors. One switch adds out-of-state firms and the empty status list returns every status.
- Filters by city, ZIP, classification (code or word, e.g. 'BD' or 'roofing') and licence type. Each filter takes a list, and a contractor found by two searches is returned and billed once.
Summary
Build a South Carolina commercial contractor prospect list in one run. Pick a city, a ZIP, a classification such as Building (BD), Electrical (EL), Plumbing (PB) or Air Conditioning (AC), or ask for the whole state. Each row is a contractor licensed by the SC Department of Labor, Licensing and Regulation (LLR), Contractor's Licensing Board, and carries the business name, phone, street address, city, ZIP, licence number and type, status, issue and expiry dates, every classification held with its licence-limit group, the officers on file and the qualifying party. On the 2026-10-24 roster, 99.1% of the 11,476 Active South Carolina contractors have a phone and 100% have a street address. LLR publishes no email. The data comes from a monthly sweep of LLR's licence lookup, including every detail page; each row says when its detail page was read. Pay only per contractor returned.
Who it's for
- Building-material suppliers and equipment dealers prospecting South Carolina commercial contractors by city or trade
- Subcontractors and general contractors building bid lists for a project in one city or ZIP
- Insurance and surety agents looking for contractors by licence-limit group and expiry date
- Market researchers sizing licensed contractor coverage across South Carolina
How to use
Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:
{"city": "Columbia","classification": "BD","maxResults": 200}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
business_name | Licensed business name, with any DBA after it |
phone | Phone number on the licence's LLR detail page |
address | Street address on file with LLR |
city | City of that address |
address_state | State of that address (SC unless you turn off 'South Carolina addresses only') |
zip_code | ZIP or ZIP+4 |
license_number | SC LLR licence number |
license_type | General Contractor, Mechanical Contractor, or a Construction Manager type |
status | Licence status as LLR shows it (Active, Lapsed, Suspended, ...) |
classifications | Every classification held, with its licence-limit group, e.g. 'Building-BD5' |
issue_date | Date the licence was first issued (MM/DD/YYYY) |
expiration_date | Licence expiry date (MM/DD/YYYY) |
officers | Officers on file, each with role and name (e.g. President / Owner) |
qualifiers | Qualifying party or parties for the licence |
qualified_by | How the licence is qualified (Financial Statement or Surety Bond) |
person_name | Licence holder's name when the licence is held by a person |
detail_as_of | When the monthly sweep read this licence's detail page |
data_as_of | When the monthly sweep started |
source_url | SC LLR's contractor licence lookup |
Sample:
{"business_name": "RUMSEY CONSTRUCTION & RENOVATION LLC \u2014 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","detail_as_of": "2026-10-24T22:27:33Z","data_as_of": "2026-10-24T21:45:44Z","source_url": "https://verify.llronline.com/LicLookup/Contractors/Contractor.aspx?div=69"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
listOptionsOnly | no | boolean | 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 | no | string | "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 | no | array | [] | Several cities in ONE run, each searched separately. Combined with 'City' if you fill both. |
zip | no | string | — | A 5-digit ZIP code, matched against the licence's address ZIP, e.g. '29209'. |
zips | no | array | [] | Several ZIP codes in ONE run, each searched separately. |
classification | no | string | "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 | no | array | [] | Several classifications in ONE run. A contractor holding two of them is returned (and billed) once. |
licenseType | no | string | — | Filter by licence type, e.g. 'General Contractor', 'Mechanical Contractor', 'Construction Manager'. A word from the type is enough. |
licenseTypes | no | array | [] | Several licence types; a licence matching any of them is kept. |
statuses | no | array | ["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 | no | boolean | 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 | no | boolean | 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 | no | integer | — | Cap on the contractors returned PER city/ZIP + classification search, not per run. Leave empty to return every match. |
Pricing (Pay Per Event)
You pay per result (dataset-item) — no charge for empty runs. Example: 500 contractor records at $0.002/result ≈ $1.00.
A statewide run with the default filters (Active, South Carolina addresses) returned 11,476 contractors on the 2026-10-24 roster, about $22.95. Discovery lists and notices are free. Apify platform usage is billed separately per your plan.
Use cases
- Outbound lead generation: pull every Active Building (BD) contractor in Columbia (228 on 2026-10-24) with phone and street address, and load it into your CRM.
- Bid lists: list every Electrical, Plumbing or Air Conditioning contractor in a project's ZIP before you send an invitation to bid.
- Renewal and surety prospecting: sort the statewide export by expiry date or by licence-limit group (BD1 to BD5) to find accounts worth a call.
- Market sizing: count licensed contractors per city and classification with the free Discovery lists, then export only the cities you need.
Why this actor
- Phone on 99.1% and street address on 100% of Active South Carolina contractors, read from each licence's own LLR detail page.
- Officers and qualifiers included: 9,736 of the 11,476 Active South Carolina contractors list at least one officer, usually the owner.
- Every classification with its licence-limit group, so a 'BD5' firm and a 'BD1' firm are told apart.
- Out-of-state licence holders and LLR's own test records are filtered out by default.
- Pay per contractor; Discovery lists and notices are free.
Limitations & updates
Covers SC LLR commercial contractor licences only (General, Mechanical and Construction Manager). Residential builders are not included. Data is from a monthly sweep, so it can be up to about a month old; each row says when it was read. No email is published. City is the city on the licence's address and is an exact match.
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. Each row carries data_as_of (when the sweep started) and detail_as_of (when its detail page was read).
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.
Which actor to choose
Part of the contractor-data suite — pick the one that fits your goal:
- North Carolina Contractor License Lookup & Verify (NCLBGC) — You work across the state line and need North Carolina general contractor licences too.
- Alabama Commercial Contractor Directory & Leads (LBGC) — You need the same commercial-contractor list with phone for Alabama.
- Florida Contractor Directory & Leads Scraper (DBPR) — You need a contractor directory for Florida.
Guides & use cases
Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:
- How-to: How to run South Carolina Contractor Directory & Leads Scraper (LLR)
- Use case: Columbia, SC Building Contractor List with Phone Numbers
More actors, coverage and nightly verification results: scrapebench.dev
Works with AI assistants (MCP)
Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.
Then just ask:
"List active Building (BD) contractors in Columbia, South Carolina, with their phone numbers and street addresses."
That search returned 228 contractors on the 2026-10-24 roster; set maxResults to keep a first call small. Runs started this way bill exactly like any other run.