German Corona Impftermin Helper
Find an Impftermin or Impfcode on impfterminservice.de.
Automatically checks the website and notifies you about open appointments and available Impf-Codes.
The app opens a Chrome browser and automatically navigates through the page. It beeps if it finds an open slot. You enter personal information and book the appointment manually.
If you provide all necessary personal details in the config file in advance, the program automatically books the first available appointment without any further user interaction.
Installation
Head over to Releases and download the latest version.
Currently the following platforms are supported:
- Windows (x64)
- Linux (x64)
- macOS (x64)
Windows
Download impftermin-win.exe
and double-click the file.
Linux
Download impftermin-linux
and open a terminal in the same folder.
Make the file executable using chmod +x impftermin-linux
and run it using ./impftermin-linux
.
macOS
Download impftermin-macos
and open a terminal in the same folder.
Make the file executable using chmod +x impftermin-macos
and run it using ./impftermin-macos
.
A command-line window will show up and you can fill in the Impftermin locations there:
Get the Impftermin locations directly on impfterminservice.de as section Getting an Impfzentrum url describes.
The application will use any config.json
it finds in the current or parent folder.
To change your configuration with the interactive CLI delete the config.json
.
If you have questions, something doesn’t work or you want a new feature then please create a new issue.
Getting started with development
You need to install NodeJS in order to run this program: https://nodejs.org
Then install yarn with
npm install --global yarn
Install dependencies
yarn
Run with
yarn start
Answer the prompts to create a config.json
or manually create your own (as described in Configuration). The application makes a sound when started. Ensure, that you hear the sound and adjust your sound settings if needed. Impftermin will play that sound if it finds an available slot.
Project setup
I focused on concise and easy to read code. Comments are in place to improve understanding even though one might argue that comments describing code are not good practice.
You might need to get your head around async
and await
.
Configuration
Impftermin loads the config.json
from its starting folder. It walks over the defined queue and checks for open appointments for each entry. If you leave the code empty it checks if there are open slots to get a new Impfcode. If you specify a code it will enter the code on the specified location.
Impftermin will walk through the queue and interrupts the app for 25 minutes if it finds an open appointment or an open slot to retrieve a code.
You need to enter your personal data by your own then!
If you provide all necessary personal data, the program will book the earliest available appointment within the specified date range automatically.
The intervalInMinutes property defines the timeout between two website checks.
{
"intervalInMinutes": 15,
"queue": [
{
"url": "https://002-iz.impfterminservice.de/impftermine/service?plz=XXXXX",
"code": "XXXX-XXXX-XXXX",
"name": "<Optional location name>",
"title": "<Optional title. This is case sensitive! choose exactly one of the following: (Herr|Frau|Divers|Kind) >",
"firstname": "<Optional first name>",
"lastname": "<Optional last name>",
"zip": "<Optional zip code>",
"city": "<Optional city>",
"street": "<Optional street>",
"streetnumber": "<Optional streetnumber>",
"mobile": "<Optional phone number>",
"email": "<Optional email>",
"earliestdate": "<Optional earliest desired date with format dd.mm. (use 01.01. to obtain earliest available appointment)>",
"latestdate": "<Optional latest desired date with format dd.mm. (use 31.12. to obtain whatever appointment is available)>"
}
]
}
Getting an Impfzentrum url
A queue entry defines a url
and code
. Get the url by choosing your Impf-Zentrum from https://www.impfterminservice.de/impftermine, press “zum Impfzentrum”…
… and copy that url.
Process
The following chart describes how Impftermin will check the site:
Logging
We use debug to print logs.
The application logs with the namespace impftermin
.
So to include all logs set the DEBUG environment variable to impftermin:*
.
Logs are enabled by default.
Environment variables
You may configure a .env
.
Using Telegram is optional. Check their docs if you want to configure a bot to get notifications about open appointments.
TELEGRAM_TOKEN=<personal-Telegram-Bot-Token>
TELEGRAM_CHAT_ID=CHAT_ID_1 [, CHAT_ID_2] ...
If you are behind a reverse proxy (e.g. company proxy) you need to set the environments HTTPS_PROXY variable in order to make the Telegram bot work.
HTTPS_PROXY=http[s]://[host]:[port]
Dependencies
For development
- env-cmd to load environment variables
- release-it for automated GitHub releases
- pkg to package an application
Tested on
- Windows 10, Node 14
- Debian 10, Node 14
- Windows 7, Node 12
Attribution and legal
Due to this project being focused on the German website for vaccination appointments some documentation is written in German. Docs cover technically concerns mostly in English and sometimes Denglisch.