UK Planning Applications & Building Control Scraper avatar

UK Planning Applications & Building Control Scraper

Pricing

from $20.00 / 1,000 application delivereds

Go to Apify Store
UK Planning Applications & Building Control Scraper

UK Planning Applications & Building Control Scraper

Weekly UK planning applications & Building Control lists from UK council Idox portals, one normalised schema. Optional applicant/agent name, email and phone - lead-gen no other Apify actor includes. New filings = early construction & property development leads. Failed runs: $0.00005 start fee only.

Pricing

from $20.00 / 1,000 application delivereds

Rating

0.0

(0)

Developer

B

B

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

13 days ago

Last modified

Share

UK Planning & Building Control Applications Scraper

Weekly Building Control and Planning application lists from UK council Idox Public Access portals, normalised into one flat schema across councils — including the Building Control register no other Apify actor covers.

A failed or empty run costs $0.00005 (the platform start fee), not $0. Per-row charges fire only after rows are actually written to your dataset.

Who this is for

  • Builders & loft/conversion companies — Building Control deposits are full plans deposited weeks before work starts; that register is not in any national planning feed.
  • Building material suppliers — watch permits + BC deposits by council and time outreach to when work is actually commencing.
  • Lead-gen teams — run planning with includeContacts: true and get the agent name/email/phone behind each application, from the council's own register.
  • Property developers & investors — monitor planning decisions and BC starts across councils in one normalised dataset.
  • Researchers & journalists — statutory register data, republished as published, per-week slices back 8 weeks.

What you get

One row per application, identical schema for every council:

fieldmeaning
council, council_name, portal_hostwhich council's register
register_typebuilding_control or planning
referencecouncil application reference (stable id)
proposaldescription of works as published
addresssite address as published
statusstatus at harvest time
event_type / event_datelist event: deposited (BC) / validated (planning) / decided / …
week_startweek label of the weekly list
key_valportal key — dedupe across runs on this (or reference)
detail_urlpublic portal page for the application
harvested_atUTC harvest timestamp

With includeContacts: true (v0.4), each planning row is enriched from the council's own contacts sub-tab with agent_name, agent_email, agent_phone, agent_address (and the applicant_* equivalents where published) — the named party behind the application, straight from the statutory register. Coverage is council-specific: Tameside and Leeds publish agent contacts openly; Bury publishes none ("There are no contacts associated with this case"). Where a council publishes nothing, the row says contacts_published: "no" — an honestly empty field, never a guess. Building Control pages carry no contacts sub-tab, so BC rows are marked contacts_published: "no" without an extra request.

Input parameters

fieldtypedefaultmeaning
councilsstring[]requiredcouncil slugs, e.g. ["leeds","tameside"]
registersstring[]bothbuilding_control, planning, or both
weeksBacknumber00 = current week only; up to 8 previous weekly lists
maxRowsPerCouncilnumber200safety cap per council+register; a loud WARNING logs if the portal lists more
includeDetailsbooleanfalseopen each details page — fills event_date and missing fields. Slower
includeContactsbooleanfalsefetch the contacts sub-tab per planning row (lead-gen). One paced request per row
strictModebooleanfalsetrue: any portal error fails the run (start fee only). false: skip and continue

Deduplicate across runs on key_val + council (or reference + council).

Covered councils (v0.2)

12 councils, every portal live-verified end-to-end (form → list → rows). Building Control + Planning on the same Idox portal: Leeds, Sheffield, Bradford, Tameside, Bury, Sefton, St Helens, Solihull, Cheltenham, Luton, Cheshire West and Chester. Newham publishes Planning only.

Request a council by opening an Issue — Idox Public Access portals are template-driven and onboarding is fast.

Input example

{
"councils": ["leeds"],
"registers": ["building_control"]
}

Both fields accept arrays; run several councils and registers in one call. Rows from all councils land in one dataset with the identical schema.

Sample output (real run, 2026-10-02)

Rendered from an unedited platform dataset — councils ["leeds","tameside"], register building_control, week of 28 Sep 2026, capped at 15 rows per council (30 rows total, each billed at $0.02):

Real run output: leeds + tameside building_control, week 28 Sep 2026 — 30 rows, first 12 shown, 9 of 14 fields

Every cell comes from run A6AP8wRWh4kBKO6PJ (2026-10-02, build 0.5.1) — the dataset only rendered as a table. The log's honest cap warning is visible in the run itself: portals listed 154 (leeds) and 19 (tameside) applications for that week; delivery stopped at maxRowsPerCouncil=15.

Raw JSON row from that same run:

