Automatically reserve your preferred desk via the SeatSurfing API, either for a single day or the whole workweek.
- Log in to your organization’s SeatSurfing instance.
- Check if a desk is available for a specific time.
- Reserve the desk automatically.
- Optionally reserve for the full workweek (Mon–Fri).
- Optionally override the date to book a specific day.
- All credentials and sensitive info stored in a local config file.
- Python 3.7+
requestsmodule (install viapip install requests)
- Clone this repo or copy the script locally.
- Create a config file at
~/.config/seatsurfing/config.json.
{
"BASE_URL": "http://your.seatsurfing.app",
"EMAIL": "your.email@domain.com",
"PASSWORD": "your_password",
"ORG_ID": "your-org-id-here",
"LOCATION_ID": "your-location-id-here"
}🔒 Keep this file secret! Do not commit it to Git.
The config is looked up in this order (first match wins):
--config <path>$XDG_CONFIG_HOME/seatsurfing/config.json(ifXDG_CONFIG_HOMEis set).~/.config/seatsurfing/config.json(the default)..seatsurfing_config.jsonnext to the script (legacy fallback).
python seatsurf.py "Desk 7" "16:00-18:00"This will:
- Check availability for "Desk 7" today between 16:00 and 18:00 (local time).
- Book it if available.
python seatsurf.py "Desk 7" "16:00-18:00" --day 18.07This will:
- Attempt to reserve "Desk 7" for July 18th between 16:00 and 18:00.
- Accepts:
DD.MMorD.M(e.g.,9.7,18.07)DD.MM.YYYYorD.M.YYYY(e.g.,9.7.2025,01.01.2026)
If the year is not specified:
- The script assumes the current year.
- But if that date has already passed this year, it automatically rolls over to the next year.
python seatsurf.py "Desk 7" "16:00-18:00" --weekThis will:
- Attempt to book "Desk 7" for each weekday (Mon–Fri) starting today between 16:00 and 18:00.
- Continue even if some days are unavailable.
python seatsurf.py "Desk 7" "16:00-18:00" --week --day 18.07This will:
- Attempt to book "Desk 7" for each weekday starting from July 18th.
- Handy for planning future weeks or mid-week starts.
- Desk names must match exactly as listed in the SeatSurfing UI (e.g.
"Desk 7"). - Time format must be
HH:MM-HH:MMin 24-hour format. - All times are assumed to be in your local time, but will be converted to UTC with
"Z"suffix. - The
--dayflag does not support full dates like18.07.2025(yet).
- List all available desks (
--list) - Auto-pick any available desk
- Configurable subject line
- Timezone handling
- Support for full dates with year
MIT License. Use responsibly and don’t overload shared booking systems.