Why You Can't Just Pull the Permits Yourself
See Territory Feed Coverage →Snapshot
91
Jurisdictions with no online portal
448
Raw permit-type strings, one region
12
Permit types, unified from those 448
Pickens County
New Building - Commercial
Three apartment buildings on Aspen Way, filed 2022, $1.46M / $2.80M / $1.47M.
Scope of work reads: “Apartment Building 1”.
City of Spartanburg
New Multi-Family Apartments
48-unit new construction, $9.74M.
Scope of work reads: “New Construction Apartments - 48 Total Units”.
City of Greenville
Residential, New Five Or More Family
New apartment building, $10.61M.
Scope of work reads: “new multi-family apartment building”.
Real permits from public county and city records. Same kind of building, three filing cabinets, three words for it.
The Same Apartment Building, Three Different Filing Cabinets
Start with the problem that breaks every do-it-yourself attempt. Three permit offices in the same region, all recording the construction of an apartment building, none of them using the same word for it. See the exhibit above.
Two of those three put the word commercial on housing. Anderson County does the same: a permit typed Commercial Building Permit whose scope of work says “Residential apartments.” The City of Greenville files entire complexes under Site Application - Commercial.
If you filter on the permit type, which is the obvious thing to do, you miss the buildings. If you filter on the word “commercial” you catch houses. The only thing that actually works is reading the scope-of-work text and reclassifying every record against a single vocabulary.
448 → 12
Across the Upstate, 163,780 permits arrive as 448 distinct type strings. We publish them as 12.
Each Office Invents Its Own Vocabulary
There is no shared standard, so the size of the dialect is whatever each office happened to build. One county maintains 117 permit types. The city next door manages with four.
| Permit office | Permits | Type strings |
|---|---|---|
| Pickens County | 22,426 | 117 |
| Spartanburg County | 56,638 | 94 |
| Greenville County | 26,181 | 68 |
| Clemson | 16,215 | 46 |
| City of Greenville | 3,651 | 30 |
| Oconee County | 30,594 | 27 |
| Easley | 1,271 | 26 |
| City of Spartanburg | 655 | 21 |
| Greer | 4,249 | 20 |
| Anderson County | 1,817 | 10 |
| City of Anderson | 83 | 4 |
One New Single-Family House, Eight Ways to Say It
Every string below describes the same thing: somebody is building a house.
| Office | What they call it | Count |
|---|---|---|
| Spartanburg County | New Single Family House | 12,750 |
| Oconee County | Residential Permit | 4,517 |
| Greenville County | RESIDENTIAL NEW CONSTRUCTION | 3,802 |
| Pickens County | Single Family/Duplex | 3,462 |
| Clemson | Building (Residential) - New Construction | 736 |
| City of Greenville | Residential, New Single Family | 526 |
| Easley | building | 170 |
| Greenville County | TINY HOUSE | 10 |
Oconee County's entry is the quietly expensive one. Residential Permit is a single bucket that does not distinguish a new house from a water heater replacement. There is no filter you can write against that field. The classification has to be rebuilt from the description text.
The Fields Are Typed by Hand, and It Shows
These are free-text entry boxes with no validation behind them. What a clerk types is what you get.
Easley's Permit-Type Field, Verbatim
BUILDING building builidng buiulding building` BBUILDING electrical RELECTRICAL plumbing MECHANICAL HVAC
Six spellings of the word “building.” The same office's status field contains ISSUED 1,269 times, isued once, and IISUED once. A literal string match drops those two permits on the floor.
Nobody Agrees on What “Finished” Means
| Office | Status values | Vocabulary |
|---|---|---|
| Greenville County | 16 | CLOSED, ISSUED, CO, PERMIT PRINTED, APPROVED… |
| Spartanburg County | 15 | Complete, Expired, Issued, Void, In Review… |
| Clemson | 11 | Complete, Expired, CO Issued, Issued, Denied… |
| Greer | 10 | CLOSED, ISSUED, REJECTED, APPROVED, INPROGRESS… |
| City of Greenville | 2 | Issued, Closed |
| Oconee County | 0 | no status field at all |
Greenville County's CO means certificate of occupancy. Clemson writes the same concept as CO Issued. Nobody else records it. Oconee County publishes no status whatsoever, so “is this job still open?” is a question their data cannot answer.
The Dollar Figure Is Missing More Often Than Not
Valuation is the field that tells you whether a job is worth a phone call. Two offices in the region have never published it.
| Office | Permits | No dollar value |
|---|---|---|
| Greer | 4,249 | 100.0% |
| City of Anderson | 83 | 100.0% |
| Greenville County | 26,181 | 78.2% |
| Oconee County | 30,594 | 71.5% |
| Pickens County | 22,426 | 48.0% |
| Spartanburg County | 56,638 | 20.6% |
| Easley | 1,271 | 0.9% |
And the Address Is a Different Shape in Every County
| Office | Address as published | City field |
|---|---|---|
| Greenville County | 110 Caitlin Ct | NULL |
| City of Greenville | 3119 N Pleasantburg Dr Ste Greenville SC | Greenville |
| Spartanburg County | 211 J St Greer SC 29651 | Greer |
| Oconee County | 385 Grandview Farm Dr Seneca SC 29678 | NULL |
| Greer | 105 E Hunt St, Greer, SC 29650 | Greer |
Bare street, street with city and state, full postal with ZIP, comma-delimited, and a stray Ste with no suite number after it. Greenville County publishes no city at all. That's why handing its raw address to a national geocoder returns coordinates in Mississippi. There really is a street called Shoemaker Road in more than one state.
Most Jurisdictions Have Nothing to Connect To
The dialect problem only applies to offices that publish data at all. We probed every county and every incorporated place over 15,000 people within 150 miles of Greenville. This is what came back.
Read the red band first. Ninety-one jurisdictions have no online portal of any kind. Laurens County, South Carolina: “there is no online portal at all.” Carter County, Tennessee: “permits are handled via paper application picked up in person or by phone.” No amount of engineering produces a feed from a filing cabinet.
Another 45 sit behind a login wall or a firewall. For the ones that do publish something, the format is often a document rather than data: planning agendas as RSS plus PDF, county council records as scanned PDFs with code-named files, tax sale lists that have to be run through a text extractor to get an address out.
1 in 4
Fewer than one jurisdiction in four is reachable as structured data. The rest is paper, logins, and PDFs.
And Then It Breaks, Quietly
Acquiring the data once is the easy half. These are other people's systems, changed without notice, and the failures do not announce themselves. Every entry below is from a single recent stretch of operating this pipeline.
-
Aug 2026
A statewide parcel service went behind a token South Carolina DOT's parcel layer, used to place permits on the map, started requiring authentication. Because the service reports failures with an HTTP 200 status and an error in the body, every lookup came back looking like a legitimate “this parcel does not exist.” The pipeline cached those answers. 311 permits went unmappable while the daily job reported success.
-
Apr 2026
A city feed froze without a notice The City of Spartanburg's dashboard stopped updating on 10 April. The endpoint still answers. It still returns 953 records. Nothing about the response says the data behind it stopped moving four months ago.
-
Jul 2026
A results grid silently capped itself One county portal returns at most 1,000 rows per search and sorts them oldest first. Ask for six weeks and it withholds the newest permits (exactly the ones anybody is waiting on) while every page you were offered loads perfectly.
-
Aug 2026
A county was being cut in half by its own bounding box Spartanburg County extends further east than the coordinate boundary we validated against. Permits in the eastern third of the county were geocoded correctly and then discarded as implausible. Nothing errored.
None of these produced an error message. Each was found by checking output against expectation, which is a thing somebody has to do on purpose, on a schedule, forever.
What You're Actually Buying
Not access to public records. You already have that, and so does everybody else. You're buying the part between the record and the usable answer: every reachable jurisdiction in your territory pulled daily, every dialect translated into one vocabulary, addresses resolved to real coordinates, and somebody watching the whole thing for the failures that don't announce themselves.
The alternative is a search box, a login you don't have, and 91 offices that would like you to come down in person.
For the shorter, less technical version of this same argument (aimed at a contractor deciding whether to build this in-house), see Every Permit in Greenville Is Public.
Every figure on this page is a live query against the Pemberton Data Solutions permit warehouse or the jurisdiction recon conducted 21 July 2026. Permit counts reflect the Upstate footprint of 163,780 records across 11 sources. Jurisdiction universe: all counties and incorporated places over 15,000 population within 150 straight-line miles of downtown Greenville, South Carolina, probed by live smoke test. Permit numbers, valuations, and scope-of-work text are quoted from public records as published by the issuing office.
Want This Coverage for Your Territory?
66 jurisdictions are already built or ready to build. See which ones are live near you, and what a Territory Feed subscription actually includes.
See Plans & Coverage →