publicdataau publicdata.au on GitHub
Published by NSW Department of Education under CC BY 4.0 and republished here with a column left out for its terms. NSW Department of Education has not endorsed this site.An independent republication of open government data. No government agency has endorsed it. Read more

NSW government schools, locations and enrolments

live
Publisher NSW Department of EducationUpdated monthlyLicence CC BY 4.0Latest 2026-10-02Rows 2,210Fields 45

The NSW public schools master dataset from the NSW Department of Education, one row per government school. It holds the school code and name, street address, phone, email and website, the level of schooling, selective, opportunity class, speciality and distance education flags, the latest FTE enrolment, the per cent of Aboriginal and Torres Strait Islander students and of students with a language background other than English, the family occupation and education index, the date the school opened, and the council area, state and federal electorates, departmental regions, health district, remoteness and latitude and longitude.

Also called: NSW public schools master dataset, NSW government school locations, NSW public school enrolment numbers, Find a NSW public school by suburb.

Before you use it
What is in each row?
One NSW government school, with its code, name, address and contacts, the level of schooling and the kinds of classes it offers, its latest full-time equivalent enrolment, the share of Aboriginal and Torres Strait Islander students and of students from a language background other than English, the areas it falls in and its latitude and longitude.
What does a null percentage mean?
The Department writes np where five or fewer students are counted, so the percentage is not published. Those cells are null here with a suppressed flag.
Are the fields all current?
The file carries the date it was extracted, but the fields come from different collections. Enrolments are as at August of the latest year, language background as at March, and the index of disadvantage as at May, each updated once a year.
Why is the ICSEA value not here?
The Department's file carries each school's ICSEA value, which it sources from ACARA. ACARA's terms for My School allow its content to be reproduced for non-commercial educational use only, so the column is left out until the Department confirms that its CC BY 4.0 licence covers it. Every other column is published.
2,209 schools drawn in 932 cells of 0.05 degrees, the fullest with 27.
Schools counted in cells of 0.05 degrees. State outlines from the ABS Australian Statistical Geography Standard 2021, CC BY 4.0.
2,210schools
1849 to 2025years drawn
45fields
12formats
1version
010203040501849: 111850: 61851: 51852: 71853: 21855: 31856: 31857: 41858: 241859: 111860: 141861: 221862: 171863: 121864: 91865: 181866: 61867: 181868: 381869: 2518691870: 151871: 171872: 141873: 91874: 91875: 181876: 181877: 151878: 321879: 251880: 171881: 261882: 311883: 431884: 351885: 181886: 171887: 191888: 161889: 181890: 171891: 3018911892: 161893: 131894: 111895: 101896: 61897: 81898: 71899: 61900: 61901: 91902: 61903: 71904: 71905: 51906: 31907: 101908: 91909: 51910: 111911: 41912: 151913: 1219131914: 61915: 101916: 91917: 121918: 71919: 91920: 141921: 91922: 161923: 131924: 101925: 121926: 101927: 131928: 121929: 161930: 81931: 51932: 21933: 61934: 51935: 619351936: 41937: 61938: 71939: 91941: 41942: 111943: 51944: 71945: 51946: 41947: 81948: 31949: 61950: 151951: 121952: 301953: 261954: 211955: 351956: 321957: 271958: 2719581959: 411960: 301961: 441962: 251963: 221964: 241965: 211966: 181967: 221968: 211969: 251970: 201971: 171972: 241973: 171974: 221975: 101976: 271977: 201978: 181979: 111980: 1419801981: 181982: 151983: 121984: 101985: 171986: 121987: 61988: 101989: 51990: 61991: 161992: 101993: 71994: 71995: 81996: 61997: 51998: 51999: 42000: 92001: 152002: 420022003: 92004: 62005: 52006: 32007: 62008: 32009: 32010: 12011: 12012: 12014: 32015: 62016: 22017: 12018: 22019: 82020: 62021: 72022: 12023: 102024: 42025: 62025
Openings of schools still open per year, 1849 to 2025. 2026 is not drawn because the rows run to 27 January 2026. Both figures are counts of rows from version 2026-10-02, worked out in the build. Nothing else is added.

Made for agents

Connect your AI agent

Any agent that connects to publicdata.au/mcp can find this dataset, read its 45 fields, count and filter across all 2,210 rows and diff its versions. Every answer names the version and carries Department of Education's attribution. No key.

Then ask it: What does NSW government schools, locations and enrolments hold, and what changed in the newest version?

claude mcp add --transport http publicdata https://publicdata.au/mcp

One command. No key, no account, no sign-up.

Download it as Excel, CSV, JSON and 9 more formats

