Beyond football and band: the secondary school CCAs you didn't know existed
Only 2 of 147 secondary-level schools in Singapore offer horse riding as a CCA. We read MOE's 2026 CCA, subject and programme listings to find the rarest, and where your child could do them.
Find it near you
How rare is ?
Where in Singapore?
Every grey dot is a secondary-level school. Coloured dots offer . The red ring is your area.
Which schools offer , nearest first?
The rarity ladder
Tap anything to look it up. Football, badminton, band and the other things most schools have are left out.
Which schools list the most CCAs?
The number of different CCAs each school lists. Boys' and girls' teams of the same sport count once.
Most CCAs in Singapore
Fewest CCAs
The schools at the top run from Secondary 1 to JC2, so their lists include JC-level groups. A typical school lists 23.
Fun finds
The short version
Secondary school CCA list for Singapore, 2026: of 147 secondary-level schools, 8 CCAs are offered by exactly one school and 14 by two or three. Horse riding (listed by MOE as equestrian) is at 2 schools, rock climbing at 14, ice skating at 5, trampoline at 7 and shooting at 28. A typical school lists 23 distinct CCAs (range 14 to 89), from MOE's School Directory data last updated April 2026, downloaded 2 Oct 2026.
Beyond CCAs, 3 subjects (mechanical servicing, political studies and puppetry) and 1 Applied Learning Programme theme (marine robotics) are offered by exactly one school. Pick an activity, subject or specialism and your area to see the schools offering it, nearest first, by straight-line distance.
The list counts MOE's CCA categories, so boys' and girls' teams of the same sport count once. It describes what schools list, not how good any school is, and it is not a ranking.
By Ben (opens in a new tab). Updated . Data: MOE School Directory and Information, data.gov.sg.
Questions people ask
Which secondary schools in Singapore offer horse riding as a CCA?
2 secondary-level schools: Methodist Girls' School (Secondary) and Raffles Girls' School (Secondary). Both are girls' schools. MOE lists the CCA as equestrian.
Which secondary schools offer rock climbing?
14 of 147 secondary-level schools list it, which is about 1 in 11: Anglican High School, Assumption English School, CHIJ St. Theresa's Convent, Gan Eng Seng School, Guangyang Secondary School, Kent Ridge Secondary School, Loyang View Secondary School, Maris Stella High School, Methodist Girls' School (Secondary), National Junior College, Outram Secondary School, Raffles Girls' School (Secondary), Singapore Sports School and Xinmin Secondary School. MOE's category is rockwall climbing.
Which secondary schools have a shooting CCA?
28 of 147 secondary-level schools list shooting, about 1 in 5. MOE's data does not say which kind of shooting. Use the finder above to see the ones nearest your home.
Which secondary schools offer ice skating?
5 secondary-level schools: Hwa Chong Institution, Methodist Girls' School (Secondary), Raffles Girls' School (Secondary), Singapore Sports School and Swiss Cottage Secondary School.
Which secondary schools offer trampoline?
7 secondary-level schools: CHIJ St. Nicholas Girls' School, Catholic High School, Hwa Chong Institution, Kent Ridge Secondary School, Raffles Girls' School (Secondary), Raffles Institution and Singapore Sports School.
Which CCAs are offered by only one secondary school?
As MOE lists them, ballet (Northbrooks Secondary School), boccia (Northbrooks Secondary School), civil defence (Dunman High School), diabolo (Crest Secondary School), in-line skating (Singapore Sports School), opera/operatta (Dunman High School), rope skipping (Evergreen Secondary School) and wrestling (Singapore Sports School). The data comes from MOE's listings, so check with the school before relying on any one entry.
Which school subjects are offered by only one school?
mechanical servicing (Northlight School), political studies (Singapore Chinese Girls' School) and puppetry (Nan Chiau High School). 6 more subjects are offered by exactly two schools.
How many CCAs does a Singapore secondary school have?
A typical secondary-level school lists 23 distinct CCAs. The range is 14 to 89. Raffles Institution lists the most, but it runs from Secondary 1 to JC2, so its list includes JC-level groups. Among schools with no JC section, Raffles Girls' School (Secondary) lists the most, at 73.
The numbers behind it
| CCA | Schools offering it | Which schools |
|---|---|---|
| Ballet | 1 | Northbrooks Secondary School |
| Boccia | 1 | Northbrooks Secondary School |
| Civil Defence | 1 | Dunman High School |
| Diabolo | 1 | Crest Secondary School |
| In-Line Skating | 1 | Singapore Sports School |
| Opera/Operatta | 1 | Dunman High School |
| Rope Skipping | 1 | Evergreen Secondary School |
| Wrestling | 1 | Singapore Sports School |
| Chinese Drums | 2 | Chung Cheng High School (Yishun); Yuying Secondary School |
| Equestrian (horse riding) | 2 | Methodist Girls' School (Secondary); Raffles Girls' School (Secondary) |
| Gamelan Ensemble | 2 | Bukit Panjang Govt. High School; Evergreen Secondary School |
| Harp Ensemble | 2 | Nan Hua High School; Paya Lebar Methodist Girls' School (Secondary) |
| Indian Orchestra | 2 | Raffles Girls' School (Secondary); Unity Secondary School |
| Aero-Modelling | 3 | Compassvale Secondary School; Northbrooks Secondary School; Peicai Secondary School |
| Aikido | 3 | Crest Secondary School; Methodist Girls' School (Secondary); Northbrooks Secondary School |
| Chinese Instrumental Ensemble | 3 | Changkat Changi Secondary School; Mayflower Secondary School; Serangoon Secondary School |
| Harmonica Ensemble | 3 | Edgefield Secondary School; Hwa Chong Institution; Yuhua Secondary School |
| Karate | 3 | Montfort Secondary School; Raffles Girls' School (Secondary); St. Gabriel's Secondary School |
| Keyboard Ensemble | 3 | Hwa Chong Institution; National Junior College; Raffles Institution |
| National Police Cadet Corps (Sea) | 3 | Edgefield Secondary School; Raffles Girls' School (Secondary); Springfield Secondary School |
| Pipe Band | 3 | Nan Hua High School; Northland Secondary School; St. Joseph's Institution |
| Triathlon | 3 | Kent Ridge Secondary School; Raffles Girls' School (Secondary); Singapore Sports School |
| Subject or specialism | Kind | Schools offering it | Which schools |
|---|---|---|---|
| Marine robotics | Applied Learning Programme theme | 1 | Yuan Ching Secondary School |
| Mechanical servicing | Subject | 1 | Northlight School |
| Political Studies | Subject | 1 | Singapore Chinese Girls' School |
| Puppetry | Subject | 1 | Nan Chiau High School |
| Baking | Subject | 2 | Assumption Pathway School; Northlight School |
| Culinary skills | Subject | 2 | Assumption Pathway School; Crest Secondary School |
| Dance | Subject | 2 | CHIJ Katong Convent; School of The Arts, Singapore |
| Design thinking | Applied Learning Programme theme | 2 | Admiralty Secondary School; Yuying Secondary School |
| Hospitality | Subject | 2 | Assumption Pathway School; Northlight School |
| Philosophy | Subject | 2 | Nanyang Girls' High School; Raffles Institution |
| Refrigeration | Subject | 2 | Assumption Pathway School; Northlight School |
The boring bit
Where the data comes from
MOE's School Directory and Information collection on data.gov.sg: CCAs, Subjects Offered, School Distinctive Programmes and General information of schools, all last updated in April 2026 and downloaded 2 Oct 2026. We kept the 147 schools with a secondary section: 133 secondary schools and 14 mixed-level schools such as integrated programme schools. Coordinates for the finder come from OneMap.
What is not claimed
- 2 schools have no CCA listing in the MOE file (NUS High School of Mathematics and Science and the School of the Arts). They appear in the subject results only.
- We counted MOE's CCA categories, so "Basketball (Boys)" and "Basketball (Girls)" count once. Where a school's own name for a CCA clearly contradicted MOE's category, we followed the school's name and dropped the entry (for example Weightlifting filed under Wrestling at one school). Where a category looked surprising but the school gave no name of its own, such as ballet at Northbrooks Secondary School, we kept MOE's listing. Check with the school before relying on it.
- Subjects are described in many ways, so we grouped obvious variants. Third languages such as French and German appear at almost every school, so they are not rare and are left out.
- Specialisms come from each school's Applied Learning Programme title, grouped by keyword. A school can have a strong programme our keywords missed.
- Distances are straight lines from the middle of the schools in your chosen area, not travel times.
- This is not a ranking. Offering rare activities says nothing about how good a school is, and we make no claim about admission.
Coverage
147 of 147 secondary-level schools in MOE's general information file were read, and 145 of 147 have a CCA listing. Items offered by more than 1 in 5 schools (such as football, badminton and band) are left out of the finder.
Report an error. Corrections are logged publicly with a date.
How we did it
- Joined four MOE files on school name, then kept schools whose level includes a secondary section.
- Counted how many schools list each CCA category and sorted from rarest to commonest. Categories that describe admin rather than an activity, such as student council, modular CCA and prefects, were removed.
- De-duplicated before counting choice. A school's CCA count is the number of distinct categories, not rows, so listing boys' and girls' teams separately does not inflate it.
- Normalised subject names by lower-casing, removing brackets and level markers, then grouping variants with simple patterns.
- Geocoded every school by sending its postal code to OneMap, the government map service, which returned coordinates for all 147.
- Measured distances with the haversine formula, the straight-line distance between two points on the Earth's surface.
Show the Python code
import pandas as pd, requests
from math import radians, sin, cos, asin, sqrt
info = pd.read_csv("general_information_of_schools.csv", dtype=str)
cca = pd.read_csv("co_curricular_activities.csv", dtype=str)
sec = info[info.mainlevel_code.str.contains("SECONDARY|MIXED LEVEL")]
cca = cca[cca.School_name.isin(sec.school_name) & (cca.school_section != "PRIMARY")]
# how many schools offer each CCA category
rarity = cca.groupby("cca_grouping_desc").School_name.nunique().sort_values()
print(rarity.head(15))
# distinct CCAs per school (boys' and girls' teams count once)
choice = cca.groupby("School_name").cca_grouping_desc.nunique()
def locate(postal):
r = requests.get("https://www.onemap.gov.sg/api/common/elastic/search",
params={"searchVal": postal, "returnGeom": "Y",
"getAddrDetails": "Y", "pageNum": 1}).json()
hit = r["results"][0]
return float(hit["LATITUDE"]), float(hit["LONGITUDE"])
def km(a, b):
la1, lo1, la2, lo2 = map(radians, (*a, *b))
h = sin((la2-la1)/2)**2 + cos(la1)*cos(la2)*sin((lo2-lo1)/2)**2
return 2 * 6371 * asin(sqrt(h))
No machine learning was needed. The questions were "how many" and "how far", which counting and geometry answer directly.
Sources: MOE School Directory and Information (opens in a new tab) (CCAs, Subjects Offered, School Distinctive Programmes, General information of schools), data.gov.sg, downloaded 2 Oct 2026. Coordinates from OneMap. Contains information from data.gov.sg and the Singapore Land Authority made available under the Singapore Open Data Licence.