Intro
Some years ago, I moved to Potsdam, a crazy cool and nice city. It has well-maintained parks, friendly people, and really nice schools for kids.
What I also noticed was that it was very simple to get an appointment to extend your passport or update your residence information (Bürgerservice).
This was in 2018.
Now, in 2025, Potsdam is still a really nice city, but the quality of public services has deteriorated to Berlin levels.
Apparently, Potsdam introduced an appointment-based system. However, there are no appointments available for the next year. Every single day is fully booked.
If I need to extend my passport, I can’t do this. This issue affects not only passports but anything that requires city approval: new car registration, passport renewal, residence updates. The list is very long.
It’s very frustrating and not a good service.
Real Solution
The root issue is that appointments are free, so people simply book them and forget about them. It’s also convenient for people working in the city office—fewer appointments mean less work. People don’t even have to enter their email, phone number, or name. So, you can register appointments as Donald Duck. Crazy.
My solution: Add a small fee to the appointment. If you don’t show up, the fee gets donated to a charity. Otherwise, you get the fee back when you show up.
I bet this would simply solve the issue.
Unfortunately, that does not work, and I needed a solution now.
Hacked Solution
With the appointment system being that dysfunctional, I had to invent a small hack. As background: I needed to get 3 passports (1 for me and 2 for my kids). This means 3 appointments at the same time, which is even more difficult than a “simple” appointment.
I noticed that sometimes appointments become available on the scheduling page for a short period of time. But watching the scheduling pages for hours just to get an appointment is not really efficient.
My solution is not fully automated but hybrid. I used Selenium IDE (a browser plugin designed for software testing) and an automation script. This automation logs into the appointment page of the Potsdam Stadt and cycles through the calendar. When an appointment becomes available, it beeps.
Using that approach, I was able to work normally with my laptop and let the Selenium IDE plugin run in the background. Once I heard the beep, I could select the day and book the appointment.
Very simple and straightforward.
I got an appointment for next Tuesday, and the officer who had to create the documents was also very friendly. Nice!
The full source code is available on Github. Feel free to share or modify it. It’s not fully automated, but it still gets the job done with minimal effort.
I personally hope that the booking system gets fixed by the city so that people who don’t know how to automate a browser can also get an appointment for themselves and their families. It’s a bit sad.
More
- Full source code: https://github.com/raphaelbauer/potsdam_buergeramt_termin_crawler