ianheggie-oaf / city_of_busselton_development_applications

City of Busselton Development Applications


City of Busselton Development Applications (WA)

This is a scraper that runs on Morph. To get started see the documentation

Add any issues to https://github.com/planningalerts-scrapers/issues/issues

Development Requirements

Install pdftohtml

MacOS

  • Homebrew: Run brew install pdftohtml
  • MacPorts: Run sudo port install pdftohtml

Linux (Ubuntu/Debian)

Install poppler-utils by running:

sudo apt-get install poppler-utils

To run the scraper

bundle exec ruby scraper.rb

Expected output

Retrieving https://www.busselton.wa.gov.au/documents/13944/applications-lodged-2026 ...
Running pdftohtml to convert pdf to xml pages...
Page-1
...
Page-46
Parsing XML document ...
Processing page# 1
Page header: Applications Lodged – 13/03/2026 – 19/03/2026
Group: Development Applications
Saving DA26/0185 - Lot 75 No 20 Old Mill Grove QUINDALUP  WA  6281
...
Saving DA26/0195 - Lot 45 No 21 Carline Loop GEOGRAPHE  WA  6280
Processing page# 2
...
Processing page# 17
Page header: Applications Lodged – 13/02/2026 – 19/02/2026
Finished! Processed 178 records.

Execution time ~ 10 seconds

To run style and coding checks

bundle exec rubocop

To check for security updates

gem install bundler-audit
bundle-audit

Development

Set:

  • DEBUG=1 - to enable debug output from scraper

Data source

Home >> Plan and Build >> Applications Issued, Determined and Lodged

"Applications Lodged" links for the current year and previous year are links to PDFs covering the whole year. The scraper fetches the first (current year) PDF and continues to the second (prior year) PDF only if it has not yet found a date range ending more than 30 days ago — this naturally handles the January overlap without any special date logic in ApplicationsLodgedPage.

Format: Each PDF is a concatenation of weekly "Applications Lodged – DD/MM/YYYY – DD/MM/YYYY" documents, ordered from the most recent week to the earliest week for the year. The date range heading repeats on every page of each weekly section.

Each weekly section lists one or more groups (eg "Development Applications" or "Building Applications"), each preceded by a bold group heading and a table with columns:

  • Application Number
  • Description
  • Primary Property Address
  • Date Application Received
  • Date Deemed Complete (later Development Applications only — ignored by scraper)

Notes:

  • There is a fixed header and footer region; the data table/s and group headings is contained between them, and rows are split across pages when they do not fit.
  • Table headings are not repeated on a continuation of a table onto following pages;
  • Group headings do not force a page break (a new table starts below)
  • Table headings are sometimes split mid-word, eg "Applicatio" on one line and "n Number" on the next line. A list of known headings is maintained to handle this to determine if a space should be inserted between lines or not.
    • This implies that column alignment may vary
  • Table headings may change with the addition of "Date Deemed Complete", though this was not seen in the last 30 days
  • Cell contents are normally aligned to the bottom of the row.
  • When a row is split across pages, the first page holds as much of each cell that fits, with the remaining cell content appearing on the following page. The scraper uses previous_record to handle this.
  • html2xml may merge text from two columns, which may cause classification issues, we handle this by
    • moving the 2nd word from council reference to address if present, eg: "BAC26/0109 Certified:"
    • moving dates at the end of addresses to datereceived and ignoring multiple dates for datereceived

Design of the solution

ApplicationsLodgedPage.applications_lodged_pdfs returns an Array of fully-qualified URL strings for the "Applications Lodged" PDF links found on the page, converting any relative URLs to absolute.

PdfDocument orchestrates parsing: it iterates over <page> nodes, instantiates a PdfPage for each, and yields complete row hashes to the caller. It maintains last-known headings across pages (since headings only appear on the first page of each table section). It also handles cross-page row continuation.

PdfPage processes <text> nodes, classifying each by position (is or is not the start of a new array of text entries for a row) and bold status:

  • Page header / footer — nodes with top outside DATA_TOP_RANGE — skipped, except the date range heading (eg "Applications Lodged – 06/03/2026 – 12/03/2026") which is captured as header.
  • Group heading — bolded node with left in FIRST_CELL_LEFT_RANGE whose stripped text matches a known group name (eg "Development Applications") — output to stdout but not otherwise noted.
  • Table headings — bolded nodes with left in FIRST_CELL_LEFT_RANGE that are NOT a known group name — collected, merged by left position into headings: an Array of {left: Integer, text: String}.
  • Data nodes — non-bolded nodes within DATA_TOP_RANGE — returned as an array of {left: Integer, text: String} hashes.