Pick a format and a version. Excel is picked first because it opens in the tools most offices have. The URL is yours to keep. A dated version never changes.

Format
"Latest" redirects to the newest version and will change when the publisher releases again. A dated version never changes.
https://publicdata.au/d/nsw-public-schools/latest/data.xlsx
Download

In your own tools

Use it in Excel, R, Python and more

Excel and Power BI read the CSV from its address and refresh from it. The R and Python packages take any dataset on this site by its slug, so a new dataset needs no new release. The DuckDB file attaches read-only over HTTPS, and a query reads only the blocks it touches.

The dated URL in the code never changes. https://publicdata.au/d/nsw-public-schools/latest/ redirects to the newest version.

https://publicdata.au/d/nsw-public-schools/latest/data.csv

In Excel choose Data, then From Web, and paste this address. Excel keeps it, so Refresh All reads the newest version. A sheet holds about a million rows; past that, load the query to the Data Model.

What is in it

Column names are made snake_case and the publisher's original header is kept beside each one. Blank cells are null. Nothing is added, removed, ranked or summarised.

FieldTypePublisher's headerNote
school_codeintegerSchool_code
ageidintegerAgeID
school_namestringSchool_name
streetstringStreet
town_suburbstringTown_suburb
postcodestringPostcode
phonestringPhone
school_emailstringSchool_Email
websitestringWebsite
faxstringFax
latest_year_enrolment_ftenumberlatest_year_enrolment_FTEFull-time equivalent enrolments as reported to the ABS National Schools Statistics Collection, as at August.
indigenous_pctintegerIndigenous_pctPer cent of FTE students who identify as Aboriginal or Torres Strait Islander. The Department writes np where the student number is five or fewer; it is null here with a suppressed flag.
lbote_pctintegerLBOTE_pctPer cent of students, by headcount, from a language background other than English, as at March. np where the student number is five or fewer.
level_of_schoolingstringLevel_of_schooling
selective_schoolstringSelective_school
opportunity_classbooleanOpportunity_class
school_specialty_typestringSchool_specialty_type
school_subtypestringSchool_subtype
preschool_indbooleanPreschool_ind
distance_educationstringDistance_education
intensive_english_centrebooleanIntensive_english_centre
school_genderstringSchool_gender
late_opening_schoolbooleanLate_opening_school
date_1st_teacherdateDate_1st_teacherThe date the first teacher was on duty, which the Department treats as the date the school opened.
lgastringLGA
electorate_from_2023stringelectorate_from_2023
electorate_2015_2022stringelectorate_2015_2022
fed_electorate_from_2025stringfed_electorate_from_2025
fed_electorate_2016_2024stringfed_electorate_2016_2024
operational_directoratestringOperational_directorate
principal_networkstringPrincipal_network
operational_directorate_officestringOperational_directorate_office
operational_directorate_office_phonestringOperational_directorate_office_phone
operational_directorate_office_addressstringOperational_directorate_office_address
facs_districtstringFACS_district
local_health_districtstringLocal_health_district
aecg_regionstringAECG_region
asgs_remotenessstringASGS_remoteness
latitudenumberLatitudeAs published. The Department's data dictionary does not state the datum.
longitudenumberLongitudeAs published. The Department's data dictionary does not state the datum.
assets_unitstringAssets unit
sa4stringSA4
foei_valuenumberFOEI_ValueFamily Occupation and Education Index, the Department's school-level index of educational disadvantage. A higher value means more disadvantage.
date_extracteddateDate_extractedThe night the file was extracted. Fields come from different update cycles, so not every field was refreshed on this date.
support_classesstringSupport_classes
suppressedarrayNames of the fields the publisher suppressed in this row. The cells are null.

Download this table as a data dictionary (Excel), or read it as a Frictionless Table Schema at schema.json. The key is school_code.

A sample of 10 rows

From the latest version, newest first by date first teacher on duty, then in the publisher's order, with every field. A blank cell is shown as null.

