Skip to main content

Finds appointments at the Berlin Bürgeramt, broadcasts them via websockets

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

berlin_appointment_finder-2.0.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

berlin_appointment_finder-2.0.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file berlin_appointment_finder-2.0.0.tar.gz.

File metadata

File hashes

Hashes for berlin_appointment_finder-2.0.0.tar.gz
Algorithm Hash digest
SHA256 e5d77cc86bf9073e4a43970aec8069b46af69a6def4cfd416e6e8b6d0c8e8046
MD5 cb6dbc8a8afd01ad08375a68623ae1c9
BLAKE2b-256 cf276ac2a0984ac2f8e3e00861781e8fd13357f2e896e0ddbe2d54c1846eda3d

See more details on using hashes here.

File details

Details for the file berlin_appointment_finder-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for berlin_appointment_finder-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d555a82391e183146dddcd5bbdb00c1828a1487781ac2ed10c1d46ec00962fd2
MD5 d3a590dff32a5c9391e53fd67be9c2ea
BLAKE2b-256 84f6ad5e37d74fb47b18b290a5a19e92463d7200c0754548a98627c9b3ece82c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page