PdfPage yields [data_nodes, header, headings_or_nil] for each page.

PdfDocument keeps the last-seen headings and uses them as the default when nil is yielded (pages after the first in a section have no headings).

PdfDocument.data_entries yields complete row hashes (column name → text string) plus the current header string. The scraper parses the header to extract the end date and stops processing when it is more than 30 days ago.

Cross-page row continuation

PdfDocument detects a continuation row when the first data node on a page has its left outside FIRST_CELL_LEFT_RANGE — meaning no application reference starts the row. Those nodes are appended to the accumulated nodes of the previous row before column mapping is applied.

Column mapping

After collecting all nodes for a row, each node is assigned to the column heading whose left is the largest value that is still ≤ the node's left + [width/2, 10].min.

Columns not needed by the scraper (eg "Date Deemed Complete") are silently ignored.

pdftohtml merge anomalies

Two known cases where pdftohtml merges content that visually spans column boundaries:

  1. Application Number bleeds into Description: the node at the first-cell left position may contain eg "BAU26/0106 Uncertified: ". Split on the first space — the part before is the application number, the remainder is prepended to the Description value accumulated from subsequent nodes.

  2. Address bleeds into Date Received: a wide node assigned to the address column may contain a trailing date, eg "Busselton 11/03/2026". Detect using DATE_PATTERN at end of the address value. Strip the date from the address and move it to "Date Application Received" if that field is currently empty. After moving any date from the end of address, Where two dates appear (eg "10/01/2025 10/01/2025"), extract only the first match and discard the second.

Address normalisation

Append ", WA" to the address if it does not already end with " WA" or " WA \d{4}".

Constants

```ruby

Midpoint between last header text top (122) and first data top (139)

Midpoint between last data top (748) and footer top (823)

DATATOPRANGE = 130..785

Observed application number left=62, ±30 to allow year-to-year variation

FIRSTCELLLEFT_RANGE = 32..92

DATE_PATTERN = /[0-3]?\d\/[01]?\d\/\d{4}/

KNOWNGROUPNAMES = ["Development Applications", "Building Applications"].freeze ```

XML structure reference

The header, footer, and data nodes as returned by pdftohtml (fontspec and image tags have not been shown below):

# Outside DATA_TOP_RANGE — skipped (footer shown for reference)
<text top="96"  left="54"   width="448" height="21" font="1">Applications Lodged – 06/03/2026 – 12/03/2026 </text>
<text top="823" left="1171" width="42"  height="16" font="0">1 of 5 </text>

# Group heading — bold, left in FIRST_CELL_LEFT_RANGE, text matches KNOWN_GROUP_NAMES
<text top="157" left="54" width="225" height="22" font="3"><b>Development Applications  </b></text>

# Table headings — bold, left in FIRST_CELL_LEFT_RANGE, text does NOT match KNOWN_GROUP_NAMES
# Multi-line headings share the same left value and are merged
<text top="199" left="62"   width="98"  height="22" font="4"><b>Application </b></text>
<text top="221" left="62"   width="70"  height="22" font="4"><b>Number </b></text>
<text top="210" left="179"  width="100" height="22" font="4"><b>Description </b></text>
<text top="210" left="626"  width="213" height="22" font="4"><b>Primary Property Address </b></text>
<text top="199" left="1040" width="141" height="22" font="4"><b>Date Application </b></text>
<text top="221" left="1040" width="79"  height="22" font="4"><b>Received </b></text>

# Data nodes — not bold, within DATA_TOP_RANGE
<text top="268" left="62"   width="90"  height="22" font="5">DA26/0159 </text>
<text top="246" left="179"  width="386" height="22" font="5">Single House (Swimming Pool and Landscaping) - </text>
<text top="268" left="179"  width="163" height="22" font="5">Special Control Area </text>
<text top="246" left="626"  width="213" height="22" font="5">Lot 27 No 75 Johnson Road </text>
<text top="268" left="626"  width="178" height="22" font="5">WILYABRUP  WA  6280 </text>
<text top="268" left="1115" width="83"  height="22" font="5">6/03/2026 </text>

# Cross-page split example — last entry on page N:
<text top="765" left="62"   width="101" height="22" font="5">BAU26/0105 </text>
<text top="765" left="196"  width="139" height="22" font="5">Uncertified: Shed </text>
<text top="765" left="646"  width="233" height="22" font="5">Lot 38 No 195 Marine Terrace  </text>
<text top="765" left="1117" width="96"  height="22" font="5">10/03/2026  </text>

