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 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
      operationId: getByCanteenIdByYear{week}Json
      x-operation-id-source: derived
  /{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
      operationId: getByCanteenIdCombinedCombinedJson
      x-operation-id-source: derived
  /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
      operationId: getAllJson
      x-operation-id-source: derived
  /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
      operationId: getAllRefJson
      x-operation-id-source: derived
components:
  schemas:
    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
    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'
    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
    Canteen:
      type: object
      description: Information about a canteen
      properties:
        enum_name:
          type: string
          description: Internal identifier for a canteen
          example: MENSA_GARCHING
        name:
          type: string
          description: Readable name for a canteen
          example: Mensa Garching
        location:
          $ref: '#/components/schemas/Location'
        canteen_id:
          type: string
          description: Identifier for the canteen, as it has to be used for accessing data.
          example: mensa-garching
        queue_status:
          type: string
          description: URL to another API, where data about the queue length of the canteen can be accessed. Is null, when not available.
          example: https://mensa.liste.party/api/
        open_hours:
          $ref: '#/components/schemas/OpenHoursWeek'
    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'
    Day:
      type: object
      description: All dishes for one day
      properties:
        date:
          type: string
          format: date
        dishes:
          type: array
          items:
            $ref: '#/components/schemas/Dish'
    Label:
      type: object
      description: Allergene and ingredient information
      properties:
        enum_name:
          type: string
          example: VEGETARIAN
        text:
          type: object
          description: Key-value object containing readable labels. The language is given in the key, and is referred to to the name from the language.
          additionalProperties:
            type: string
          example:
            DE: Vegetarisch
            EN: vegetarian
        abbreviation:
          type: string
          description: Emoji symbol or short form of a label
          example: 🌽
    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