[
{
"council": "leeds",
"council_name": "Leeds City Council",
"portal_host": "publicaccess.leeds.gov.uk",
"register_type": "building_control",
"reference": "26/04014/DALBN",
"proposal": "Internal wall removal and insert steel beam",
"address": "5 Barfield Avenue Yeadon Leeds LS19 7SH",
"status": "Pending Consideration",
"event_type": "deposited",
"event_date": "2026-10-28",
"week_start": "28 Sep 2026",
"key_val": "TM88W6JB3D500",
"detail_url": "https://publicaccess.leeds.gov.uk/online-applications/buildingControlDetails.do?keyVal=TM88W6JB3D500&activeTab=summary",
"harvested_at": "2026-10-02T16:42:55+00:00"
}
]

Planning row with includeContacts: true (real Tameside row, week 21 Sep 2026):

{
"council": "tameside",
"register_type": "planning",
"reference": "26/00741/FUL",
"proposal": "Erection of a single storey bus driver's welfare unit.",
"address": "Haughton Green Bus Stop Mancunian Road M34 7PD",
"event_type": "validated",
"event_date": "2026-09-23",
"week_start": "21 Sep 2026",
"key_val": "TLTLNPPUJ5Z00",
"detail_url": "https://publicaccess.tameside.gov.uk/online-applications/applicationDetails.do?keyVal=TLTLNPPUJ5Z00&activeTab=summary",
"harvested_at": "2026-09-26T22:41:15+00:00",
"agent_name": "Laura Gerada",
"agent_email": "enquiries@williams-architects.co.uk",
"agent_phone": "01159455691"
}

Use with the Apify MCP server

Works out of the box with Apify's MCP server (@apify/actors-mcp-server) — scrape planning data straight from Claude, Cursor or any MCP client:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server",
"halobartku/uk-planning-building-control-scraper"]
}
}
}

Pricing — and why it's $0.02 per application

actorper-application priceregistersapplicant/agent contacts
devon_gtme/uk-planning-applications-planitpay-per-resultplanning onlynot included — sold as a separate managed service ("message me with councils, volume and fields")
memo23/uk-planning-applications-scraper$0.010 / result (free PlanIt API wrapper)planning onlyno (upstream returns "See source" placeholders)
this actor$0.020 / application-harvestedplanning + building controlyes — includeContacts: true, from the council's own portal

You pay a $0.00005 platform start fee per run, then $0.02 once per row delivered — per-row charges never fire on failure. A weekly single-council run (40–200 rows) costs $0.80–4.00 plus the start fee; the same coverage from the $0.05 competitor costs 2.5× more and still misses Building Control entirely. BC rows are the early signal: full plans deposited weeks before the planning application appears.

FAQ

Why Idox portals and not the national planning pipeline? PlanPipe-style national feeds cover planning applications only. Building Control deposits (structural alterations, steel insertions, demolitions) live on each council's Idox Public Access portal — that register is what this actor adds, and why builders/loft companies cannot get it elsewhere.

How fresh is the data? Each run harvests the live weekly list — typically published within a day or two of deposit. Run daily to catch councils that update mid-week.

How do I get only new applications? Deduplicate on key_val + council across runs; event_date lets you filter to the current week.

Can I add my council? Yes — open an Issue with the council name. Any Idox Public Access portal (100+ UK councils run Idox) is a small config addition, verified live before release.

What happens if a portal is down or changes? The run fails loudly with the council named — you pay only the $0.00005 start fee — and the next run retries. Partial results are still delivered and only those rows bill.

For AI agents & LLM apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: halobartku/uk-planning-building-control-scraper).

Purpose: Harvest the weekly Building Control and Planning application lists from UK council Idox Public Access portals — one normalised row per application (council, reference, proposal, site address, status, event type/date, portal link). Building Control deposits are the register no other Apify actor covers.

Minimal input:

{ "councils": ["leeds"], "registers": ["building_control"] }

Output: one row per application — council, council_name, portal_host, register_type (building_control|planning), reference, proposal, address, status, event_type, event_date, week_start, key_val, detail_url, harvested_at; with includeContacts also agent_name/agent_email/agent_phone (+ applicant_* where published, contacts_published marker).

