---
title: "Courthouse address, phone and nearby parking for an NC county"
method: GET
path: "/api/courthouse-info"
---

# Courthouse address, phone and nearby parking for an NC county

`GET /api/courthouse-info`

## Request

- Base URL: `https://app.courtdelta.com`
- URL: `https://app.courtdelta.com/api/courthouse-info`
- Auth: none required

Courthouse venues for a county: address, phone, HOURS and parking attributes from the NC AOC directory (all 100 counties, 121 locations), plus nearby-parking and a static map from the NC Courts scrape. LOCATION INFO ONLY: nothing about hearings, charges or case status. RETURNS `locations[]`, NOT ONE COURTHOUSE — 19 counties have several venues (Wake has a Courthouse, a Justice Center and a Clerk's office; Guilford has Greensboro and High Point), and `multipleLocations:true` means the caller must disambiguate rather than assume. To pick the right one, match `lookup_court_case`'s `upcomingHearings[].location` against `locations[].name`, allowing 'Co.' vs 'County' — but DO NOT force it: on real hearings about a third have 'No location', and some names differ entirely ('Buncombe Co. Judicial Complex' is the Buncombe County Courthouse, 'Alamance Co. JB Allen' is the Alamance County Courthouse). Show the options when it doesn't map. HOURS ARE REAL, and a value like '08:30-12:30, 13:30-17:00' means the venue CLOSES FOR LUNCH — say so, since arriving in the gap finds a locked door. Courts also close on NC state holidays, which hours do not encode. `parkingAttributes` ('freeLot', 'paidGarage', 'onSite'…) are what the venue publishes; ABSENT MEANS NOT CLAIMED, NOT 'no parking'. `nearbyParking` and `parkingMapUrl` appear on AT MOST ONE location — the one the scrape described — so their absence elsewhere says nothing about those venues. `source:'nccourts-scrape'` means the directory had no entry and hours will be empty. Cite the disclaimer — verify with the clerk before travelling. Also exposed as the `court_visit_info` tool on the MCP server.

## Query parameters

- `county` string
- `case` string

## Response `200`

All courthouse venues in the county, with hours

- object
  - `county` string
  - `locationCount` integer
  - `multipleLocations` boolean: True when the county has several venues and the caller must disambiguate.
  - `source` 'nc-aoc-directory' | 'nccourts-scrape' | 'none'
  - `locations` object[]
    - `name` string
    - `address` string, nullable
    - `phone` string, nullable
    - `altPhones` string[]
    - `hours` object: Day key -> '08:30-17:00'. A comma-separated value means the venue closes for lunch. Empty when unknown.
    - `parkingAttributes` string[]: freeLot | freeStreet | freeGarage | paidLot | paidGarage | paidStreet | onSite. Absent = not claimed, NOT none.
    - `accessibility` string[]: Per-building flags: wheelchairEntrance | wheelchairParking | wheelchairRestroom | wheelchairSeating | restroom | assistedListening. An ABSENT flag is NOT a claim the feature is missing — all 121 venues claim wheelchair entrance/parking/restroom but only 15 claim accessible seating, and none publish assisted-listening data. Report what is claimed and advise calling to confirm the rest; never infer 'not accessible' from silence.
    - `category` string
    - `url` string, nullable
    - `nearbyParking` unknown[]: Only on the one venue the scrape described.
      - unknown
    - `parkingMapUrl` string, nullable
    - `latLng` object, nullable
  - `sourceUrl` string, nullable
  - `disclaimer` string

## Other responses

- `400`: No county/case given, county not derivable from the case number, or not an NC county
- `502`: The NC Courts site could not be reached

---

[API](https://skmtc.dev/courtdelta/apis/court-delta-public-api.md) · [All operations](https://skmtc.dev/courtdelta/apis/court-delta-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/courtdelta/apis/court-delta-public-api/revisions/813e5b14be89?raw)
