# List of FC Schalke 04 seasons

FC Schalke 04 is a German football club based in Gelsenkirchen, North Rhine-Westphalia.

## Key

| Champions | Runners-up | Promoted | Relegated | First Tier | Second Tier |
Top scorer shown in bold when he was also the league's highest or joint highest scorer.

## Early years (until 1933)

| Season | League | League | League | League | League | League | League | League | Western German Champ. | German Champ. | Top scorer(s) (league) | Top scorer(s) (league) |
| Season | Div. | Tier | Pld | W | D | L | Pts | Pos | Western German Champ. | German Champ. | Player(s) | Goals |
| 1922–24 | Emscher-Kreisliga | 2 | 17 | 13 | 2 | 2 | 28 | 1st | – | – | | |
| 1924–26 | Emscher-Kreisliga | 2 | 22 | 16 | 3 | 3 | 35 | 1st | – | – | | |
| 1926–27 | 1. Ruhrbezirksklasse | 1 | 16 | 14 | 2 | 0 | 30 | 1st | 2nd | R16 | Ernst Kuzorra | 21 |
| 1927–28 | 1. Ruhrbezirksklasse | 1 | 16 | 9 | 6 | 1 | 24 | 1st | 3rd | R16 | Ernst Kuzorra | 16 |
| 1928–29 | 1. Ruhrbezirksklasse | 1 | 16 | 13 | 1 | 2 | 27 | 1st | 1st | QF | Fritz Szepan | 18 |
| 1929–30 | 1. Ruhrbezirksklasse | 1 | 18 | 16 | 0 | 2 | 32 | 1st | 1st | QF | Ernst Kuzorra | 34 |
| 1930–31 | 1. Ruhrbezirksklasse | 1 | 16 | 6 | 1 | 9 | 13 | 6th | – | – | Wilhelm Kellner | 8 |
| 1931–32 | 1. Ruhrbezirksklasse | 1 | 18 | 16 | 0 | 2 | 32 | 1st | W | SF | Hermann Nattkämper | 19 |
| 1932–33 | 1. Ruhrbezirksklasse | 1 | 18 | 15 | 1 | 2 | 31 | 1st | W | RU | Hermann Nattkämper | 23 |

## Gauliga era (1933–1945)

| Season | League | League | League | League | League | League | League | League | German Champ. | DFB- Pokal | Top scorer(s) (league) | Top scorer(s) (league) |
| Season | Div. | Tier | Pld | W | D | L | Pts | Pos | German Champ. | DFB- Pokal | Player(s) | Goals |
| 1933–34 | Gauliga Westfalen | 1 | 18 | 16 | 1 | 1 | 33 | 1st | W | NH | Hermann Nattkämper | 24 |
| 1934–35 | Gauliga Westfalen | 1 | 18 | 12 | 4 | 2 | 28 | 1st | W | NH | Adolf Urban | 11 |
| 1935–36 | Gauliga Westfalen | 1 | 18 | 17 | 1 | 0 | 35 | 1st | SF | RU | Adolf Urban | 19 |
| 1936–37 | Gauliga Westfalen | 1 | 18 | 17 | 1 | 0 | 35 | 1st | W | RU | Ernst Poertgen | 22 |
| 1937–38 | Gauliga Westfalen | 1 | 18 | 16 | 2 | 0 | 34 | 1st | RU | W | Ernst Kuzorra | 21 |
| 1938–39 | Gauliga Westfalen | 1 | 18 | 13 | 5 | 0 | 31 | 1st | W | – | Adolf Urban | 12 |
| 1939–40 | Gauliga Westfalen | 1 | 18 | 15 | 2 | 1 | 32 | 1st | W | – | Hermann Eppenhoff | 27 |
| 1940–41 | Gauliga Westfalen | 1 | 22 | 21 | 1 | 0 | 43 | 1st | RU | R3 | Hermann Eppenhoff | 28 |
| 1941–42 | Gauliga Westfalen | 1 | 18 | 15 | 2 | 1 | 32 | 1st | W | RU | Hermann EppenhoffErnst Kalwitzki | 18 |
| 1942–43 | Gauliga Westfalen | 1 | 18 | 17 | 1 | 0 | 35 | 1st | QF | RU | Fritz Szepan | 16 |
| 1943–44 | Gauliga Westfalen | 1 | 18 | 16 | 1 | 1 | 33 | 1st | R2 | SF | Fritz Szepan | 15 |
| 1944–45 | Gauliga Westfalen | 1 | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II | The season was abandoned due to World War II |

