PyUntis is basically an API wrangler that makes the Untis API's output more readable.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


PyUntis is basically an API wrangler that makes the Untis API's output more readable.

I use it in conjunction with PyUntis-Site to create self-hosted displays of sorts for WebUntis timetables.


  • Supports multiple schools at once, each with their own output folder
  • If your school can be found via the Untis app's search feature, you can use its name and PyUntis will fill in its server info. This is useful if your school's Untis server changes frequently.
  • Built for use with PyUntis-Site, but if you're feeling adventurous, you can build your own site instead.


  • Python 3.6
  • requests
  • PyICU (optional, provides better, locale-independent sorting methods)


Check out config_example.json. Replace the example values in there with those of your school, set the planDir variable to the desired output folder, and rename the file to config.json.

Once everything's set, just do python3.6 and watch a bunch of JSON files appear in the planDir directory.

If you're using some form of Linux and want things to be slightly easier, you can execute instead of The script will set the current directory for you, making sure that everything goes where it should go.

If you, like me, host PyUntis-Site as a timetable display and want all data to be refreshed automatically, make sure to put it into your crontab like this:

*/5 * * * * /home/untis/PyUntis/ > /var/www/ 2>&1

The script takes about 38 seconds to fetch all data for two schools, so running it every five minutes should be sufficient.

Feedback and support

Just tweet at me @SamusAranX or drop me a mail. Feel free to create an issue if you encounter any crashes, bugs, etc.: PyUntis Issues