Uk Planning Applications avatar

Uk Planning Applications

Pricing

Pay per usage

Go to Apify Store
Uk Planning Applications

Uk Planning Applications

Extract UK planning applications from 425+ councils across England, Scotland, and Wales. Get structured data on every permitted development, housing project, and commercial build with site addresses, decision dates, planning agent, contacts, dwelling counts, and direct links to council portals.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Devon Kellar

Devon Kellar

Maintained by Community

Actor stats

2

Bookmarked

64

Total users

12

Monthly active users

16 hours ago

Last modified

Share

UK Planning Applications Scraper

Extract planning applications from 425+ UK councils — every permitted development, housing project, and commercial build across England, Scotland, and Wales. Get structured, export-ready data with site addresses, decision dates, planning agent contacts, dwelling counts, and direct links to council portals.

No API key needed. No login required. Just configure your filters and run.

Features

UK planning data is scattered across 425 separate council portals, each with a different interface. Enterprise providers like Glenigan charge £10,000–£50,000/year for access to the same data. This actor gives you the same coverage for a fraction of the cost.

UK Planning Applications Scraper supports the following features:

  • Search any council or go nationwide across all 425+ councils
  • Filter by application size (Large, Medium, Small)
  • Filter by decision status (Permitted, Undecided, Rejected, etc.)
  • Postcode radius search (find applications within X km of any UK postcode)
  • Free text search across descriptions, addresses, and reference numbers
  • Filter by application type (Full, Outline, Reserved, Hybrid, Demolition)
  • Extract planning agent contacts directly from the data
  • Track dwelling counts for housing developments

Coverage: 425+ local authorities across England, Scotland, and Wales. Over 20 million historical records.

Use cases

  • Construction companies — find newly permitted developments before your competitors. Contact the planning agent directly from the data.
  • Building material suppliers — track large developments (10+ dwellings) to time your outreach when projects get the green light.
  • Property developers — monitor planning decisions by area, spot trends, and identify sites.
  • Recruitment agencies — large permitted projects mean hiring. Target construction firms with active permissions.
  • Planning consultants — benchmark competitor win rates across councils and track market share.
  • Property investors — analyse permitted dwelling counts by region to spot growth corridors.
  • Researchers & journalists — track housing supply, infrastructure projects, and local development patterns at scale.

Bugs, fixes, updates, and changelog

This scraper is under active development. If you have any feature requests, you can create an issue from here.

Upcoming changes

  • Historical data export (full backfill by council)
  • Automatic applicant/developer name extraction from council portals
  • Webhook notifications for new permits in watched councils

Input parameters

The input of this scraper should be JSON containing the filter configuration for your planning application search. Possible fields are:

councils: (Optional) (String[]) List of council names to search. Leave empty for a nationwide search across all 425+ councils. Type any UK council name — for example: "Croydon", "Tower Hamlets", "Manchester". You can specify one council or many.

appSize: (Optional) (String[]) Filter by development size. The values can be: Large, Medium, and Small. Large = major developments (10+ dwellings or 1,000+ sqm). Medium = minor developments. Small = householder applications. Default is ["Large", "Medium"].

appState: (Optional) (String[]) Filter by decision status. The values can be: Permitted, Undecided, Conditions, Rejected, Withdrawn, Referred, and Appeal. Default is ["Permitted"].

daysBack: (Optional) (Number) How many days back to search from today. For decided applications, this filters by decision date. For undecided applications, this filters by submission date. Range: 1–365. Default is 90.

searchText: (Optional) (String) Free text search — matches against the application description, site address, and reference number. Useful for finding specific developments or types of work.

postcode: (Optional) (String) UK postcode as the centre point for a radius search. Requires radiusKm to be set. Example: "EC2A 4NE", "SW1A 1AA".

radiusKm: (Optional) (Number) Search radius in kilometres from the postcode centre point. Only used when postcode is provided. Range: 1–100. Default is 10.

appTypes: (Optional) (String[]) Filter by application type. Leave empty for all types. Common values: Full, Outline, Reserved, Hybrid, Demolition. These match as substrings — so "Full" matches "Full Planning Permission", "Full Application", etc.

maxResults: (Optional) (Number) Maximum total results to return. The actor stops fetching once this cap is reached. Range: 1–5,000. Default is 500.

Tips

  • When you want to search a specific council, just add the council name as a string in the councils array. You can find the exact council name on PlanIt.

  • If you'd like to do a nationwide search, leave the councils array empty. This runs a single API call and is the fastest option.

  • Start with a single council and a low maxResults (e.g. 10) to verify the data matches your needs before scaling up.

  • Use appSize: ["Large"] for the highest-value leads — these are major developments with the biggest contracts.

  • Combine this actor with a contact enrichment actor — take the agentCompany and portalUrl fields and feed them into a contact scraper to get email addresses.

  • Set up a scheduled run (weekly or monthly) to automatically track new permissions as they're granted.

  • Please keep in mind that multi-council queries require a 62-second delay between each council to respect rate limits. A 10-council query will take ~10 minutes.

Compute unit consumption

UK Planning Applications Scraper is optimised to run efficiently. Since the underlying data source enforces a rate limit of approximately 1 request per minute, compute unit consumption depends on the number of councils queried:

  • 1 council: ~1 minute, ~0.03 compute units
  • Nationwide (no council filter): ~1–2 minutes, ~0.03 compute units (single API call)
  • 10 councils: ~10 minutes, ~0.15 compute units
  • 50 councils: ~50 minutes, ~0.75 compute units

