eat-api — Munich Student Canteen Menus

Static JSON API for Munich student canteen menus, prices, dish labels and opening hours, regenerated on a schedule and served as flat files from GitHub Pages. Two OpenAPI files below are one contract split by tag; both were re-titled on 2026-08-19 after refine-openapis had labelled them "eat-api calendar API" and conflated them with NavigaTUM.

Operations 4

GET /{canteen_id}/{year}/{week}.json Get a menu for the specified canteen, year and week
GET /{canteen_id}/combined/combined.json To get all menus for one specific canteen
GET /all.json To get all menus for all canteens
GET /all_ref.json To get all menus that are not older than one day for all canteens

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eat-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tum-menu-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: eat-api Canteen Menu API
  version: '2.1'
  description: Simple static API for some (student) food places in Munich.
servers:
- url: https://tum-dev.github.io/eat-api/{language}
  variables:
    language:
      description: For localization the base path may have to be extended by the language.
      default: ''
      enum:
      - ''
      - en/
tags:
- name: menu
  description: Get information about dish plans
paths:
  /{canteen_id}/{year}/{week}.json:
    get:
      summary: Get a menu for the specified canteen, year and week
      parameters:
      - name: canteen_id
        in: path
        description: ID of the canteen
        required: true
        schema:
          $ref: '#/components/schemas/Canteen/properties/canteen_id'
      - name: year
        in: path
        description: Year of the menu to get
        required: true
        schema:
          type: integer
          example: 2022
      - name: week
        in: path
        description: Week of the menu to get with two digits
        required: true
        schema:
          type: string
          pattern: ^\d{2}$
          example: '02'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Week'
        '404':
          description: no menu found for specified options
      tags:
      - menu
  /{canteen_id}/combined/combined.json:
    get:
      summary: To get all menus for one specific canteen
      parameters:
      - name: canteen_id
        in: path
        description: ID of the canteen
        required: true
        schema:
          $ref: '#/components/schemas/Canteen/properties/canteen_id'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CanteenMenu'
        '404':
          description: no menu found for the given canteen
      tags:
      - menu
  /all.json:
    get:
      summary: To get all menus for all canteens
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  canteens:
                    type: array
                    items:
                      $ref: '#/components/schemas/CanteenMenu'
      tags:
      - menu
  /all_ref.json:
    get:
      deprecated: true
      summary: To get all menus that are not older than one day for all canteens
      description: Here dish_type is also normalized. All tailing digits and spaces get removed from dish_type. For example Tagesgericht 1 -> Tagesgericht and Aktionsessen 6 -> Aktionsessen. Also ignores all menus older than one day. This results in this file being usually half the size of the all.json file. This is currently deprecated, and only supported in the german language.
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    canteen_id:
                      $ref: '#/components/schemas/Canteen/properties/canteen_id'
                    dishes:
                      type: array
                      items:
                        allOf:
                        - $ref: '#/components/schemas/Dish'
                        - properties:
                            date:
                              type: string
                              format: date
      tags:
      - menu
components:
  schemas:
    Canteen:
      properties:
        canteen_id:
          type: string
          description: Identifier for the canteen, as it has to be used for accessing data.
          example: mensa-garching
    Week:
      type: object
      description: All dishes for all days during one week
      properties:
        number:
          type: integer
          description: Week number
          example: 2
        year:
          type: integer
          example: 2022
        days:
          type: array
          items:
            $ref: '#/components/schemas/Day'
    Label:
      properties:
        enum_name:
          type: string
          example: VEGETARIAN
    Day:
      type: object
      description: All dishes for one day
      properties:
        date:
          type: string
          format: date
        dishes:
          type: array
          items:
            $ref: '#/components/schemas/Dish'
    Price:
      type: object
      properties:
        base_price:
          type: number
          description: Base price of a dish
          example: 0
        price_per_unit:
          type: number
          description: Price per unit as given
          example: 0.75
        unit:
          type: string
          description: The unit used for calculating the price
          example: 100g
    CanteenMenu:
      type: object
      description: All dishes for a specific canteen
      properties:
        version:
          type: string
          example: '2.1'
        canteen_id:
          $ref: '#/components/schemas/Canteen/properties/canteen_id'
        weeks:
          type: array
          items:
            $ref: '#/components/schemas/Week'
    Dish:
      type: object
      description: Describes one dish
      properties:
        name:
          type: string
          description: Title of the dish
          example: Pasta all'arrabiata
        prices:
          $ref: '#/components/schemas/Prices'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label/properties/enum_name'
        dish_type:
          type: string
          example: Pasta
    Prices:
      type: object
      properties:
        students:
          allOf:
          - $ref: '#/components/schemas/Price'
          - description: Price that students pay
        staff:
          allOf:
          - $ref: '#/components/schemas/Price'
          - description: Price that staff pays
        guests:
          allOf:
          - $ref: '#/components/schemas/Price'
          - description: Price that guests pay
x-operator: tenant
x-operator-note: Static JSON API published by Open Source @ TUM e.V. (TUM-Dev) on GitHub Pages at tum-dev.github.io, not on a TUM-owned domain. Menu data originates with Studierendenwerk Muenchen Oberbayern, not with TUM. Institution-affiliated, not institution-operated.
x-provenance:
  generated: '2026-08-19'
  method: derived
  source: openapi/_original/tum-eat-api.yaml (fetched from https://tum-dev.github.io/eat-api/)
  note: 'Repaired 2026-08-19: refine-openapis had titled this eat-api tag-split "eat-api calendar <tag> API", conflating it with NavigaTUM. Title corrected; servers block confirmed correct against the pristine eat-api source.'