school_codeageidschool_namestreettown_suburbpostcodephoneschool_emailwebsitefaxlatest_year_enrolment_fteindigenous_pctlbote_pctlevel_of_schoolingselective_schoolopportunity_classschool_specialty_typeschool_subtypepreschool_inddistance_educationintensive_english_centreschool_genderlate_opening_schooldate_1st_teacherlgaelectorate_from_2023electorate_2015_2022fed_electorate_from_2025fed_electorate_2016_2024operational_directorateprincipal_networkoperational_directorate_officeoperational_directorate_office_phoneoperational_directorate_office_addressfacs_districtlocal_health_districtaecg_regionasgs_remotenesslatitudelongitudeassets_unitsa4foei_valuedate_extractedsupport_classes
893389905Bayside High SchoolPrinces HighwayKogarah221702 8566 2200bayside-h.school@det.nsw.edu.auhttps://bayside-h.schools.nsw.gov.au/nullnullnullnullSecondary SchoolNot SelectivefalseComprehensiveYear 7 to Year 12falseNfalseCoedfalse2026-01-27Bayside (NSW)RockdaleRockdaleBartonCookMetropolitan SouthKogarahArncliffe131 536Arncliffe Education Office, Corner Segenhoe and Avenal StreetsnullnullnullMajor Cities of Australia-33.9673955151.1374145nullSydney - Inner South West822026-10-02null
893589907Box Hill High SchoolGeorge StreetBox Hill276502 9421 1200BoxHill-h.school@det.nsw.edu.auhttps://boxhill-h.schools.nsw.gov.au/nullnullnullnullSecondary SchoolNot SelectivefalseComprehensiveYear 7 to Year 9falseNfalseCoedfalse2026-01-27The HillsHawkesburynullGreenwaynullMetropolitan NorthSouth CreekQuakers Hill131 536Building T3C, Nirimba Education Precinct, Eastern RoadnullnullnullMajor Cities of Australia-33.6457150.898968nullSydney - Baulkham Hills and Hawkesbury332026-10-02null
468189440Green Square Public SchoolJoynton AvenueZetlands20178344 7100greensquare-p.school@det.nsw.edu.auhttps://greensquare-p.schools.nsw.gov.aunull107null75Primary SchoolNot SelectivefalseComprehensiveKindergarten to Year 6falseNfalseCoedfalse2025-01-31SydneyHeffronHeffronSydneySydneyMetropolitan SouthKamaySt Peters131 536St Peters Education Office, 93 Church StreetnullnullMetropolitan EastMajor Cities of Australia-33.908383151.20668nullSydney - City and Inner South02026-10-02null
468989442Melonba Public School10 SWALLOWTAIL STMELONBA276502 8808 4800melonba-p.school@det.nsw.edu.auhttps://melonba-p.schools.nsw.gov.au/null776null92Primary SchoolNot SelectivefalseComprehensiveKindergarten to Year 6falseNfalseCoedfalse2025-01-31BlacktownLondonderryLondonderryChifleyChifleyMetropolitan NorthSouth CreekQuakers Hill131 536Building T3C, Nirimba Education Precinct, Eastern RoadnullnullMetropolitan WestMajor Cities of Australia-33.699759150.803617nullSydney - Blacktown182026-10-02null
469489444Box Hill Public SchoolGeorge StBox Hill276502 9852 6900boxhill-p.school@det.nsw.edu.auhttps://boxhill-p.schools.nsw.gov.aunull271null91Primary SchoolNot SelectivefalseComprehensiveKindergarten to Year 6falseNfalseCoedfalse2025-01-31The HillsHawkesburyCastle HillGreenwayMitchellMetropolitan NorthSouth CreekQuakers Hill131 536Building T3C, Nirimba Education Precinct, Eastern RoadnullnullMetropolitan WestMajor Cities of Australia-33.64227150.892123nullSydney - Baulkham Hills and Hawkesbury22026-10-02null
891889446Wentworth Point High School7 Burroway RdWENTWORTH POINT21278737 7000WentworthPoint-h.school@det.nsw.edu.auhttps://wentworthpoint-h.schools.nsw.gov.au/null188null88Secondary SchoolNot SelectivefalseComprehensiveYear 7 to Year 12falseNfalseCoedfalse2025-01-31ParramattaParramattaAuburnReidReidMetropolitan SouthAuburnSt Peters131 536St Peters Education Office, 93 Church StreetnullnullMetropolitan South WestMajor Cities of Australia-33.82399151.08074nullSydney - Parramatta492026-10-02null
892646463Randwick High SchoolAvoca StreetRandwick203102 9314 9800randwick-h.school@det.nsw.edu.auhttps://randwick-h.schools.nsw.gov.au/null1460254Secondary SchoolNot SelectivefalseComprehensiveYear 7 to Year 12falseNfalseCoedfalse2025-01-31RandwickCoogeeCoogeeKingsford SmithKingsford SmithMetropolitan SouthBondiSt Peters131 536St Peters Education Office, 93 Church StreetnullnullMetropolitan EastMajor Cities of Australia-33.921832151.23944nullSydney - Eastern Suburbs502026-10-02null
892789458Gledswood Hills High School9 GREGORY HILLS DRGLEDSWOOD HILLS255702 4645 2800gledswoodhill-h.school@det.nsw.edu.auhttps://gledswoodhills-h.schools.nsw.gov.au/null87null60Secondary SchoolNot SelectivefalseComprehensiveYear 7 to Year 9falseNfalseCoedfalse2025-01-31CamdenCamdenCamdenMacarthurMacarthurRegional South and Connected CommunitiesMacarthurCampbelltown131 536Corner Lindesay and Lithgow StreetsnullnullMetropolitan South WestMajor Cities of Australia-34.022494150.769597nullSydney - South West842026-10-02null
468788922Gulyangarri Public School18 Forbes StreetLiverpool217002 8777 6500gulyan-p.school@det.nsw.edu.auhttps://gulyangarri-p.schools.nsw.gov.au/null267null86Primary SchoolNot SelectivefalseComprehensivePreschool to Year 6trueNfalseCoedfalse2024-01-31LiverpoolLiverpoolLiverpoolFowlerFowlerMetropolitan South and WestLiverpoolGlenfield131 536Glenfield Education Office, Roy Watts RoadnullnullMetropolitan South WestMajor Cities of Australia-33.917848150.932241nullSydney - South West1182026-10-02null
468688920Tallawong Public School24 Macquarie RoadRouse Hill215502 9627 0900tallawong-p.school@det.nsw.edu.auhttps://tallawong-p.schools.nsw.gov.aunull121null76Primary SchoolNot SelectivefalseComprehensiveKindergarten to Year 6falseNfalseCoedfalse2024-01-30BlacktownRiverstoneRiverstoneGreenwayGreenwayMetropolitan NorthSouth CreekQuakers Hill131 536Building T3C, Nirimba Education Precinct, Eastern RoadnullnullMetropolitan WestMajor Cities of Australia-33.6868150.8991nullSydney - Blacktown352026-10-02null
The first row as JSON

