Skip to main content

Bürgeramt appointment finder

This server looks for Bürgeramt appointment every few seconds. You can make it look for any kind of appointment.

This is the code behind All About Berlin's Bürgeramt appointment finder.

If this tool helped you, make a donation. Building things for Berliners is my full time job.

What this tool does

This tool looks for appointments on service.berlin.de every 3 minutes. When it finds an appointment, it makes a sound. It can be used as a command line tool, or as the backend for a web-based tool.

This tool can't book the appointment for you. It can't look for Ausländerbehörde appointments. These features will not be implemented.

Setup

1. Install the script

Run this command in your terminal:

# It might be called 'pip3' on your computer
pip install berlin-appointment-finder

You need Python 3 on your computer. If you have macOS or Linux, you already have it. If you have Windows, you're on your own.

If you get a error: legacy-install-feature, try some of the solutions listed here. Do not open an issue; the problem is not related to this project.

2. Find the appointment type you need

Pick a service from the list of services on Berlin.de, and copy the URL. For example, https://service.berlin.de/dienstleistung/120686/ for the Anmeldung.

3. Run the script

Run this command and follow the instructions on your screen:

appointments

The script will check Berlin.de every 3 minutes. When it finds appointments, it lists them. Just keep an eye on the terminal. It will also emit a sound.

Updating the script

If you have an older version of the script, update it with this command:

pip install --upgrade berlin-appointment-finder

Instructions for nerds

This script can be configured with command line arguments or environment variables.

Type appointments --help to see available command line arguments.

These are the available environment variables:

BOOKING_TOOL_EMAIL=your@email.com
BOOKING_TOOL_ID=johnsmith-dev
BOOKING_TOOL_URL=https://service.berlin.de/dienstleistung/120686/
BOOKING_TOOL_PORT=80

The script broadcasts broadcasts the appointments it finds with websockets. By default, it broadcasts them on port 80.

A Dockerfile is supplied in this repo. It's the same one I use on All About Berlin.

The polling rate is limited to 180 seconds (3 minutes), as required by the Berlin.de IKT-ZMS team (ikt-zms@seninnds.berlin.de).

Local development

To work on this script, install it with pip install -e /path/to/this/repo. When you run appointments, it will run your local version with any changes you have made to it. You only need to run this command once.

FAQ

Can you make it work with Ausländerbehörde appointments?

No. It's not possible due to rate-limiting by Berlin.de. You probably don't need an Ausländerbehörde appointment anyway.

I get an HTTP 403 or 418 response

This means that Berlin.de is blocking you as a bot. There is nothing I can do to fix this problem. Please do not open an issue about this.

Metadata

Release files for berlin-appointment-finder 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for berlin-appointment-finder 2.0.1
File Size Uploaded
berlin_appointment_finder-2.0.1.tar.gz 7.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for berlin-appointment-finder 2.0.1
File Interpreter ABI Platform
berlin_appointment_finder-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 14.6 kB

Release files / berlin_appointment_finder-2.0.1.tar.gz

Download URL berlin_appointment_finder-2.0.1.tar.gz
Size 7.1 kB
Tags Source
SHA-256 checksum
How to use checksums
27e3830b6955a70089169f3d8441939fb0e6c461e1d5b192f1d7d5f185086516
BLAKE2b-256 checksum
How to use checksums
cfd4e4fce7079d352d6a108a401cdf5131b775e5910165dee9d9c97d7ad15a2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / berlin_appointment_finder-2.0.1-py3-none-any.whl

Download URL berlin_appointment_finder-2.0.1-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03f8e3542b4417f695c99be3a6f26779c078bab0cf31e83ff9adba1fff6cf6b7
BLAKE2b-256 checksum
How to use checksums
c5594a082f1e4f3c4e207f09a86b456719bdfdb2adce1f216eb81a64ba8756e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

2.0.2

2 release files

This release

2.0.1 This release

2 release files

2.0.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page