UK Planning Application Leads for Trades: Solar, Roofing, HVAC
Pricing
from $20.00 / 1,000 trade lead delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Features
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.ukentity 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 publishedpoint, 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_uiddedupe in the default Key-Value Store. - Every successful run writes one non-billable
RUN_STATUShealth 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=fixtureso Apify Store daily auto-tests leave a non-empty health dataset without calling Planning Data. That fixture path only writes a non-billableRUN_STATUS/FIXTURE_HEALTHrow. It is not lead generation.
For production you must:
- Set
sourceMode=live - Choose
trades(or leave the built-in multi-trade default) - Optionally set
originPostcode+radiusMilesfor a local catchment - Optionally restrict
organisationEntityIds(Planning Data organisation-entity ids) - 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
| Field | Default |
|---|---|
trades | built-in six trades |
lookbackDays | 14 |
maxRunSeconds | 55 |
maxEvents | 500 |
resumeFromCheckpoint | true |
sourceMode | fixture |
emitFixtureDemoEvents | false |
requestPaceMs | 250 |
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)
| Event | Price | When charged |
|---|---|---|
trade-lead-delivered | $0.02 ($20 / 1,000) | Each unique trade-matched newly-validated lead pushed to the dataset |
apify-actor-start | $0.00005 | Actor 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 +
customTradeKeywordsextension - 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)
| Field | Notes |
|---|---|
trades | Built-in multi-trade default or subset |
originPostcode / radiusMiles | Optional catchment |
organisationEntityIds | Optional Planning Data org filter |
customTradeKeywords | Extend taxonomy |
lookbackDays | Initial catch-up window |
sourceMode | fixture (default, Store-safe) or live |
emitFixtureDemoEvents | Default false |
maxRunSeconds / maxEvents | Budgets |
resumeFromCheckpoint | Default true |
Example input (production)
{"sourceMode": "live","trades": ["scaffold", "roof"],"originPostcode": "M1 1AE","radiusMiles": 20,"lookbackDays": 7,"maxRunSeconds": 90,"maxEvents": 200,"resumeFromCheckpoint": true}