## Oberliga era (1945–1963)
### Key

OL = Oberliga West, LL = Landesliga Westfalen Gruppe 1
EC = European Cup
| Season | League | League | League | League | League | League | League | League | German Champ. | DFB- Pokal | Europe | Europe | Top scorer(s) (league) | Top scorer(s) (league) | Avg. attend. |
| Season | Div. | Tier | Pld | W | D | L | Pts | Pos | German Champ. | DFB- Pokal | Comp | Rd | Player(s) | Goals | Avg. attend. |
| 1945–46 | LL | 1 | 16 | 13 | 2 | 1 | 28 | 1st | NH | NH | NH | NH | Heinz Hinz [de] | 14 | |
| 1946–47 | LL | 1 | 18 | 16 | 2 | 0 | 34 | 1st | NH | NH | NH | NH | Herbert Burdenski | 30 | |
| 1947–48 | OL | 1 | 24 | 9 | 6 | 9 | 24 | 6th | – | NH | NH | NH | Herbert Burdenski | 12 | 16,000 |
| 1948–49 | OL | 1 | 24 | 6 | 6 | 12 | 18 | 12th | – | NH | NH | NH | five players | 4 | 14,500 |
| 1949–50 | OL | 1 | 30 | 17 | 3 | 10 | 37 | 6th | – | NH | NH | NH | Erwin Ebert [de] Paul Matzkowski [de] | 12 | 24,294 |
| 1950–51 | OL | 1 | 30 | 18 | 6 | 6 | 42 | 1st | GS | NH | NH | NH | Hans Kleina [de] | 23 | 23,800 |
| 1951–52 | OL | 1 | 30 | 18 | 4 | 8 | 40 | 2nd | GS | NH | NH | NH | Bernhard Klodt | 16 | 23,800 |
| 1952–53 | OL | 1 | 30 | 14 | 5 | 11 | 33 | 6th | – | R1 | NH | NH | Günter Siebert | 15 | 19,466 |
| 1953–54 | OL | 1 | 30 | 16 | 7 | 7 | 39 | 3rd | – | – | NH | NH | Otto Laszig [de] | 16 | 26,400 |
| 1954–55 | OL | 1 | 30 | 11 | 8 | 11 | 30 | 6th | – | RU | NH | NH | Helmut Sadlowski [de] | 10 | 18,333 |
| 1955–56 | OL | 1 | 30 | 18 | 5 | 7 | 41 | 2nd | GS | – | – | – | Helmut Sadlowski [de] | 14 | 16,266 |
| 1956–57 | OL | 1 | 30 | 15 | 6 | 9 | 36 | 4th | – | – | – | – | Günter Siebert | 16 | 19,333 |
| 1957–58 | OL | 1 | 30 | 16 | 9 | 5 | 41 | 1st | W | – | – | – | Willi Soya | 17 | 25,933 |
| 1958–59 | OL | 1 | 30 | 9 | 9 | 12 | 27 | 11th | – | – | EC | QF | Hans Nowak | 13 | 19,733 |
| 1959–60 | OL | 1 | 30 | 15 | 4 | 11 | 34 | 4th | – | – | – | – | Waldemar Gerhardt | 11 | 23,800 |
| 1960–61 | OL | 1 | 30 | 11 | 13 | 6 | 35 | 3rd | – | – | – | – | Manfred Berz [de] Waldemar Gerhardt | 13 | 24,066 |
| 1961–62 | OL | 1 | 30 | 18 | 7 | 5 | 43 | 2nd | GS | SF | – | – | Willi Koslowski | 14 | 26,466 |
| 1962–63 | OL | 1 | 30 | 13 | 9 | 8 | 35 | 6th | – | R1 | – | – | Waldemar Gerhardt | 13 | 24,133 |
Notes
* ↑ Defeated by Borussia Dortmund in the Westfalen Championship, played between the winners of the two groups.

## Bundesliga era (1963–present)
### Key

