Bot to automatically find and book an appointment for renewal/creation of a Swedish passport or national identity card.
Bott som automatiskt söker och bokar första lediga tid för att förnya pass och/eller nationellt id kort.
The bot searches for available appointments until one is found, it then tries to book the appointment. The bot will run until an appointment is successfully booked.
The bot can be configured to search for appointments in a specific region & in one or more cities at a time.
It can also be configured to run several concurrent booking sessions in order to increase searching speed & search multiple locations at the same time.
Download config.json
& passport-appointment-bot
for your OS from the latest release, place them in the same folder.
- Edit the configuration file downloaded (
config.json
) with any text editor, see Configuration for information on the options - Run the executable downloaded earlier
passport-appointment-bot
- The bot will prompt for BankID identification (The booking system now requires BankID idetification to start a booking session)
- The bot will search until an appointment is found
- A booking confirmation will be sent to the configured email and/or phone number specified in the config, it will also be displayed in the application
Requires Nodejs (Tested on v17.7.1)
- Clone the project, install dependencies with
npm install
- Edit configuration values in
config.json
, see Configuration for information on the options - Run the bot with
npm start
- The bot will prompt for BankID identification (The booking system now requires BankID idetification to start a booking session)
- The bot will search until an appointment is found
- A booking confirmation will be sent to the configured email and/or phone number specified in the config, it will also be displayed in the console
Option | Required | Description |
---|---|---|
region | ✅ | Desired region, see Supported Regions & Locations |
locations | ✅ | One or more cities/locations, see Supported Regions & Locations |
max_date | ✅ | Latest date to search for appointment (will search all days in the week of the specified date) |
min_date | ❌ | Earliest date to search for appointment (will search all days in the week of the specified date) |
booking_number | ❌ | An existing booking number to use when searching for available times. |
✅ | Email (confirmation will be sent to this address) | |
phone | ✅ | Phone number (confirmation will be sent to this number) |
passport | ✅ | Set to true if the booking appointment is for passport, else false |
id | ✅ | Set to true if the booking appointment is for national identity card, else false |
confirmation | ✅ | Method for receiving booking confirmation email and/or sms |
When booking for more than the person identifying with BankID, use these options to provide personal details for the other people (Do not include personal details for the person idetifying with BankID).
Option | Required | Description |
---|---|---|
extra_personnummer | ❌ | Additional Personnummer / Social security number(s), when booking for more than one person e.g. ["199401018453", "199601016406"] |
extra_firstnames | ❌ | Additional firstname(s), when booking for more than one person e.g. ["John", "Jane"] |
extra_lastnames | ❌ | Additional lastname(s), when booking for more than one person e.g. ["Doe", "Doe"] |
Option | Required | Default | Description |
---|---|---|---|
sessions | ❌ | 1 |
Number of concurrent booking sessions to run, higher number equals faster checking of available times and opens up for checking multiple locations in parallel, (will still just book one appointment in the end) (max 6) |
throttle | ❌ | 0 |
The time to wait in seconds between searches |
useProxies | ❌ | false |
Set to true to use proxies for booking sessions, (a proxy list is required, see Proxy information for additional information. |
proxyTimeout | ❌ | 30 |
When using setProxies use this option to set the timeout in seconds before a proxy request should timeout and retry. |
proxyRetries | ❌ | 3 |
When using setProxies use this option to set the number of request retries with each proxy before switching proxy.. |
- Only one appointment can be booked per email and phone number.
- Both passport & national identity card can be renewed in one appointment, both options can therefore be set to true.
- Searching for appointment for more than one person at a time requires a longer appointment time and are thus harder to find.
- A maximum of 8 people can be booked in one appointment
- Pass-fur-alle - Python & Selenium solution by @jonkpirateboy
- passport_booker_se - Python based solution by @elias123tre
Supported regions & locations can also be found in the src/locations.js
file.
- Karlshamn
- Karlskrona
- Avesta
- Borlänge
- Ludvika
- Mora
- Visby
- Bollnäs
- Gävle
- Hudiksvall
- Falkenberg
- Halmstad
- Kungsbacka
- Varberg
- Funäsdalen
- Strömsund
- Sveg
- Åre
- Östersund
- Eksjö
- Jönköping
- Värnamo
- Kalmar
- Oskarshamn
- Västervik
- Ljungby
- Växjö
- Älmhult
- Arvidsjaur
- Boden
- Gällivare
- Haparanda
- Kalix
- Kiruna
- Luleå
- Piteå
- Eslöv
- Helsingborg
- Hässleholm
- Klippan
- Kristianstad
- Landskrona
- Lund
- Malmö
- Trelleborg
- Ystad
- Ängelholm
- Flemingsberg
- Globen
- Haninge
- Järva
- Nacka
- Norrtälje
- Sollentuna
- Solna
- Sthlm City
- Södertälje
- Södra Roslagen
- Eskilstuna
- Katrineholm
- Nyköping
- Skavsta
- Strängnäs
- Enköping
- Tierp
- Uppsala
- Östhammar
- Arvika
- Karlstad
- Kristinehamn
- Torsby
- Lycksele
- Skellefteå
- Storuman
- Umeå
- Vilhelmina
- Härnösand
- Kramfors
- Sollefteå
- Sundsvall
- Ånge
- Örnsköldsvik
- Fagersta
- Köping
- Sala
- Västerås
- Alingsås
- Borås
- Falköping
- Göteborg
- Lidköping
- Mariestad
- Mark/Kinna
- Mölndal
- Skövde
- Stenungsund
- Strömstad
- Trollhättan
- Uddevalla
- Ulricehamn
- Åmål
- Hallsberg
- Karlskoga
- Lindesberg
- Vivalla
- Örebro
- Linköping
- Motala
- Norrköping
When setting the useProxies
option to true
you are expected to provide a list of proxies to use, the application expects a file named proxies.txt
to be present in the same directory as the application. This file should include one proxy per line, the proxy should be in the format [IP]:[PORT]
.
Example
0.0.0.0:6969
1.1.1.1:9999
2.2.2.2:420
This feature does currently only support HTTP/HTTPS proxies.
The application will cycle through the proxies in the list and will retry the request if the proxy is not responding, if a request times out multiple times with the same proxy, the application will switch to the next proxy in the list.
The thresholds for this behaviour can be configured through the proxyTimeout
and proxyRetries
configuration options.
For the best results use a list of high quality proxies.