A morph.io scraper that collects the name, contact details, role, and ward of every elected member across all 68 local councils in South Australia.
Forked from openaustralia/salgcouncillors. The original scraper used a deprecated GovHack Parse API. This version scrapes council websites directly.
One row per elected member. Unique key: council + name.
Column | Description
--- | ---
name | Full name of the elected member
role | Mayor, Deputy Mayor, Councillor, or Chairperson
ward | Ward name, if the council uses wards (null for at-large members and for Mayors)
council | Full council name
email | Official council email address
phone | Contact phone number
url | Profile page URL on the council website
source_url | The page that was scraped
Councillor data for all 68 SA councils is publicly available — councils are required to publish it under the Local Government Act 1999 (SA).
Status | Count | Notes --- | --- | --- Implemented | 23 | OpenCities CMS family (22) + Port Adelaide Enfield TODO | 45 | Logged and skipped at runtime
See scraper.rb for the current status of each council.
Most SA metro councils run the same CMS — OpenCities by Granicus — which means one scraping function covers around a third of all councils. Remaining councils are implemented individually, grouped by CMS family where possible.
Shared helpers handle email extraction, phone normalisation, role detection, and name cleaning across all scrapers. Any council that fails to fetch or parse logs a clear warning and the run continues.
gem install scraperwiki mechanize nokogiri
ruby scraper.rb
Results are written to data.sqlite in the local directory.
members_url values for TODO councils are best guesses and may need correcting on inspection.Average successful run time: about 2 hours
Total run time: 3 days
Total cpu time used: 19 minutes
Total disk space used: 50.5 KB