As it appears in data.json.

GET https://publicdata.au/d/nsw-public-schools/latest/data.json
{
  "school_code": 1001,
  "ageid": 44402,
  "school_name": "Abbotsford Public School",
  "street": "350 Great North Rd",
  "town_suburb": "Abbotsford",
  "postcode": "2046",
  "phone": "9713 6220",
  "school_email": "abbotsford-p.school@det.nsw.edu.au",
  "website": "https://abbotsford-p.schools.nsw.gov.au",
  "fax": "9712 1825",
  "latest_year_enrolment_fte": 368.0,
  "indigenous_pct": 2,
  "lbote_pct": 37,
  "level_of_schooling": "Primary School",
  "selective_school": "Not Selective",
  "opportunity_class": false,
  "school_specialty_type": "Comprehensive",
  "school_subtype": "Kindergarten to Year 6",
  "preschool_ind": false,
  "distance_education": "N",
  "intensive_english_centre": false,
  "school_gender": "Coed",
  "late_opening_school": false,
  "date_1st_teacher": "1925-04-01",
  "lga": "Canada Bay",
  "electorate_from_2023": "Drummoyne",
  "electorate_2015_2022": "Drummoyne",
  "fed_electorate_from_2025": "Reid",
  "fed_electorate_2016_2024": "Reid",
  "operational_directorate": "Metropolitan South",
  "principal_network": "Iron Cove",
  "operational_directorate_office": "St Peters",
  "operational_directorate_office_phone": "131 536",
  "operational_directorate_office_address": "St Peters Education Office, 93 Church Street",
  "facs_district": "South Eastern Sydney, Northern Sydney & Sydney",
  "local_health_district": "Sydney",
  "aecg_region": "Metropolitan East",
  "asgs_remoteness": "Major Cities of Australia",
  "latitude": -33.852728,
  "longitude": 151.131206,
  "assets_unit": "Sydney",
  "sa4": "Sydney - Inner West",
  "foei_value": 27.0,
  "date_extracted": "2026-10-02",
  "support_classes": null,
  "suppressed": []
}

Query it without downloading

The query API returns only the rows you ask for, as JSON, NDJSON or CSV, from the same typed rows as the files. It needs no key. Build a query here and run it, then copy the URL or the code into your own work.

Try rows or aggregate for this dataset. The query builder needs JavaScript.

How filters work

Each filter is field=operator.value in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive except with ilike. Prefix not. to negate a filter, as not.eq.value.

