---
title: "Search Planning Applications"
method: GET
path: "/api/v1/planning_applications"
tags: ["planning_applications"]
---

# Search Planning Applications

`GET /api/v1/planning_applications`

## Request

- Base URL: `https://statsmapped.com`
- URL: `https://statsmapped.com/api/v1/planning_applications`
- Auth: none declared

Search DHLGH's National Planning Applications (migration 084's
`planning_applications`), all 31 Irish local authorities.

Every filter is optional and AND-ed together. Results are ordered by received_date
desc, id desc (newest first, id as a stable tiebreaker) -- the same ordering the
cursor's keyset comparison is built on.

ONLY these fields are ever returned: authority, application number, type, status,
decision, land use, units, floor area, one-off-house flag, every date field, and
the appeal fields. There is no applicant name, no address, no exact coordinate, and
no free-text development description -- the underlying table has no column for any
of those (see PlanningApplication's own docstring).

## Query parameters

- `local_authority_id` string, nullable: Exact geographies.id match (e.g. 'la:kerry-county-council').
- `application_type` string, nullable: Exact match on application_type (e.g. 'PERMISSION').
- `application_status` string, nullable: Exact match on application_status (e.g. 'GRANTED').
- `decision` string, nullable: Exact match on decision.
- `one_off_house` string, nullable: Exact match on one_off_house ('Y'/'N' as published).
- `date_from` string, date, nullable: received_date >= this.
- `date_to` string, date, nullable: received_date <= this.
- `cursor` string, nullable: From a previous response's next_cursor; omit for page 1.
- `limit` integer

## Response `200`

Successful Response

- PlanningApplicationSearchResponse
  - `country` string
  - `results` PlanningApplication[], required
    - `country` string
    - `application_number` string, required
    - `local_authority_id` string, nullable
    - `application_type` string, nullable
    - `application_status` string, nullable
    - `decision` string, nullable
    - `decision_class` string, nullable
    - `land_use_code` string, nullable
    - `area_of_site` number, nullable
    - `area_of_site_unit` string, nullable
    - `num_residential_units` integer, nullable
    - `floor_area` number, nullable
    - `one_off_house` string, nullable
    - `received_date` string, nullable
    - `withdrawn_date` string, nullable
    - `decision_date` string, nullable
    - `decision_due_date` string, nullable
    - `grant_date` string, nullable
    - `expiry_date` string, nullable
    - `appeal_ref_number` string, nullable
    - `appeal_status` string, nullable
    - `appeal_decision` string, nullable
    - `appeal_decision_date` string, nullable
    - `appeal_submitted_date` string, nullable
  - `next_cursor` string, nullable
  - `total_count` integer, nullable
  - `publisher` string, nullable
  - `source_url` string, nullable
  - `license` string, nullable
  - `licence_class` string, nullable
  - `licence_restrictions` string[]
  - `attribution` string, nullable
  - `record_note` string, nullable

## Other responses

- `400`: Bad request
- `401`: Missing or invalid credentials
- `403`: Not authorized for this request
- `404`: Not found
- `422`: Validation error
- `429`: Rate limited

---

[API](https://skmtc.dev/statsmapped/apis/statsmapped-api.md) · [All operations](https://skmtc.dev/statsmapped/apis/statsmapped-api/llms.txt) · [OpenAPI document](https://skmtc.dev/statsmapped/apis/statsmapped-api/revisions/7c5b264d05b7?raw)