BL = Bundesliga, 2BL = 2. Bundesliga
CL = Champions League, EL = Europa League, CWC = Cup Winners' Cup, UC = UEFA Cup, IC = Intertoto Cup
LP = Ligapokal, SC = Supercup
| Season | League | League | League | League | League | League | League | League | DFB- Pokal | Europe | Europe | Other | Other | Top scorer(s) (league) | Top scorer(s) (league) | Avg. attend. |
| Season | Div. | Tier | Pld | W | D | L | Pts | Pos | DFB- Pokal | Comp | Rd | Comp | Rd | Player(s) | Goals | Avg. attend. |
| 1963–64 | BL | 1 | 30 | 12 | 5 | 13 | 29 | 8th | QF | – | – | – | – | Klaus Matischak | 18 | 23,993 |
| 1964–65 | BL | 1 | 30 | 7 | 8 | 15 | 22 | 16th | SF | – | – | – | – | Waldemar Gerhardt | 11 | 26,467 |
| 1965–66 | BL | 1 | 34 | 10 | 7 | 17 | 27 | 14th | R2 | – | – | – | – | Manfred Kreuz | 9 | 29,588 |
| 1966–67 | BL | 1 | 34 | 12 | 6 | 16 | 30 | 15th | QF | – | – | – | – | Günter Herrmann | 8 | 25,118 |
| 1967–68 | BL | 1 | 34 | 11 | 8 | 15 | 30 | 15th | R2 | – | – | – | – | Hans-Jürgen Wittkamp | 12 | 22,765 |
| 1968–69 | BL | 1 | 34 | 14 | 7 | 13 | 35 | 7th | RU | – | – | – | – | Hans-Jürgen Wittkamp | 7 | 23,412 |
| 1969–70 | BL | 1 | 34 | 11 | 12 | 11 | 34 | 9th | R2 | CWC | SF | – | – | Manfred Pohlschmidt | 9 | 20,118 |
| 1970–71 | BL | 1 | 34 | 15 | 6 | 13 | 36 | 6th | SF | – | – | – | – | Klaus Fischer | 15 | 20,676 |
| 1971–72 | BL | 1 | 34 | 24 | 4 | 6 | 52 | 2nd | W | – | – | – | – | Klaus Fischer | 22 | 28,529 |
| 1972–73 | BL | 1 | 34 | 10 | 8 | 16 | 28 | 15th | R2 | CWC | QF | LP | SF | Nico Braun Erwin Kremers | 10 | 21,412 |
| 1973–74 | BL | 1 | 34 | 16 | 5 | 13 | 37 | 7th | R1 | – | – | – | – | Klaus Fischer | 21 | 42,441 |
| 1974–75 | BL | 1 | 34 | 16 | 7 | 11 | 39 | 7th | R3 | – | – | – | – | Klaus Fischer | 17 | 39,988 |
| 1975–76 | BL | 1 | 34 | 13 | 11 | 10 | 37 | 6th | R3 | – | – | – | – | Klaus Fischer | 29 | 34,212 |
| 1976–77 | BL | 1 | 34 | 17 | 9 | 8 | 43 | 2nd | R4 | UC | R3 | – | – | Klaus Fischer | 24 | 37,576 |
| 1977–78 | BL | 1 | 34 | 14 | 6 | 14 | 34 | 9th | QF | UC | R2 | – | – | Klaus Fischer | 20 | 35,694 |
| 1978–79 | BL | 1 | 34 | 9 | 10 | 15 | 28 | 15th | R3 | – | – | – | – | Klaus Fischer | 21 | 34,218 |
| 1979–80 | BL | 1 | 34 | 12 | 9 | 13 | 33 | 8th | SF | – | – | – | – | Klaus Fischer | 7 | 26,265 |
| 1980–81 | BL | 1 | 34 | 8 | 7 | 19 | 23 | 17th | R1 | – | – | – | – | Norbert Elgert | 10 | 28,506 |
| 1981–82 | 2BL | 2 | 38 | 19 | 13 | 6 | 51 | 1st | R1 | – | – | – | – | Norbert Janzon | 13 | 24,221 |
| 1982–83 | BL | 1 | 34 | 8 | 6 | 20 | 22 | 16th | QF | – | – | – | – | Hans-Joachim Abel | 9 | 27,882 |
| 1983–84 | 2BL | 2 | 38 | 23 | 9 | 6 | 55 | 2nd | SF | – | – | – | – | Klaus Täuber | 19 | 15,574 |
| 1984–85 | BL | 1 | 34 | 13 | 8 | 13 | 34 | 8th | R3 | – | – | – | – | Klaus Täuber | 18 | 28,265 |
| 1985–86 | BL | 1 | 34 | 11 | 8 | 15 | 30 | 10th | QF | – | – | – | – | Klaus Täuber | 16 | 19,008 |
| 1986–87 | BL | 1 | 34 | 12 | 8 | 14 | 32 | 13th | R1 | – | – | – | – | Jürgen Wegmann | 10 | 23,000 |
| 1987–88 | BL | 1 | 34 | 8 | 7 | 19 | 23 | 18th | R1 | – | – | – | – | Olaf Thon | 14 | 23,041 |
| 1988–89 | 2BL | 2 | 38 | 13 | 10 | 15 | 36 | 12th | R3 | – | – | – | – | Ingo Anderbrügge | 14 | 14,989 |
| 1989–90 | 2BL | 2 | 38 | 16 | 11 | 11 | 43 | 5th | R1 | – | – | – | – | Peter Sendscheid | 18 | 27,011 |
| 1990–91 | 2BL | 2 | 38 | 23 | 11 | 4 | 57 | 1st | R3 | – | – | – | – | Aleksandr Borodyuk | 13 | 34,637 |
| 1991–92 | BL | 1 | 38 | 11 | 12 | 15 | 34 | 11th | R2 | – | – | – | – | Ingo Anderbrügge Peter Sendscheid | 7 | 47,469 |
| 1992–93 | BL | 1 | 34 | 11 | 12 | 11 | 34 | 10th | R2 | – | – | – | – | Ingo Anderbrügge | 10 | 41,724 |
| 1993–94 | BL | 1 | 34 | 10 | 9 | 15 | 29 | 14th | R3 | – | – | – | – | Ingo Anderbrügge | 9 | 35,501 |
| 1994–95 | BL | 1 | 34 | 10 | 11 | 13 | 31 | 11th | QF | – | – | – | – | Hendrik Herzog | 8 | 39,883 |
| 1995–96 | BL | 1 | 34 | 14 | 14 | 6 | 56 | 3rd | R3 | – | – | – | – | Martin Max | 11 | 38,310 |
| 1996–97 | BL | 1 | 34 | 11 | 10 | 13 | 43 | 12th | R2 | UC | W | – | – | Martin Max | 12 | 39,122 |
| 1997–98 | BL | 1 | 34 | 13 | 13 | 8 | 52 | 5th | R2 | UC | QF | – | – | Marc Wilmots | 7 | 50,285 |
| 1998–99 | BL | 1 | 34 | 10 | 11 | 13 | 41 | 10th | R2 | UC | R1 | LP | R1 | Martin Max Youri Mulder | 6 | 43,555 |
| 1999–2000 | BL | 1 | 34 | 8 | 15 | 11 | 39 | 13th | R3 | – | – | – | – | Ebbe Sand | 14 | 40,543 |
| 2000–01 | BL | 1 | 34 | 18 | 8 | 8 | 62 | 2nd | W | – | – | – | – | Ebbe Sand | 22 | 46,599 |
| 2001–02 | BL | 1 | 34 | 18 | 7 | 9 | 61 | 5th | W | CL | GS | LP | F | Ebbe Sand | 11 | 60,440 |
| 2002–03 | BL | 1 | 34 | 12 | 13 | 9 | 49 | 7th | R3 | UC | R3 | LP | F | Victor Agali | 7 | 60,583 |
| 2003–04 | BL | 1 | 34 | 13 | 11 | 10 | 50 | 7th | R2 | IC | W | – | – | Ebbe Sand | 8 | 61,041 |
| 2003–04 | BL | 1 | 34 | 13 | 11 | 10 | 50 | 7th | R2 | UC | R2 | – | – | Ebbe Sand | 8 | 61,041 |
| 2004–05 | BL | 1 | 34 | 20 | 3 | 11 | 63 | 2nd | RU | IC | W | – | – | Aílton | 14 | 61,383 |
| 2004–05 | BL | 1 | 34 | 20 | 3 | 11 | 63 | 2nd | RU | UC | R32 | – | – | Aílton | 14 | 61,383 |
| 2005–06 | BL | 1 | 34 | 16 | 13 | 5 | 61 | 4th | R2 | CL | GS | LP | W | Kevin Kurányi Søren Larsen | 10 | 61,244 |
| 2005–06 | BL | 1 | 34 | 16 | 13 | 5 | 61 | 4th | R2 | UC | SF | LP | W | Kevin Kurányi Søren Larsen | 10 | 61,244 |
| 2006–07 | BL | 1 | 34 | 21 | 5 | 8 | 68 | 2nd | R2 | UC | R1 | LP | SF | Kevin Kurányi | 15 | 61,348 |
| 2007–08 | BL | 1 | 34 | 18 | 10 | 6 | 64 | 3rd | R3 | CL | QF | LP | F | Kevin Kurányi | 15 | 61,274 |
| 2008–09 | BL | 1 | 34 | 14 | 8 | 12 | 50 | 8th | QF | CL | QR3 | – | – | Kevin Kurányi | 13 | 61,387 |
| 2008–09 | BL | 1 | 34 | 14 | 8 | 12 | 50 | 8th | QF | UC | GS | – | – | Kevin Kurányi | 13 | 61,387 |
| 2009–10 | BL | 1 | 34 | 19 | 8 | 7 | 65 | 2nd | SF | – | – | – | – | Kevin Kurányi | 18 | 61,316 |
| 2010–11 | BL | 1 | 34 | 11 | 7 | 16 | 40 | 14th | W | CL | SF | SC | RU | Raúl | 13 | 61,320 |
| 2011–12 | BL | 1 | 34 | 20 | 4 | 10 | 64 | 3rd | R3 | EL | QF | SC | W | Klaas-Jan Huntelaar | 29 | 61,218 |
| 2012–13 | BL | 1 | 34 | 16 | 7 | 11 | 55 | 4th | R3 | CL | R16 | – | – | Julian Draxler Klaas-Jan Huntelaar | 10 | 61,171 |
| 2013–14 | BL | 1 | 34 | 19 | 7 | 8 | 64 | 3rd | R3 | CL | R16 | – | – | Klaas-Jan Huntelaar | 12 | 61,569 |
| 2014–15 | BL | 1 | 34 | 13 | 9 | 12 | 48 | 6th | R1 | CL | R16 | – | – | Eric Maxim Choupo-Moting Klaas-Jan Huntelaar | 9 | 61,578 |
| 2015–16 | BL | 1 | 34 | 15 | 7 | 12 | 52 | 5th | R2 | EL | R32 | – | – | Klaas-Jan Huntelaar | 12 | 61,386 |
| 2016–17 | BL | 1 | 34 | 11 | 10 | 13 | 43 | 10th | QF | EL | QF | – | – | Guido Burgstaller | 9 | 60,703 |
| 2017–18 | BL | 1 | 34 | 18 | 9 | 7 | 63 | 2nd | SF | – | – | – | – | Guido Burgstaller | 11 | 61,297 |
| 2018–19 | BL | 1 | 34 | 8 | 9 | 17 | 33 | 14th | QF | CL | R16 | – | – | Daniel Caligiuri | 7 | 60,895 |
| 2019–20 | BL | 1 | 34 | 9 | 12 | 13 | 39 | 12th | QF | – | – | – | – | Suat Serdar | 7 | 60,868 |
| 2020–21 | BL | 1 | 34 | 3 | 7 | 24 | 16 | 18th | R3 | – | – | – | – | Matthew Hoppe | 6 | 0 |
| 2021–22 | 2BL | 2 | 34 | 20 | 5 | 9 | 65 | 1st | R2 | – | – | – | – | Simon Terodde | 30 | 33,469 |
| 2022–23 | BL | 1 | 34 | 7 | 10 | 17 | 31 | 17th | R2 | – | – | – | – | Marius Bülter | 11 | 61,154 |
| 2023–24 | 2BL | 2 | 34 | 12 | 7 | 15 | 43 | 10th | R2 | – | – | – | – | Kenan Karaman | 13 | 61,502 |
Notes
* ↑ Defeated by Bayer Uerdingen in the relegation play-off.
* ↑ Only counting matches where spectators were allowed.
* ↑ All home matches were played behind closed doors due to the COVID-19 pandemic.
* ↑ Only counting matches where spectators were allowed. Some matches had attendance limitation.