OperatorWhat it matches
eq.valueEqual to the value.
neq.valueNot equal to the value. A blank cell does not match.
gt.valueGreater than the value.
gte.valueGreater than or equal to the value.
lt.valueLess than the value.
lte.valueLess than or equal to the value.
like.*text*Matches a pattern where * stands for any run of characters. Case-sensitive.
ilike.*text*The same as like, ignoring case.
in.(a,b,c)Equal to any value in the list. A value cannot contain a comma.
is.nullBlank in the source, or suppressed by the publisher.
ParameterWhat it does
selectFields to return, comma-separated. Every field when absent.
orderfield.asc or field.desc, comma-separated. The publisher's row order when absent.
limitRows per page, 1 to 10,000. 100 when absent.
offsetRows to skip. The next URL in each answer sets it for you.
groupOn aggregate, fields to group by, comma-separated.
metricOn aggregate, count, sum.field, avg.field, min.field or max.field, comma-separated. count when absent.
formatjson, ndjson or csv. JSON carries the provenance header, and the others carry it in response headers.

Without a version the API answers from the newest loaded version, and that answer changes when the publisher releases again. Put versions/<date>/ before rows or aggregate for an answer that never changes. /api/v1/datasets/<slug>/versions lists the loaded versions. The 1 newest version is loaded; versions lists them.

The API allows 60 requests in 10 seconds from one address. Above that it answers 429 for 10 seconds with a Retry-After header, a RateLimit-Policy header and a JSON body that gives the limit. Every API answer carries the same RateLimit-Policy. A client should wait the Retry-After seconds, or read the files, which have no limit. openapi.json describes this dataset's query paths for client generators and agents.

https://publicdata.au/mcp is a remote MCP server over Streamable HTTP with the same tools, defined in the same place, so a tool added to the pages is added here too. It needs no key and no account. The row tools are held to the query API's limit of 60 queries in 10 seconds from one address, and each call is two queries because it also counts the matching rows. Add it to Claude Code with claude mcp add --transport http publicdata https://publicdata.au/mcp, add the URL in Claude as a custom connector, or give it to any client that connects to remote MCP servers. Each queryable dataset is also a resource at https://publicdata.au/d/<slug>/fields.json, which lists its fields with their types, the publisher's descriptions, their ranges and the values they hold, so an agent can read a dataset's shape before it writes a query.

What changed

One version for every release the publisher has made since this site started following the dataset. The date is the day the file changed on the portal.

  • 2026-10-02
    2,210 rows45 fieldsutf-8-sig2bc63daaf71d

versions.json · changes.json · history.tar.zst (214 KB, every version's Parquet and manifest)

Questions

How do I download NSW government schools as a CSV file?

Open https://publicdata.au/d/nsw-public-schools/latest/data.csv. It redirects to the newest dated version, which is https://publicdata.au/d/nsw-public-schools/v/2026-10-02/data.csv today. The same path serves Excel, JSON, GeoJSON, Parquet, SQLite, DuckDB, GeoPackage, GeoParquet, NDJSON, Arrow. A dated URL never changes, so use it when the file must stay the same.

Can I open NSW government schools in Excel?

Yes. https://publicdata.au/d/nsw-public-schools/v/2026-10-02/data.xlsx is a workbook with the 2,210 rows on a records sheet, the field list on a second sheet and the provenance on a third. The CSV also opens in Excel. https://publicdata.au/d/nsw-public-schools/v/2026-10-02/data.csv.gz is the CSV at about a tenth of the size.

What years does NSW government schools cover?

The current version covers 1849 to 2025. Each release from Department of Education becomes a new dated version here, and earlier versions stay online.

How often is NSW government schools updated?

Department of Education releases it monthly. This site checks the portal every week and adds a dated version when the file changes.

Can I use NSW government schools commercially?

Yes. CC BY 4.0 allows commercial use, redistribution and derived works as long as the attribution is kept. The attribution string is in this page's side column and inside every file.

Is this the official source for NSW government schools?

No. The publisher is NSW Department of Education, and its page is https://data.nsw.gov.au/data/dataset/nsw-education-nsw-public-schools-master-dataset. This site republishes the publisher's file with one change. The ICSEA value column is left out because ACARA licenses ICSEA for non-commercial educational use only, and the Department has been asked whether its CC BY 4.0 licence covers it. The publisher's own file includes that column, so it is not kept beside each version.

What coordinate system does NSW government schools use?

Latitude and longitude in decimal degrees as published. The Department's data dictionary does not state the datum; GDA94 is the NSW Government's standard and differs from GDA2020 and WGS84 by under 2 metres. The GeoJSON file uses the same coordinates, which is what GeoJSON expects.

What this site did to the data. Cells were typed, headers were renamed and the encoding was made UTF-8. Rows were left alone. The ICSEA value column is left out because ACARA licenses ICSEA for non-commercial educational use only, and the Department has been asked whether its CC BY 4.0 licence covers it. The publisher's own file includes that column, so it is not kept beside each version.