# First node on page N+1 — left=646 is outside FIRST_CELL_LEFT_RANGE → continuation of above
<text top="139" left="646"  width="90"  height="22" font="5">Geographe </text>

# Next entry on page N+1 — application number bleed example:
<text top="184" left="62"   width="261" height="22" font="5">BAU26/0106 Uncertified: </text>
<text top="184" left="291"  width="76"  height="22" font="5">Shed </text>
<text top="162" left="646"  width="208" height="22" font="5">Lot 65 No 6 Seagrott Road  </text>
# Address/date bleed example — wide node contains suburb + date:
<text top="184" left="646"  width="952" height="22" font="5">Busselton 11/03/2026 </text>

# Two-date example (Date Application Received + Date Deemed Complete merged) — use first date only:
<text top="271" left="1008" width="184" height="22" font="33">10/01/2025  10/01/2025 </text>

# Xml file starts with:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pdf2xml SYSTEM "pdf2xml.dtd">

<pdf2xml producer="poppler" version="24.02.0">
<page number="1" position="absolute" top="0" left="0" height="892" width="1263">

# Typical end of one page and start of another:
</page>
<page number="218" position="absolute" top="0" left="0" height="892" width="1262">

Contributors gooch ianheggie-oaf CloCkWeRX equivalentideas benrfairless mlandauer

Last run completed successfully .

Console output of last run

