Skip to content
This repository has been archived by the owner on Nov 28, 2021. It is now read-only.
/ impftermin Public archive

Open source Corona Impftermin scraper for impfterminservice.de

License

Notifications You must be signed in to change notification settings

marcoklein/impftermin

Repository files navigation

Download latest Version

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.

Licenses

  • Sound from OpenGameArt.org
  • Sound from OpenGameArt.org