Skip to Content
Hey Town Hall Data docs
Land use

API reference · Land use

List published fees

View as Markdown
GET
/v1/fees

Each fee row a permit's fee page prints, label and amount as printed. A body's full fees and charges schedule is a bylaw (GET /v1/bylaws?subject=fees_charges); its rows are in the bylaw's text, not here. Billed as one records request a page. Filters: jurisdiction, region, country, kind, since.

Authorization

bearerAuth
headerAuthorizationBearer <token>

htd_test_ (sandbox, free, fictional towns) or htd_live_ (live, billed) key.

Query Parameters

jurisdiction?string

A jurisdiction id.

Match^[a-z0-9][a-z0-9-]{0,63}$
region?string

A two-letter province or state code.

country?string

CA or US.

kind?string

The permit kind whose fee page prints the row, such as building.

Match^[a-z][a-z0-9_]{0,60}$
since?string

Records read at or after this instant: what is new since your last read.

limit?integer

Results a page, 1 to 100. Default 25.

cursor?string

next_cursor from the previous page.

Response Body

A page.

application/json
  1. response
query*

The filters as the API read them, defaults included.

as_of*string

ISO 8601 instant, UTC.

results*array<>
next_cursor*|

Pass as cursor for the next page; null on the last.

environment*string

sandbox answers carry fictional towns.

Value in"sandbox""live"
Example Request
curl -X GET 'https://data.heytownhall.com/v1/fees'
Example Response
{  "query": {    "property1": null,    "property2": null  },  "as_of": "string",  "results": [    {      "id": "string",      "jurisdiction_id": "string",      "country": "string",      "region": "string",      "permit_kind": "string",      "position": 0,      "label": "string",      "amount_printed": "string",      "fee_heading": "string",      "fee_bylaw_number": "string",      "source_url": "string",      "read_at": "string"    }  ],  "next_cursor": "string",  "environment": "sandbox"}