ianheggie-oaf / orange

Scraper for Orange City Council (NSW) development applications, for PlanningAlerts


Orange City Council

Orange City Council publishes development applications as WordPress posts in two categories, both scraped here:

  • New DAs - weekly posts, each linking to a PDF listing every application received during the week. The PDF table is parsed using character positions and the drawn row separator lines.
  • DAs on Exhibition - posts with application details in the page body, including the exhibition period which is stored as on_notice_from / on_notice_to.

Applications appearing in both feeds are stored once, keyed on council_reference (posts are processed oldest first so the most recent information wins).

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

Set MORPH_AUSTRALIAN_PROXY to an Australian proxy, preferably one that rotates its IP address

Expected Output

Storing DA 205/2026(1) - Lot 17 DP 574798 - 6 Beasley Street, Orange NSW
Storing DA 206/2026(1) - Lot 14 DP 1070456 - 10 Brooklands Drive, Orange NSW
...
Storing DA 237/2026(1) - 89 Sampson Street, Orange NSW
Finished - processed 77 records

Expected runtime: ~ 30 seconds

To run the scraper

bundle exec ruby scraper.rb

To run style and coding checks

bundle exec rubocop

To check for security updates

gem install bundler-audit
bundle-audit

Contributors benrfairless ianheggie-oaf

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 Ascii85 2.0.1 [1G Fetching afm 1.0.0 [1G Fetching base64 0.3.0 [1G Fetching public_suffix 7.0.5 [1G Installing base64 0.3.0 [1G Installing Ascii85 2.0.1 [1G Installing afm 1.0.0 [1G Installing public_suffix 7.0.5 [1G Fetching bigdecimal 3.3.1 [1G Using bundler 2.4.10 [1G Fetching connection_pool 3.0.2 [1G Fetching domain_name 0.6.20240107 [1G Installing bigdecimal 3.3.1 with native extensions [1G Installing connection_pool 3.0.2 [1G Fetching hashery 2.1.2 [1G Fetching mutex_m 0.3.0 [1G Installing domain_name 0.6.20240107 [1G Installing hashery 2.1.2 [1G Installing mutex_m 0.3.0 [1G Fetching logger 1.7.0 [1G Installing logger 1.7.0 [1G Fetching mime-types-data 3.2026.0701 [1G Fetching net-http-digest_auth 1.4.1 [1G Installing net-http-digest_auth 1.4.1 [1G Fetching nkf 0.3.0 [1G Installing mime-types-data 3.2026.0701 [1G Fetching racc 1.8.1 [1G Installing racc 1.8.1 with native extensions [1G Installing nkf 0.3.0 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 sqlite3 2.2.0 (x86_64-linux-gnu) [1G Installing sqlite3 2.2.0 (x86_64-linux-gnu) [1G Fetching rubyntlm 0.6.5 [1G Installing rubyntlm 0.6.5 [1G Fetching addressable 2.9.0 [1G Fetching net-http-persistent 4.0.8 [1G Installing net-http-persistent 4.0.8 [1G Installing addressable 2.9.0 [1G Fetching httpclient 2.9.0 [1G Fetching http-cookie 1.1.6 [1G Installing http-cookie 1.1.6 [1G Fetching mime-types 3.7.0 [1G Installing httpclient 2.9.0 [1G Installing mime-types 3.7.0 [1G Fetching sqlite_magic 0.0.6 [1G Installing sqlite_magic 0.0.6 [1G Fetching nokogiri 1.17.2 (x86_64-linux) [1G Using scraperwiki 3.0.1 from https://github.com/openaustralia/scraperwiki-ruby.git (at morph_defaults@fc50176) [1G Installing nokogiri 1.17.2 (x86_64-linux) [1G Fetching mechanize 2.14.1 [1G Installing mechanize 2.14.1 [1G Fetching ttfunk 1.8.0 [1G Installing ttfunk 1.8.0 [1G Fetching pdf-reader 2.16.0 [1G Installing pdf-reader 2.16.0 [1G Bundle complete! 8 Gemfile dependencies, 30 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 (11.07s) [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... Using Australian proxy... Storing DA 13/2026(2) - Lot 310 DP 1273534 - 13 Fahy Crescent, Orange NSW Storing DA 263/2026(1) - Lot 304 DP 1075807 - 10 Isaac Drive, Orange NSW Storing DA 249/2026(1) - Lot 2 DP 1294828 - 127 Orchard Road, Springside NSW Storing DA 260/2026(1) - Lot 14 DP 271090 - 26 Cedar Street, Orange NSW Storing DA 256/2026(1) - Lot 312 DP 1192977 - 8 Daffodil Street, Orange NSW Storing DA 258/2026(1) - Lot 336 DP 1277081 - 114 Gorman Road, Orange NSW Storing DA 267/2026(1) - Lot 3 DP 225594 - 83 Woodward Street, Orange NSW Storing DA 269/2026(1) - Lot 1 DP 406682 - 37 Allenby Road, Orange NSW Storing DA 264/2026(1) - Lot 1 DP 100764 - 247 Byng Street, Orange NSW Storing DA 271/2026(1) - Lot 203 DP 1307440 - 187 Canobolas Road, Orange NSW Storing DA 265/2026(1) - Lot 305 DP 1018781 - 440 Cadia Road, Springside NSW Storing DA 266/2026(1) - Lot 10 DP 246994 - 19 Woodward Street, Orange NSW Storing DA 270/2026(1) - Lot 211 DP 1311439 - 42 Clearview Crescent, Orange NSW Storing DA 272/2026(1) - Lot 200 DP 1231431 - 154 Peisley Street, Orange NSW Storing DA 273/2026(1) - Lot 2 DP 241496 - 88 Anson Street, Orange NSW Storing CDC 140/2026(1) - Lot 408 DP 1252410 - 10 Hutchinson Close, Orange NSW Storing DA 275/2026(1) - Lot 20 DP 1133423 - 291 Canobolas Road, Orange NSW Storing DA 276/2026(1) - Lot 1 DP 731195 - 1823 Millthorpe Road, Spring Hill NSW Storing DA 277/2026(1) - Lot 219 DP 1244057 - 7 Catania Street, Orange NSW Storing DA 167/2026(2) L - ot 1 DP 201985 - 3 Hamer Street NSW Storing DA 58/2026(3) L - ot E DP 36343 - 23 Franklin Road NSW Storing DA 329/2026(1) L - ot 5 DP 35815 - 11 Spring Street, NSW Finished - processed 22 records

Data

Downloaded 199 times by ianheggie-oaf

To download data sign in with GitHub

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

rows 10 / 22

date_scraped on_notice_from on_notice_to council_reference address description info_url
2026-10-31
DA 13/2026(2)
Lot 310 DP 1273534 - 13 Fahy Crescent, Orange NSW
Swimming pool (inground) and pool fencing
2026-10-31
DA 263/2026(1)
Lot 304 DP 1075807 - 10 Isaac Drive, Orange NSW
Retaining walls
2026-10-31
DA 249/2026(1)
Lot 2 DP 1294828 - 127 Orchard Road, Springside NSW
Dual occupancy
2026-10-31
DA 260/2026(1)
Lot 14 DP 271090 - 26 Cedar Street, Orange NSW
Dwelling and attached garage
2026-10-31
DA 256/2026(1)
Lot 312 DP 1192977 - 8 Daffodil Street, Orange NSW
Dwelling alterations and additions and garage addition (carport)
2026-10-31
DA 258/2026(1)
Lot 336 DP 1277081 - 114 Gorman Road, Orange NSW
Dwelling, attached garage and pool
2026-10-31
DA 267/2026(1)
Lot 3 DP 225594 - 83 Woodward Street, Orange NSW
Home business (beauty salon)
2026-10-31
DA 269/2026(1)
Lot 1 DP 406682 - 37 Allenby Road, Orange NSW
Garage (detached)
2026-10-31
DA 264/2026(1)
Lot 1 DP 100764 - 247 Byng Street, Orange NSW
Demolition (shed) and swimming pool (inground) and pool fencing
2026-10-31
DA 271/2026(1)
Lot 203 DP 1307440 - 187 Canobolas Road, Orange NSW
Rural shed (car storage)

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: 58.5 KB

History

  • Manually ran revision 92e7ec58 and completed successfully .
    22 records added in the database
  • Created on morph.io

Scraper code

Ruby

orange / scraper.rb