Behaviors an agent should know:

  • Both councils and registers accept arrays; rows from all councils land in one dataset with the identical schema.
  • Deduplicate across runs on key_val + council (or reference + council); event_date filters to the current week.
  • Supported councils (v0.2): Leeds, Sheffield, Bradford, Tameside, Bury, Sefton, St Helens, Solihull, Cheltenham, Luton, Cheshire West and Chester (BC + planning); Newham (planning only). More on request via the actor's Issues tab.
  • A failing portal fails the run loudly with the council named — cost is the $0.00005 start fee only; partial results are still delivered and only those rows bill.
  • Billing: $0.00005 platform start fee per run + pay-per-event application-harvested ($0.02/row) charged only after rows are written — failed or empty runs cost the start fee only.

Correctness — validated against the portals themselves

Actor output is re-verified against the live portal, not just "run completes". Latest check 2026-10-02: Leeds Building Control, week starting 28 Sep — portal's own result count said 154 applications; the actor returned 154/154 unique rows, exact match. This same check is what caught the v0.1.8 pagination bug and (2026-10-02) a retry-budget shortfall that silently skipped Leeds on flaky-500 days. A council that cannot be verified row-exact does not ship.

Changelog

0.6 - 2026-10-06: pricing-honesty README/PRICING repair, no code change. The README claimed failed/empty runs cost $0 / "never pay for a failed run"; live platform pricing bills a $0.00005 apify-actor-start fee on every run, failed ones included. All 6 README spots + PRICING.md + the store-card description now state the exact cost model ($0.00005 start + $0.02/row). src/ byte-identical to 0.5.3.

0.5.3 - 2026-10-04: a council portal that stops responding no longer fails the whole run. A read timeout on one portal used to escape the retry logic and end a multi-council run with no results. Now a timed-out request is retried once, then that council is skipped with a warning in the log and in the run status, the other councils are delivered, and the skipped council is not charged (no rows, no charge).

0.5 — 2026-10-02: reliability fix, found by the fresh-sample discipline. Leeds' portal served HTTP 500 four times in a row on cold sessions before serving normally (soft-throttle window); the old 3-retry budget exhausted and the whole council was silently skipped in multi-council runs (tameside delivered, leeds absent, run still SUCCEEDED). Retry budget 3→6 with longer backoff on 5xx. Re-validated live: leeds 154/154 rows unique vs the portal's own stated total, exact. README sample-output refreshed from E2E run on this build (leeds + tameside, week 28 Sep 2026).

0.4 — 2026-09-26: includeContacts — per-row applicant/agent enrichment from the council's own contacts sub-tab (agent_name, agent_email, agent_phone, agent_address, applicant_*, contacts_published marker). Verified live 2026-09-26 on Tameside (2/3 planning rows carry agent name+email+phone; 1/3 honestly empty), Leeds (agent company + mobile + email), Bury (publishes no contacts — returned as no, verified at source). includeDetails now also fills event_date from the details page (BC rows previously shipped with an empty date). Input documentation table added to this README.

0.3 — 2026-09-14: README-only. Sample-output section now leads with a rendered image of a real run's dataset (leeds + tameside, week 07 Sep 2026) with full provenance: run id, input, rows/fields disclosure, cap warning, per-row charge accounting. No code, schema or pricing changes.

0.1.9 — 2026-08-31: pagination fix #2, found by dated ground-truth validation. Some Idox portals (Bury) window their pager at 10 pages on page 1 even when the week holds more — the old code clamped pagination to the pager and silently delivered 100 of 197 rows for Bury's 24-Aug week (all billed). Now the portal's stated total drives pagination; a cap hit by maxRowsPerCouncil logs a loud WARNING instead of truncating silently; an empty page stops pagination safely. Re-validated live: 197/197 Bury, 21/21 Tameside, row-exact vs the portals' own counts. README corrected to the real council list (v0.1 text named five councils never in the build and omitted six that were). 0.1.6 — 2026-08-22: pagination fix. The portal's result-count phrase carries an inline </strong> (Showing 1-10</strong> of 76); our old count regex missed it, so multi-page weeks returned only page 1 (Leeds: 10 of 76 rows). Found by independent ground-truth validation, fixed, re-validated 76/76 + 18/18 rows exact vs same-minute portal HTML. If you ran this actor before 2026-08-22, re-run for complete weeks. 0.1 — 2026-08-20: initial public release. 12 councils, both registers, one normalised schema, per-row PAY-PER-EVENT pricing.

SEO keywords

uk building control applications scraper, building control register scraper, idox public access scraper, uk planning applications scraper, building control weekly list, building control deposits, building notices uk, structural alteration applications, uk planning weekly list, council planning register scraper, uk planning data api, construction leads uk, builder leads uk, loft conversion leads, property development leads uk, planning application monitoring, building control data export, uk council portals scraper, bury building control applications, tameside building control applications, bradford planning applications, sheffield building control, planning applications by council