UK Planning Application Leads for Trades: Solar, Roofing, HVAC avatar

UK Planning Application Leads for Trades: Solar, Roofing, HVAC

Pricing

from $20.00 / 1,000 trade lead delivereds

Go to Apify Store
UK Planning Application Leads for Trades: Solar, Roofing, HVAC

UK Planning Application Leads for Trades: Solar, Roofing, HVAC

Find new England planning applications that need your trade: solar PV and batteries, roofing, scaffolding, extensions and lofts, HVAC and glazing. Filter by postcode radius and get address, description, decision status and council link per lead. Official planning.data.gov.uk data.

Pricing

from $20.00 / 1,000 trade lead delivereds

Rating

0.0

(0)

Developer

Daniel Witney

Daniel Witney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Features

Limited permissions

Share

UK Multi-Trade Planning Lead Radar

Match new England planning applications to a multi-trade taxonomy (solar/PV/battery, roof, scaffold, extension/loft, HVAC, glazing — extensible) with an optional postcode radius, using the official Planning Data HTTP API. Get typed lead rows you can pipe to a CRM, Slack, or outbound queue — not a nationwide dump and not a single-trade SKU.

Value proposition

  • Official HTTP only (planning.data.gov.uk entity API) — no council portal login scrape, no Idox HTML.
  • Trade-qualified: proposal-text classifier tags applications to the trades you select.
  • Optional catchment: originPostcode + radiusMiles (haversine on published point, with address-postcode fallback geocode via public postcodes.io in live mode).
  • Pay only for unique trade-matched newly-validated leads. Quiet schedules and non-matches stay cheap.
  • Durable checkpoint (entry-date high-water) + event_uid dedupe in the default Key-Value Store.
  • Every successful run writes one non-billable RUN_STATUS health row so Store auto-tests and quiet days still leave a non-empty dataset.

This Actor is a scheduled catch-up poller. It is not real-time streaming and does not claim instant alerts or 100% council coverage.

PRODUCTION USE (required for real leads)

Store default ≠ product. Schema defaults use sourceMode=fixture so Apify Store daily auto-tests leave a non-empty health dataset without calling Planning Data. That fixture path only writes a non-billable RUN_STATUS / FIXTURE_HEALTH row. It is not lead generation.

For production you must:

  1. Set sourceMode = live
  2. Choose trades (or leave the built-in multi-trade default)
  3. Optionally set originPostcode + radiusMiles for a local catchment
  4. Optionally restrict organisationEntityIds (Planning Data organisation-entity ids)
  5. Schedule short runs (e.g. every 15–60 minutes) so checkpoints advance

Official docs: Planning Data API · planning-application dataset · Open Government Licence v3.0

Coverage limits (honest)

  • The Planning Data planning-application dataset is alpha / incomplete. Local planning authorities are not all required to publish to this specification today.
  • Expect partial England coverage — not 100% of councils, not Scotland/Wales/NI via this API.
  • Many records omit geometry, agent, or applicant. When those fields are not published, output columns are null.
  • Detection latency ≈ your schedule interval + Planning Data ingest lag. Title does not say real-time or streaming.

Apify Store daily auto-test / default input

FieldDefault
tradesbuilt-in six trades
lookbackDays14
maxRunSeconds55
maxEvents500
resumeFromCheckpointtrue
sourceModefixture
emitFixtureDemoEventsfalse
requestPaceMs250

On that path the Actor:

  • SUCCEEDS quickly (no Planning Data network call)
  • Pushes exactly one dataset row: event_type: "RUN_STATUS", event_subtype: "FIXTURE_HEALTH", billable: false
  • Does not call Actor.charge / does not emit fabricated leads
  • Leaves a non-empty default dataset well under 5 minutes

emitFixtureDemoEvents: true is only for unit/local demos of typed lead shapes; leave it false on Store and in production.

Pricing (single PPE tier)

EventPriceWhen charged
trade-lead-delivered$0.02 ($20 / 1,000)Each unique trade-matched newly-validated lead pushed to the dataset
apify-actor-start$0.00005Actor start (platform)

Never charged: RUN_STATUS, non-matches, duplicates (event_uid), radius/trade filtered rows, fixture Store-health runs, invalid trade ids.

No volume-discount tiers (see factory ADR 0010).

Output fields (lead rows)

authority, organisation_entity, reference, application_entity, address, postcode, proposal_description, matched_trades, decision_status, decision_type, applicant, agent (when published), entry_date, decision_date, latitude, longitude, distance_miles, source_url, event_uid, summary, billable.

Attribution / licence

Contains public sector information licensed under the Open Government Licence v3.0.
Source: planning.data.gov.uk (MHCLG Planning Data).
© Crown copyright and database right.

Features

  • Endpoint: https://www.planning.data.gov.uk/entity.json?dataset=planning-application
  • Built-in keyword taxonomy + customTradeKeywords extension
  • Optional geometry bbox pre-filter + haversine refine
  • High-water checkpoint + seen event_uids in KVS
  • sourceMode: fixture | live
  • Always-on non-billable RUN_STATUS (HEALTH_OK | MONITOR_IDLE | CATCHUP_COMPLETE | FIXTURE_HEALTH)

Input (summary)

FieldNotes
tradesBuilt-in multi-trade default or subset
originPostcode / radiusMilesOptional catchment
organisationEntityIdsOptional Planning Data org filter
customTradeKeywordsExtend taxonomy
lookbackDaysInitial catch-up window
sourceModefixture (default, Store-safe) or live
emitFixtureDemoEventsDefault false
maxRunSeconds / maxEventsBudgets
resumeFromCheckpointDefault true

Example input (production)

{
"sourceMode": "live",
"trades": ["scaffold", "roof"],
"originPostcode": "M1 1AE",
"radiusMiles": 20,
"lookbackDays": 7,
"maxRunSeconds": 90,
"maxEvents": 200,
"resumeFromCheckpoint": true
}