The actor uses minimal memory (256 MB is sufficient) as it processes results in batches.

UK Planning Applications Scraper input example

{
"councils": ["Croydon", "Tower Hamlets", "Westminster"],
"appSize": ["Large"],
"appState": ["Permitted"],
"daysBack": 180,
"maxResults": 500
}
{
"appSize": ["Large"],
"appState": ["Permitted"],
"daysBack": 90,
"appTypes": ["Full", "Outline"],
"maxResults": 2000
}
{
"postcode": "EC2A 4NE",
"radiusKm": 15,
"appSize": ["Large", "Medium"],
"appState": ["Permitted"],
"daysBack": 90,
"maxResults": 500
}

Track undecided applications (pipeline)

{
"councils": ["Manchester", "Birmingham", "Leeds"],
"appSize": ["Large"],
"appState": ["Undecided"],
"daysBack": 365,
"maxResults": 1000
}

During the run

During the run, the actor will output messages letting you know what is going on. Each message includes the council being queried and a running count of results found.

When results are loaded from each council, you will see a message with the number of records found and the running total. If multiple councils are specified, the actor logs the 62-second delay between each query.

If you provide incorrect input to the actor, it will immediately stop with a failure state and output an explanation of what is wrong.

UK Planning Applications export

During the run, the actor stores results into a dataset. Each item is a separate planning application in the dataset.

You can manage the results in any language (Python, PHP, Node.js/NPM). See the FAQ or the API reference to learn more about getting results from this actor.

Export to JSON, CSV, or Excel in one click from the Apify Console.

Scraped UK planning application data

The structure of each item in the planning application dataset looks like this:

{
"council": "Croydon",
"address": "Land Rear Of 13 To 73 Stafford Road, Duppas Hill Road, Croydon",
"postcode": "CR0 3PH",
"description": "Demolition of existing buildings and erection of residential development comprising 211 units with associated landscaping and parking",
"appType": "Full Planning Permission",
"appSize": "Large",
"appState": "Permitted",
"decidedDate": "2026-02-10",
"startDate": "2025-11-15",
"agentCompany": "Savills",
"agentTel": "020 7499 8644",
"applicantCompany": "Stafford Road Developments Ltd",
"dwellings": 211,
"latitude": 51.3726,
"longitude": -0.0998,
"portalUrl": "https://publicaccess.croydon.gov.uk/online-applications/applicationDetails.do?keyVal=ABC123",
"planitUrl": "https://www.planit.org.uk/planapplic/Croydon/25/03826/LE/",
"reference": "25/03826/FUL",
"planitId": "Croydon/25/03826/FUL",
"applicantName": "Mr J Smith",
"agentName": "Jane Doe",
"caseOfficer": "T Brown",
"wardName": "Waddon",
"decision": "Permission Granted",
"decidedBy": "Delegated Decision",
"dateReceived": "2025-11-12",
"dateValidated": "2025-11-15",
"targetDecisionDate": "2026-02-14",
"nDocuments": 54,
"nComments": 12,
"docsUrl": "https://publicaccess.croydon.gov.uk/online-applications/...",
"commentUrl": "https://publicaccess.croydon.gov.uk/online-applications/...",
"...": "up to 50+ fields per application — see below"
}

Output fields

FieldDescriptionExample
councilLocal authority nameCroydon
addressFull site addressLand Rear Of 13 To 73 Stafford Road
postcodeUK postcodeCR0 3PH
descriptionFull application descriptionDemolition of existing buildings and erection of residential development comprising 211 units
appTypeApplication typeFull Planning Permission
appSizeDevelopment scaleLarge
appStateDecision statusPermitted
decidedDateDecision date2026-02-10
startDateSubmission date2025-11-15
agentCompanyPlanning agent / consultancySavills
agentTelAgent phone number020 7499 8644
applicantCompanyDeveloper / applicantStafford Road Developments Ltd
dwellingsProposed residential units211
latitudeSite latitude51.3726
longitudeSite longitude-0.0998
portalUrlLink to council planning portalhttps://publicaccess.croydon.gov.uk/...
planitUrlLink to PlanIt recordhttps://www.planit.org.uk/planapplic/...

Extended fields — 50+ per application

On top of the core fields above, the actor flattens every additional field the council publishes (coverage varies by council):

  • Identifiers: reference, planitId, planningPortalId, uprn, lastScraped
  • Lead contacts: applicantName, applicantAddress, agentName, agentAddress, caseOfficer
  • Decision & process: applicationType, status, decision, decidedBy, targetDecisionDate, decisionIssuedDate, decisionPublishedDate, meetingDate, nStatutoryDays
  • Dates & consultation: dateReceived, dateValidated, consultationStartDate, consultationEndDate, commentDate, siteNoticeEndDate, permissionExpiresDate, applicationExpiresDate
  • Location: wardName, parish, district, easting, northing
  • Documents & engagement: nDocuments, nComments, nConstraints, docsUrl, commentUrl, mapUrl, sourceUrl

How it compares

FeatureThis actorGlenigan (enterprise)Other Apify actors
Councils covered425+400+3 (single portal only)
Application typesAllAll3 types
PricingPay-per-result£10K–£50K/year£49/month rental
Data exportJSON, CSV, ExcelLocked platformLimited
FiltersSize, status, postcode, text, type, councilSimilarBasic
API accessFull Apify APIRestrictedLimited
Nationwide searchYesYesNo

Data source

All data comes from PlanIt, which aggregates publicly available planning data from UK local authority portals. The data is published by councils under statutory obligation — this actor provides structured, filterable access to it.