REST API Reference

AppealBase API v1 — search and retrieve UK planning appeals

Overview

The AppealBase REST API lets you search planning appeals (England) and fetch full decision text by reference. All endpoints require an API key and return JSON. Your API key must be linked to a user account; usage is rate-limited per account tier per calendar month.

Quick start

  1. Get an API key from Request API access.
  2. Search: POST /api/v1/search with Authorization: Bearer YOUR_KEY and body {"query": "green belt", "pageSize": 5}.
  3. Retrieve: use reference from a search result in POST /api/v1/retrieve with {"reference": "6001357"}.

Base URL

https://www.appealbase.com

All endpoint paths below are relative to this base.

Authentication

Send your API key in the Authorization header as a Bearer token:

Authorization: Bearer YOUR_API_KEY

Your API key must be linked to an AppealBase user account. If not, requests return 403 Forbidden with a message to contact support.

Send request bodies as JSON with Content-Type: application/json.

Rate limiting

Each API key is tied to a user account with an account tier. Tiers have a monthly call limit (number of requests per calendar month). Limits vary by tier (e.g. 1000 requests/month for standard). When you exceed the limit, the API returns 429 Too Many Requests with an error message and your limit. Limits reset at the start of each calendar month.

Contact info@appealbase.com to discuss higher limits or a different tier.

Error responses

Errors are returned as JSON with an error field. Rate limit responses also include limit.

StatusMeaning
400Bad request (e.g. missing or invalid parameters)
401Missing or invalid API key
403API key not linked to a user account
404Appeal not found (retrieve only)
429Monthly rate limit exceeded
500Server error

Retrieve full decision text

POST /api/v1/retrieve

Fetch the full decision text and metadata for one appeal by its 7-digit reference (e.g. from search results).

Request body

FieldTypeDescription
referencestringRequired. 7-digit appeal reference (e.g. 3000123)

Response structure

Top-level:

FieldType
appealobject (see below)

Fields in appeal:

FieldType
created_atstring
lpa_decision_datestring \| null
received_datestring \| null
valid_datestring \| null
start_datestring \| null
decision_datestring
site_green_beltboolean \| null
agri_holdingboolean \| null
listed_buildingboolean \| null
historic_building_grantboolean \| null
conservation_areaboolean \| null
flooding_issueboolean \| null
aonbboolean \| null
sssiboolean \| null
redeterminedboolean \| null
bespokeboolean \| null
recovered_datestring \| null
not_recovered_datestring \| null
call_in_datestring \| null
costs_applied_forboolean \| null
enforcement_ground_cntnumber \| null
full_text_char_countnumber
referencestring
appeal_typestring
lpa_namestring
lpa_codestring \| null
floor_spacestring \| null
no_residencesstring \| null
lpa_app_referencestring \| null
full_textstring
costs_textstring \| null
enforcement_groundsstring \| null
decisionstring
inspector_namestring \| null
procedurestring
development_typestring \| null
appeal_type_reasonstring \| null
appeal_reasonstring \| null
type_detailstring \| null
jurisdictionstring \| null
link_statusstring \| null
lead_casestring \| null
appellantstring \| null
agentstring \| null
site_addressstring
site_areastring \| null

Example request

curl -X POST https://www.appealbase.com/api/v1/retrieve \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reference": "6001357"}'

Example response

Real response for reference: "6001357" (all fields; full_text truncated).

{
  "appeal": {
    "created_at": "2026-03-04T12:30:10.080951+00:00",
    "lpa_decision_date": null,
    "received_date": null,
    "valid_date": null,
    "start_date": null,
    "decision_date": "2026-03-04",
    "site_green_belt": null,
    "agri_holding": null,
    "listed_building": null,
    "historic_building_grant": null,
    "conservation_area": null,
    "flooding_issue": null,
    "aonb": null,
    "sssi": null,
    "redetermined": null,
    "bespoke": null,
    "recovered_date": null,
    "not_recovered_date": null,
    "call_in_date": null,
    "costs_applied_for": null,
    "enforcement_ground_cnt": null,
    "full_text_char_count": 16989,
    "reference": "6001357",
    "appeal_type": "Householder",
    "lpa_name": "Bromley",
    "lpa_code": null,
    "floor_space": null,
    "no_residences": null,
    "lpa_app_reference": "25/01852/FULL6",
    "full_text": "Appeal Decision\n\n**by R Cahalane BA(Hons) MSc MRTPI**\n\n**an Inspector appointed by the Secretary of State**\n\n**Decision date: 4[th] March 2026**\n\n**Appeal Ref: 6001357**\n**26 Standard Road, Downe, Orpington, Bromley BR6 7HL**\n\n- The appeal is made under section 78 of the Town and Country Planning Act 1990 (as amended) against a refusal to grant planning permission.\n\n- The appeal is made by Mr & Mrs J Keys against the decision of the Council of the London Borough of Bromley.\n\n... [truncated, 16987 chars total]",
    "costs_text": null,
    "enforcement_grounds": null,
    "decision": "Allowed",
    "inspector_name": null,
    "procedure": "Written",
    "development_type": null,
    "appeal_type_reason": null,
    "appeal_reason": null,
    "type_detail": null,
    "jurisdiction": null,
    "link_status": null,
    "lead_case": null,
    "appellant": "Mr & Mrs J Keys",
    "agent": null,
    "site_address": "26 Standard Road, Downe, Orpington, BR6 7HL",
    "site_area": null
  }
}

Questions or need higher limits?

Contact us for API access, tier changes, or technical support.

info@appealbase.com