Publicaccessnow APIsc-charleston.publicaccessnow.com ↗
Access Charleston County, SC property assessment data by parcel ID. Returns owner info, market values, acreage, year built, exemptions, and sales history.
What is the Publicaccessnow API?
The Charleston County Public Access property API exposes 12 structured fields per parcel via a single lookup_property_by_pin endpoint. Submit a 10-digit PIN and receive the current owner name, mailing address components, land and market values, acreage, year built, active exemptions, and tax year — all sourced from the Charleston County Aumentum public access portal.
curl -X GET 'https://api.parse.bot/scraper/2fe2a59f-dce1-477c-a9de-1a819a498fa2/lookup_property_by_pin?pin=4611303102' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace sc-charleston-publicaccessnow-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.charleston_county_property_records_api import CharlestonCounty, Property, PropertyNotFound
client = CharlestonCounty()
# Look up a property by its 10-digit PIN
prop = client.properties.get(pin="4611303102")
# Access typed attributes of the property
print(prop.pin, prop.owner_name, prop.property_address)
print(prop.city, prop.zip, prop.neighborhood)
print(prop.property_class, prop.acreage, prop.mailing_address)
print(prop.land_value, prop.building_value, prop.market_value, prop.assessed_value)
print(prop.year_built, prop.living_area_sqft, prop.last_sale_date, prop.last_sale_price)
# Walk sales history sub-objects
for sale in prop.sales_history:
print(sale.date, sale.grantor, sale.grantee, sale.deed_price, sale.deed)
# Handle a property that doesn't exist
try:
missing = client.properties.get(pin="0000000000")
except PropertyNotFound as e:
print(e.pin)
Look up property assessment data by PIN (parcel ID number). Returns owner information, property address, assessed/market values, property characteristics, and sales history from the Aumentum public access portal. Values data (land_value, building_value, market_value, assessed_value, tax_year) may be null when the secondary assessor source is unavailable.
| Param | Type | Description |
|---|---|---|
| pinrequired | string | 10-digit parcel ID number with no dashes or spaces (e.g., '4611303102') |
{
"type": "object",
"fields": {
"pin": "string - Parcel ID number",
"zip": "string - ZIP code",
"city": "string - City name",
"acreage": "number or null - Property acreage",
"tax_year": "integer or null - Tax year for the assessment data",
"exemptions": "array of strings - Active exemptions",
"land_value": "integer or null - Land market value in dollars",
"owner_name": "string - Current owner name",
"year_built": "integer or null - Year the dwelling was built",
"market_value": "integer or null - Total market value in dollars",
"neighborhood": "string - Neighborhood code and name",
"tax_district": "string or null - Tax district",
"sales_history": "array of objects with book, page, date, grantor, grantee, type, deed, deed_price",
"assessed_value": "integer or null - Total assessed value in dollars",
"building_value": "integer or null - Building/improvement value in dollars",
"last_sale_date": "string or null - Date of most recent sale (MM/DD/YYYY)",
"property_class": "string - Property classification code and description",
"last_sale_price": "integer or null - Price of most recent sale in dollars",
"mailing_address": "string - Owner mailing address",
"living_area_sqft": "integer or null - Total finished living area in sq ft",
"property_address": "string - Street address",
"legal_description": "string - Legal description of property"
},
"sample": {
"data": {
"pin": "4611303102",
"zip": "29403",
"city": "CHARLESTON",
"acreage": 0.79,
"tax_year": null,
"exemptions": [],
"land_value": null,
"owner_name": "LRA PROMENADE LLC",
"year_built": null,
"market_value": null,
"neighborhood": "261351 PC51 COMMERCIAL STRIPS",
"tax_district": null,
"sales_history": [
{
"book": "1150",
"date": "11/28/2022",
"deed": "Ge",
"page": "351",
"type": "M",
"grantee": "LRA PROMENADE LLC",
"grantor": "Multiple Owners",
"deed_price": 7500000
}
],
"assessed_value": null,
"building_value": null,
"last_sale_date": "11/28/2022",
"property_class": "952 - VAC-COMM-LOT",
"last_sale_price": 7500000,
"mailing_address": "3284 NORTHSIDE PARKWAY STE 570, ATLANTA GA 30327",
"living_area_sqft": null,
"property_address": "MORRISON DR",
"legal_description": "PolTwp MapPlatB L21 MapPlatP 0036 SubdivisionName CITY OF CHARLESTON Block Lot C GovLot Tract"
},
"status": "success"
}
}About the Publicaccessnow API
What the API Returns
The lookup_property_by_pin endpoint accepts a single required parameter — pin, a 10-digit parcel identification number with no dashes or spaces (for example, 4611303102) — and returns assessment data for that parcel as recorded in Charleston County's public property records. Response fields include owner_name, city, zip, acreage, year_built, tax_year, land_value, market_value, and an exemptions array listing any active exemptions such as homestead or agricultural exemptions on the parcel.
Values and Assessment Data
All monetary values (land_value, market_value) are returned as integers representing US dollars, or null if not available for the parcel. The tax_year field indicates which assessment cycle the values belong to. The exemptions array will be empty if no exemptions are active — it will never be omitted from the response. acreage and year_built are similarly nullable for parcels where the county record lacks that detail.
Coverage and Scope
Coverage is limited to Charleston County, South Carolina parcels indexed in the public Aumentum portal. The endpoint is best suited for residential and commercial parcels with an assigned 10-digit PIN. Vacant land parcels may return null for year_built and may carry reduced value data depending on the county record. You must know the PIN in advance; the endpoint does not support address-based or owner-name-based lookups.
The Publicaccessnow API is a managed, monitored endpoint for sc-charleston.publicaccessnow.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sc-charleston.publicaccessnow.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official sc-charleston.publicaccessnow.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Verify current owner name and address for a Charleston County parcel before a real estate transaction
- Pull land and market values for a set of PINs to build a comparative valuation dataset
- Check active exemptions (e.g., homestead) on a parcel to estimate net tax liability
- Retrieve year_built and acreage for property condition assessments or underwriting workflows
- Monitor tax_year changes across a portfolio of Charleston County investment properties
- Populate a GIS or mapping tool with assessed values and ownership data keyed to parcel ID
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Charleston County's public access portal have an official developer API?+
What does the lookup_property_by_pin endpoint return beyond owner name and value?+
owner_name, land_value, and market_value, the endpoint returns city, zip, acreage, year_built, tax_year, and an exemptions array. The exemptions field lists any active county exemptions by name. All value fields are integers in dollars, with null used where the county record is absent.Can I search by property address or owner name instead of PIN?+
pin as its only lookup key. Address-based or owner-name-based search is not covered. You can fork the API on Parse and revise it to add an address or owner-name search endpoint.Does the API return sales history for a parcel?+
How current is the assessment data?+
tax_year field in each response indicates the assessment cycle reflected in the values. Charleston County updates assessment records on their own schedule; the API returns whatever the public portal shows at the time of the request. There is no historical archive — only the current record for a given PIN is available.