Injecting configuration and compiling... [1G [1G-----> Ruby app detected [1G-----> Installing bundler 2.3.10 [1G-----> Removing BUNDLED WITH version in the Gemfile.lock [1G-----> Compiling Ruby [1G-----> Using Ruby version: ruby-3.2.2 [1G-----> Installing dependencies using bundler 2.3.10 [1G Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4 [1G Fetching gem metadata from https://rubygems.org/......... [1G Fetching https://github.com/openaustralia/scraperwiki-ruby.git [1G Fetching rake 12.3.3 [1G Installing rake 12.3.3 [1G Using bundler 2.4.10 [1G Fetching public_suffix 7.0.5 [1G Fetching ast 2.4.3 [1G Fetching base64 0.3.0 [1G Fetching connection_pool 3.0.2 [1G Installing ast 2.4.3 [1G Installing base64 0.3.0 [1G Installing connection_pool 3.0.2 [1G Installing public_suffix 7.0.5 [1G Fetching domain_name 0.6.20240107 [1G Fetching mutex_m 0.3.0 [1G Fetching json 2.19.2 [1G Installing mutex_m 0.3.0 [1G Fetching language_server-protocol 3.17.0.5 [1G Installing domain_name 0.6.20240107 [1G Installing json 2.19.2 with native extensions [1G Fetching lint_roller 1.1.0 [1G Installing language_server-protocol 3.17.0.5 [1G Installing lint_roller 1.1.0 [1G Fetching logger 1.7.0 [1G Fetching mime-types-data 3.2026.0317 [1G Installing logger 1.7.0 [1G Installing mime-types-data 3.2026.0317 [1G Fetching net-http-digest_auth 1.4.1 [1G Installing net-http-digest_auth 1.4.1 [1G Fetching racc 1.8.1 [1G Installing racc 1.8.1 with native extensions [1G Fetching webrick 1.9.2 [1G Installing webrick 1.9.2 [1G Fetching webrobots 0.1.2 [1G Installing webrobots 0.1.2 [1G Fetching parallel 1.27.0 [1G Installing parallel 1.27.0 [1G Fetching prism 1.9.0 [1G Fetching rainbow 3.1.1 [1G Installing rainbow 3.1.1 [1G Fetching regexp_parser 2.11.3 [1G Installing prism 1.9.0 with native extensions [1G Installing regexp_parser 2.11.3 [1G Fetching ruby-progressbar 1.13.0 [1G Installing ruby-progressbar 1.13.0 [1G Fetching unicode-emoji 4.2.0 [1G Installing unicode-emoji 4.2.0 [1G Fetching sqlite3 1.6.9 (x86_64-linux) [1G Fetching rubyntlm 0.6.5 [1G Installing rubyntlm 0.6.5 [1G Fetching net-http-persistent 4.0.8 [1G Installing net-http-persistent 4.0.8 [1G Fetching httpclient 2.9.0 [1G Installing sqlite3 1.6.9 (x86_64-linux) [1G Installing httpclient 2.9.0 [1G Fetching addressable 2.8.9 [1G Installing addressable 2.8.9 [1G Fetching http-cookie 1.1.0 [1G Installing http-cookie 1.1.0 [1G Fetching mime-types 3.7.0 [1G Installing mime-types 3.7.0 [1G Fetching unicode-display_width 3.2.0 [1G Installing unicode-display_width 3.2.0 [1G Fetching nokogiri 1.15.7 (x86_64-linux) [1G Fetching parser 3.3.10.2 [1G Installing parser 3.3.10.2 [1G Installing nokogiri 1.15.7 (x86_64-linux) [1G Fetching sqlite_magic 0.0.6 [1G Installing sqlite_magic 0.0.6 [1G Using scraperwiki 3.0.1 from https://github.com/openaustralia/scraperwiki-ruby.git (at morph_defaults@fc50176) [1G Fetching mechanize 2.8.5 [1G Installing mechanize 2.8.5 [1G Fetching rubocop-ast 1.49.1 [1G Installing rubocop-ast 1.49.1 [1G Fetching rubocop 1.86.0 [1G Installing rubocop 1.86.0 [1G Bundle complete! 6 Gemfile dependencies, 38 gems now installed. [1G Gems in the groups 'development' and 'test' were not installed. [1G Bundled gems are installed into `./vendor/bundle` [1G Bundle completed (21.17s) [1G Cleaning up the bundler cache. [1G Removing bundler (2.3.10) [1G-----> Detecting rake tasks [1G [1G [1G [1G-----> Discovering process types [1G Procfile declares types -> scraper Injecting scraper and running... Retrieving https://www.busselton.wa.gov.au/documents/13985/applications-lodged ... Running pdftohtml to convert pdf to xml pages... Page-1 Page-2 Page-3 Page-4 Page-5 Page-6 Page-7 Page-8 Page-9 Page-10 Page-11 Page-12 Page-13 Page-14 Page-15 Page-16 Page-17 Page-18 Page-19 Page-20 Page-21 Page-22 Page-23 Page-24 Page-25 Page-26 Page-27 Page-28 Page-29 Page-30 Page-31 Page-32 Page-33 Page-34 Page-35 Page-36 Page-37 Page-38 Page-39 Page-40 Page-41 Page-42 Page-43 Page-44 Page-45 Page-46 Page-47 Page-48 Page-49 Page-50 Page-51 Page-52 Page-53 Page-54 Page-55 Page-56 Page-57 Page-58 Page-59 Page-60 Page-61 Page-62 Page-63 Page-64 Page-65 Page-66 Page-67 Page-68 Page-69 Page-70 Page-71 Page-72 Page-73 Page-74 Page-75 Page-76 Page-77 Page-78 Page-79 Page-80 Parsing XML document ... Processing page# 1 Page header: Applications Lodged – 08/05/2026 – 14/05/2026 Group: Development Applications Saving DA26/0355 - 19 Dalmore Close, QUEDJINUP WA 6281 Saving DA26/0359 - 32 Spinnaker Boulevard, GEOGRAPHE WA 6280 Saving DA26/0360 - 12 Chine Place, GEOGRAPHE WA 6280 Saving DA26/0361 - 12 Dumbarton Road, WEST BUSSELTON WA 6280 Saving DA26/0358 - 245 Bussell Highway, WEST BUSSELTON WA 6280 Saving DA26/0362 - 232 Geographe Bay Road, QUINDALUP WA 6281 Saving DA26/0364 - 734 Geographe Bay Road, WEST BUSSELTON WA 6280 Saving DA26/0366 - 5 Chloe Court, BROADWATER WA 6280 Saving DA26/0367 - 30 Lanyard Boulevard, GEOGRAPHE WA 6280 Saving DA26/0368 - 6 Wannang Crescent, YALYALUP WA 6280 Processing page# 2 Page header: Applications Lodged – 08/05/2026 – 14/05/2026 Saving DA26/0369 - 11 Backwater Retreat, QUINDALUP WA 6281 Saving DA26/0363 - 12 Glenleigh Road, WEST BUSSELTON WA 6280 Group: Building Applications Saving DA26/0365 - 104 Morava Drive, AMBERGATE WA 6280 Saving BAC26/0185 - 24 Prince Street Busselton WA Saving BAC26/0196 - 10 Sheshan Road Dunsborough WA Saving BAC26/0197 - 33 Rangatira Crescent West Busselton WA Saving BAC26/0198 - 28 Jones Road Quedjinup WA Saving BAC26/0199 - 440 Caves Road Siesta Park WA Saving BAC26/0200 - 899 Metricup Road Wilyabrup WA Saving BAC26/0201 - 4 Magpie Close Busselton WA Saving BAC26/0202 - 31 Alwoodley Terrace Dunsborough WA Processing page# 3 Page header: Applications Lodged – 08/05/2026 – 14/05/2026 Saving BAC26/0203 - 125 Endicott Loop Dunsborough WA Saving BAC26/0204 - 14 Hideaway Loop Vasse WA Saving BAC26/0205 - 7 Heron Place West Busselton WA Saving BAC26/0206 - 7 Dunsborough Lakes Drive Dunsborough WA Saving BAC26/0210 - Unit 53 Lot 21 No 65 Commonage Road Quindalup WA Saving BAC26/0211 - Unit 57 Lot 21 No 65 Commonage Road Quindalup WA Saving BAC26/0212 - Unit 51 Lot 21 No 65 Commonage Road Quindalup WA Saving BAU26/0210 - 5 Historic Close Yallingup WA Saving BAU26/0211 - 11 Amberley Loop Dunsborough WA Saving BAU26/0212 - 95 Dunsborough Lakes Drive Dunsborough WA Saving BAU26/0213 - 34 Cook Street Busselton WA Saving BAU26/0214 - 15 Hideaway Loop Vasse WA Saving BAU26/0215 - 32 Nash Drive Vasse WA Saving BAU26/0216 - 28 Peppermint Drive Dunsborough WA Saving BAU26/0217 - 35 Peppermint Drive Dunsborough WA Processing page# 4 Page header: Applications Lodged – 08/05/2026 – 14/05/2026 Appending continuation to previous_record... Saving BAU26/0218 - 7 Cambridge Boulevard Abbey WA Saving BAU26/0219 - 23 Harris Road Busselton WA Saving BAU26/0220 - Lot No 94 Hadfield Avenue Broadwater WA Saving BAU26/0221 - 12 Lyrebird Road Busselton WA Saving BAU26/0222 - 11 Beeliar Entrance Busselton WA Processing page# 5 Page header: Applications Lodged – 1/05/2026 – 7/05/2026 Group: Development Applications Saving BAU26/0223 - 61 Ford Road Geographe WA Saving DA26/0329 - 16 Eagle Bay-Meelup Road EAGLE BAY WA 6281 Saving DA26/0330 - 93 Biddle Road QUEDJINUP WA 6281 Saving DA26/0331 - 33 Elsegood Avenue YALLINGUP WA 6282 Saving DA26/0333 - Lot 22 No 31A Chieftain Crescent DUNSBOROUGH WA 6281 Saving DA26/0334 - 552 Caves Road MARYBROOK WA 6280 Saving DA26/0335 - Lot 2 No 2/17 North Street DUNSBOROUGH WA 6281 Saving DA26/0336 - 51 Gunyulgup Valley Drive YALLINGUP WA 6282 Appending continuation to previous_record... Processing page# 6 Page header: Applications Lodged – 1/05/2026 – 7/05/2026 Saving DA26/0337 - 42 Geographe Bay Road DUNSBOROUGH WA 6281 Saving DA26/0338 - 3 Depuch Close EAGLE BAY WA 6281 Saving DA26/0339 - 8 Quail Cove WEST BUSSELTON WA 6280 Saving DA26/0340 - 33 Rangatira Crescent WEST BUSSELTON WA 6280 Saving DA26/0341 - Lot 2 No 65B Norfolk Street DUNSBOROUGH WA 6281 Saving DA26/0342 - 150 Northerly Street VASSE WA 6280 Saving DA26/0343 - 55 Golding Ramble YALYALUP WA 6280 Saving DA26/0344 - 195 Marine Terrace GEOGRAPHE WA 6280 Saving DA26/0345 - 38 Lagoon Drive YALLINGUP WA 6282 Saving DA26/0346 - 14 Fairlawn Road BUSSELTON WA 6280 Saving DA26/0347 - 226 Naturaliste Terrace DUNSBOROUGH WA 6281 Appending continuation to previous_record... Processing page# 7 Page header: Applications Lodged – 1/05/2026 – 7/05/2026 Saving DA26/0348 - 1603 Wildwood Road YALLINGUP WA 6282 Saving DA26/0349 - Lot 1 No 10A Kempston Place BROADWATER WA 6280 Saving DA26/0350 - Lot 2 No 1/10 Hennessey Loop DUNSBOROUGH WA 6281 Saving DA26/0351 - 476 Geographe Bay Road QUINDALUP WA 6281 Group: Building Applications Saving DA26/0352 - 62 Pardalote Road VASSE WA 6280 Saving BAC26/0190 - Unit 7 Lot 7 No 50 Dunn Bay Road Dunsborough WA Saving BAC26/0191 - 8 Bussell Highway West Busselton WA Saving BAC26/0192 - Unit 37 Lot 21 No 65 Commonage Road Quindalup WA Saving BAC26/0193 - 3 Samson Way Vasse WA Saving BAC26/0194 - 5 Berula Way Vasse WA Saving BAC26/0195 - 156 Northerley Street Vasse WA Appending continuation to previous_record... Processing page# 8 Page header: Applications Lodged – 1/05/2026 – 7/05/2026 Saving BAC26/0196 - 10 Sheshan Road Dunsborough WA Saving BAC26/0198 - 28 Jones Road Quedjinup WA Saving BAU26/0197 - 36 Hazelbrook Rise Yallingup WA Saving BAU26/0198 - 552 Caves Road Marybrook WA Saving BAU26/0199 - 14 Bendjar Grove Vasse WA Saving BAU26/0200 - 114 Gibb Road Metricup WA Saving BAU26/0201 - 2 Minke Entrance Vasse WA Saving BAU26/0202 - No 72 Causeway Road Busselton WA Saving BAU26/0203 - 12 Birkdale Green Dunsborough WA Saving BAU26/0204 - 47 Shearers Close Quedjinup WA Saving BAU26/0205 - 9 Glen Eagles Grove Busselton WA Saving BAU26/0206 - 14 Lanyard Boulevard Geographe WA Saving BAU26/0207 - 21 Lincoln Street Abbey WA Saving BAU26/0208 - 29 Hideaway Loop Vasse WA Appending continuation to previous_record... Processing page# 9 Page header: Applications Lodged – 24/04/2026 – 30/04/2026 Group: Development Applications Saving BAU26/0209 - 35 Hammond Road Yallingup WA Saving DA26/0311 - 161 Wildwood Road CARBUNUP RIVER WA 6280 Saving DA26/0313 - 37 Nash Drive VASSE WA 6280 Saving DA26/0314 - 6 Ella Gladstone Drive EAGLE BAY WA 6281 Saving DA26/0315 - Lot 2 No 2/142 Geographe Bay Road QUINDALUP WA 6281 Saving DA26/0317 - 9 Pebble Drive GEOGRAPHE WA 6280 Saving DA26/0318 - 21 Gifford Road DUNSBOROUGH WA 6281 Saving DA26/0319 - 11 Lorna Street DUNSBOROUGH WA 6281 Saving DA26/0320 - 264 Wyadup Road YALLINGUP WA 6282 Appending continuation to previous_record... Processing page# 10 Page header: Applications Lodged – 24/04/2026 – 30/04/2026 Saving DA26/0321 - 31 Golding Ramble YALYALUP WA 6280 Saving DA26/0322 - 415 Harmans Mill Road METRICUP WA 6280 Saving DA26/0323 - 279 Bussell Highway WEST BUSSELTON WA 6280 Saving DA26/0324 - 26 Berwick Place QUINDALUP WA 6281 Saving DA26/0325 - 59 Gambetta Road YALYALUP WA 6280 Saving DA26/0326 - 12 Whatman Street QUINDALUP WA 6281 Saving DA26/0327 - 86 Shallows Loop YALLINGUP WA 6282 Saving DA26/0328 - 12 Gull Court DUNSBOROUGH WA 6281 Group: Building Applications Saving DA26/0332 - 69 Bussell Highway WEST BUSSELTON WA 6280 Saving BAC26/0180 - 131 Price Road Chapman Hill WA Appending continuation to previous_record... Processing page# 11 Page header: Applications Lodged – 24/04/2026 – 30/04/2026 Saving BAC26/0181 - 8 Chine Place Geographe WA Saving BAC26/0182 - 144 Northerly Street Vasse WA Saving BAC26/0183 - 7 Henry Willmott Drive Geographe WA Saving BAC26/0184 - 27 Torrey Loop Dunsborough WA Saving BAC26/0185 - 24 Prince Street Busselton WA Saving BAC26/0186 - 4 McDermott Street Quindalup WA Saving BAC26/0187 - 58 Adelaide Street Busselton WA Saving BAC26/0188 - 6 Elliot Street Busselton WA Saving BAC26/0189 - 978 Geographe Bay Road Geographe WA Saving BAU26/0185 - Unit 1 Lot 1 No 22 Derek Street West Busselton WA Saving BAU26/0186 - 17 Gibson Drive Dunsborough WA Saving BAU26/0187 - 139 Woodbridge Vale Yallingup Siding WA Saving BAU26/0188 - 1026 Geographe Bay Road Geographe WA Saving BAU26/0189 - 24 Clydebank Avenue West Busselton WA Saving BAU26/0190 - 6394 Bussell Highway Carabunup River WA Appending continuation to previous_record... Processing page# 12 Page header: Applications Lodged – 24/04/2026 – 30/04/2026 Appending continuation to previous_record... Saving BAU26/0191 - Unit 24 Lot 24 No 7 Marrinup Drive Yallingup WA Saving BAU26/0192 - 8 Berula Way Vasse WA Saving BAU26/0194 - 71 Dorset Street West Busselton WA Saving BAU26/0195 - 20 Tilbanup Drive Geographe WA Appending continuation to previous_record... Processing page# 13 Page header: Applications Lodged – 17/04/2026 – 23/04/2026 Group: Development Applications Saving BAU26/0196 - 284 Marine Terrace Geographe WA Saving DA26/0290 - 66 Pickmore Circus WEST BUSSELTON WA 6280 Saving DA26/0291 - 9 Rowan Place YALLINGUP SIDING WA 6282 Saving DA26/0292 - 10 Sheshan Road DUNSBOROUGH WA 6281 Saving DA26/0293 - 3 Samson Way VASSE WA 6280 Saving DA26/0294 - Lot 2 No 2/14 Bayou Court GEOGRAPHE WA 6280 Saving DA26/0295 - 20 Foredeck Close GEOGRAPHE WA 6280 Saving DA26/0296 - 1 Thomas Street WEST BUSSELTON WA 6280 Saving DA26/0297 - 44 Gambetta Road YALYALUP WA 6280 Saving DA26/0298 - Lot 11 No 11/1 Lecaille Court DUNSBOROUGH WA 6281 Appending continuation to previous_record... Processing page# 14 Page header: Applications Lodged – 17/04/2026 – 23/04/2026 Saving DA26/0299 - 44 Hakea Way DUNSBOROUGH WA 6281 Saving DA26/0300 - 21 Gifford Road DUNSBOROUGH WA 6281 Saving DA26/0301 - 22 Seaview Rise EAGLE BAY WA 6281 Saving DA26/0302 - 2 Marri Drive DUNSBOROUGH WA 6281 Saving DA26/0303 - 152 Kinross Loop QUINDALUP WA 6281 Saving DA26/0304 - 291 Jamisons Road CHAPMAN HILL WA 6280 Saving DA26/0305 - 1 Capstan Place GEOGRAPHE WA 6280 Saving DA26/0306 - 6 Armstrong Road BROADWATER WA 6280 Saving DA26/0307 - 52 Golding Ramble YALYALUP WA 6280 Saving DA26/0308 - 169 Butterly Road YALLINGUP WA 6282 Saving DA26/0309 - 21 Burler Drive VASSE WA 6280 Appending continuation to previous_record... Processing page# 15 Page header: Applications Lodged – 17/04/2026 – 23/04/2026 Group: Building Applications Saving DA26/0310 - 3 James Street DUNSBOROUGH WA 6281 Saving BAC26/0148 - Unit 1 Lot 41 No 7 Albrey Street Vasse WA Saving BAC26/0149 - Unit 6 Lot 41 No 7 Albrey Street Vasse WA Saving BAC26/0164 - 39 Rendezvous Road Vasse WA Saving BAC26/0165 - 33 Golding Ramble Yalyalup WA Saving BAC26/0166 - Lot 565 Foreshore Parade Busselton WA Saving BAC26/0167 - 3 Groyne Road Geographe WA Saving BAC26/0168 - 476 Geographe Bay Road Quindalup WA Saving BAC26/0169 - 15 Whitemoss Drive Vasse WA Saving BAC26/0170 - Unit 1-10 Lot 206 No 56 Beckett Road Metricup WA Saving BAC26/0171 - 29 Marri Drive Dunsborough WA Saving BAC26/0172 - 23 Quandong Close Vasse WA Appending continuation to previous_record... Processing page# 16 Page header: Applications Lodged – 17/04/2026 – 23/04/2026 Appending continuation to previous_record... Saving BAC26/0173 - 17 Seaview Rise Eagle Bay WA Saving BAC26/0174 - 43 Peppermint Drive Dunsborough WA Saving BAC26/0175 - 49 Hideaway Loop Vasse WA Saving BAC26/0176 - SSL 3 Lot 16 No 33 Southern Drive Busselton WA Saving BAC26/0177 - Lot No 23 Alwoodley Terrace Dunsborough WA Saving BAC26/0178 - 33 Southern Drive Busselton WA Saving BAC26/0179 - SSL 1 Lot 6 No 33 Southern Drive Busselton WA Saving BAC26/0180 - 131 Price Road Chapman Hill WA Saving BAC26/0181 - 8 Chine Place Geographe WA Saving BAC26/0182 - 144 Northerly Street Vasse WA Saving BAC26/0183 - 7 Henry Willmott Drive Geographe WA Saving BAU26/0170 - 16 Blue Crescent West Busselton WA Saving BAU26/0171 - 93 Gunyulgup Valley Yallingup WA Saving BAU26/0172 - 6 Beaufort Crescent West Busselton WA Appending continuation to previous_record... Processing page# 17 Page header: Applications Lodged – 17/04/2026 – 23/04/2026 Saving BAU26/0173 - 35 Berwick Place Quindalup WA Saving BAU26/0174 - 21 Tranquil Lane Quindalup WA Saving BAU26/0175 - Unit 2 Lot 2 No 14 Bayou Court Geographe WA Saving BAU26/0176 - 10 Robbies Close Quindalup WA Saving BAU26/0177 - 422 Geographe Bay Road Quindalup WA Saving BAU26/0178 - Lot 76 Unit 2 No 43 Amberley Loop Dunsborough WA Saving BAU26/0179 - 11 Friesian Grove Bovell WA Saving BAU26/0180 - 167 Chain Avenue Marybrook WA Saving BAU26/0181 - 10 Peaceful Way Ambergate WA Saving BAU26/0182 - 20 Gigondas Street Yalyalup WA Saving BAU26/0183 - 40 Kookaburra Way Vasse WA Appending continuation to previous_record... Processing page# 18 Page header: Applications Lodged – 10/04/2026 – 16/04/2026 Finished! Processed 182 records.

Data

Downloaded 79 times by ianheggie-oaf

To download data sign in with GitHub

Download table (as CSV) Download SQLite database (64 KB) Use the API

rows 10 / 174

council_reference description address date_scraped date_received info_url
DA26/0355
Lot 25: Single House (Modified Building Envelope, Tennis Court and Retaining Wall) - Special Control Area
19 Dalmore Close, QUEDJINUP WA 6281
2026-05-19
2026-05-08
DA26/0359
Lot 720: Single House (New Dwelling) - Special Control Area
32 Spinnaker Boulevard, GEOGRAPHE WA 6280
2026-05-19
2026-05-11
DA26/0360
Lot 61: Single House (New two storey Dwelling) - Special Control Area
12 Chine Place, GEOGRAPHE WA 6280
2026-05-19
2026-05-11
DA26/0361
Lot 87: Single House (New Dwelling)
12 Dumbarton Road, WEST BUSSELTON WA 6280
2026-05-19
2026-05-11
DA26/0358
Lot 4: Change of Use - Unhosted Short-Term Rental Accommodation (Single House - 10 Occupants) - 12- Month Approval
245 Bussell Highway, WEST BUSSELTON WA 6280
2026-05-19
2026-05-11
DA26/0362
Lot 49: Single House (Patio) - Special Control Area
232 Geographe Bay Road, QUINDALUP WA 6281
2026-05-19
2026-05-12
DA26/0364
Lot 22: Single House (Outbuilding)
734 Geographe Bay Road, WEST BUSSELTON WA 6280
2026-05-19
2026-05-12
DA26/0366
Lot 43: Change of Use - Unhosted Short-Term Rental Accommodation (Single House - 10 Occupants) - 12 Month Approval
5 Chloe Court, BROADWATER WA 6280
2026-05-19
2026-05-12
DA26/0367
Lot 74: Single House (Front Fence)
30 Lanyard Boulevard, GEOGRAPHE WA 6280
2026-05-19
2026-05-13
DA26/0368
Lot 122: Single House (Outbuilding)
6 Wannang Crescent, YALYALUP WA 6280
2026-05-19
2026-05-13

Statistics

Average successful run time: less than a minute

Total run time: less than a minute

Total cpu time used: less than 5 seconds

Total disk space used: 131 KB

History

  • Manually ran revision 2e0a1636 and completed successfully .
    174 records added in the database
  • Created on morph.io