Applications

List planning applications

Search and filter UK planning applications. Supports keyword search, council filtering, exact postcode or outward-code lookup, broad postcode_prefix lookup, status, application type, and date ranges. Results are sorted by applicationDate desc, then firstSeenAt desc. Free keys return historical application identity/location/description and receipt/validation dates only, not current state, documents, check timestamps or enrichment. The access object documents omitted fields. Status, decision, UPRN and include filters require a paid plan; broad harvest-style searches are restricted on free.

get/v1/applications

Request

  • Base URL: https://api.planwire.io
  • URL: https://api.planwire.io/v1/applications
  • Auth: API key in header X-API-Key

Query parameters

qstring

Full-text search across address, description, reference, and postcode

councilstring

Filter by council ID (e.g. 'camden', 'oxford')

council_idstring

Alias for council. Filter by council ID (e.g. 'camden', 'argyll-bute')

postcodestring

Exact full postcode or exact outward code. For example, postcode=LE2 matches applications whose own outward code is LE2; it does not match LE20. Use postcode_prefix for broad prefix scans.

postcode_prefixstring

Broad postcode prefix search. For exact full postcode or exact outward-code matching, use postcode.

uprnstring

Filter to records attached to one Unique Property Reference Number.

uprn_instring

Comma-separated list of up to 100 UPRNs for portfolio or internal asset matching.

status'Pending' | 'Approved' | 'Refused' | 'Withdrawn'

Filter by status: Pending, Approved, Refused, Withdrawn

typestring

Filter by application type (e.g. Householder, Full, Listed Building)

date_fromstring date

Filter by applicationDate from (receivedDate/validatedDate, YYYY-MM-DD)

date_tostring date

Filter by applicationDate to (receivedDate/validatedDate, YYYY-MM-DD)

validated_fromstring date

Inclusive council validatedDate lower bound. No received-date fallback; missing validation dates are excluded. Intersects other filters. Validation-only searches sort by validatedDate and id ascending and use page pagination.

validated_tostring date

Inclusive council validatedDate upper bound, on or after validated_from when both are provided.

changed_sincestring date-time

Paid plans: inclusive stored-record updatedAt lower bound, including new records and updates to old or undated applications. ISO timestamp with timezone, up to six fractional digits. Not council publication time, a decision-only log, a deletion feed or an exactly-once stream. Sorts by updatedAt and id ascending. Follow meta.nextCursor with the same filters until null; do not use page offsets. Overlap subsequent polling windows and upsert by id to account for in-flight writes and replica lag. Maintenance writes may be included.

changed_beforestring date-time

Exclusive stored-record updatedAt upper bound. Requires changed_since; must be later than it and not in the future. Defaults to first request time; meta.changedBefore and cursors retain that bound. Only advance the polling checkpoint after all pages succeed; overlap the next window and periodically reconcile tracked records.

cursorstring

Opaque meta.nextCursor from changed-since results. Repeat the same selection filters. Cannot be used without changed_since or with page other than 1. Date-window responses have meta.hasMore and omit exact totals; change-window responses also have meta.changedSince, meta.changedBefore and meta.nextCursor (null when finished).

pageinteger

Page number for ordinary or validation-only searches. Changed-since searches require cursor pagination instead.

limitinteger

Paid max 100 per page; free keys are capped at 10.

includestring
Example:supplier

Set to supplier to add pilot-1 supplierInsights: description-rule classifications, literal quantities, explicit references and geographic reasons. No demand or construction-start inference. Existing auth, metering and data-access limits apply.

Response

Success

Example response

{
  "data": [
    {
      "councilId": "camden",
      "reference": "2025/0234/P",
      "applicationType": "Householder",
      "status": "Pending",
      "council": {
        "id": "hounslow",
        "name": "London Borough of Hounslow"
      },
      "source": {
        "type": "assure",
        "label": "Assure"
      },
      "freshness": {
        "recordCheckError": "source_timeout"
      },
      "nearbyPrices": {
        "periodYears": 2
      },
      "supplierInsights": {
        "classification": {
          "roleEvidence": {
            "field": "description"
          },
          "categories": [
            {
              "evidence": {
                "field": "description"
              }
            }
          ]
        },
        "quantities": {
          "dwellingMentions": [
            {
              "evidence": {
                "field": "description"
              }
            }
          ],
          "floorAreaMentions": [
            {
              "evidence": {
                "field": "description"
              }
            }
          ]
        },
        "history": {
          "references": [
            {
              "evidence": {
                "field": "description"
              }
            }
          ]
        }
      }
    }
  ],
  "meta": {
    "maxLimit": 100,
    "sort": "applicationDate desc, firstSeenAt desc"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.