A beautiful, self-updating web application that helps parents plan their Efteling visit with:
- Height requirements for all 34 attractions
- Live wait times (updated every 5 minutes)
- Access conditions (wheelchair, pregnancy, etc.)
- Accurate interpretation of Efteling's access rules
- Correctly handles "supervision required" vs "minimum height"
- Categories: Independent, With Companion, Not Available
- Real-time data from Queue-Times.com API
- Updates every 5 minutes during park hours (9:00-23:00)
- Shows: Open/Closed status, wait time in minutes
- Color-coded: 🟢 Normal, 🟡 Busy (20+ min), 🔴 Very Busy (45+ min)
| Icon | Meaning |
|---|---|
| ♿ | Wheelchair accessible |
| 🔄 | Wheelchair with transfer |
| 🚫 | Not wheelchair accessible |
| 🤰 | Not for pregnant women |
| 🩹 | Not suitable with injuries |
| 📵 | Cameras not allowed |
| 🦮 | Guide dogs allowed |
| 👤 | Single rider available |
| 🌙 | Partly in the dark |
| 💦 | You may get wet |
All 6 critical security headers included (CSP, X-Frame-Options, etc.)
cd efteling-height-checker
docker-compose up -dAccess at: http://localhost:5000
├── scraper.py # Height requirements from Efteling.com
├── wait_times.py # Live wait times from Queue-Times.com
├── app.py # Flask web application
├── Dockerfile # Container with dual cron jobs
├── docker-compose.yml # Easy deployment
├── entrypoint.sh # Startup script
└── requirements.txt # Python dependencies
| Data Type | Frequency | Source |
|---|---|---|
| Height Requirements | Every 6 hours | Efteling.com |
| Wait Times | Every 5 minutes* | Queue-Times.com |
*Only during park hours (9:00-23:00 Amsterdam time)
| Endpoint | Description |
|---|---|
/ |
Web interface |
/api/data |
Full JSON data |
/api/height/<cm> |
Categories for height |
/api/scrape |
Refresh height data |
/api/wait_times |
Refresh wait times |
{
"name": "Baron 1898",
"min_height_cm": 132,
"is_open": true,
"wait_time": 35,
"access": {
"wheelchair": "transfer",
"pregnant": true
}
}Each attraction card shows:
| Display | Meaning |
|---|---|
| 🔴 Closed | Attraction is not operating |
| 🟢 Open | Operating, no wait time data |
| ⏱️ 15 min | Current wait time |
| (Yellow bg) | Wait time 20-44 minutes |
| (Red bg) | Wait time 45+ minutes |
| Attraction | Min Height | Access |
|---|---|---|
| Baron 1898 | 132cm | 🔄🤰🩹📵 |
| Max & Moritz | 130cm (100cm with companion) | 🔄🤰🩹 |
| Python | 120cm | 🔄🤰🩹 |
| Joris en de Draak | 120cm (110cm with companion) | 🔄🤰🩹👤 |
| Danse Macabre | 120cm | 🔄🤰🩹🌙 |
| Attraction | Need Companion Below |
|---|---|
| Gondoletta, Stoomtrein | 120cm |
| De Oude Tufferbaan | 110cm |
| Symbolica, Droomvlucht, Fata Morgana | 100cm |
| Stoomcarrousel | 100cm (supervision only) |
Wait times data provided by:
As required by their free API terms.
| Variable | Default | Description |
|---|---|---|
PORT |
5000 | Web server port |
TZ |
Europe/Amsterdam | Timezone for cron |
# View logs
docker-compose logs -f
# Refresh height data
curl http://localhost:5000/api/scrape
# Refresh wait times
curl http://localhost:5000/api/wait_times
# Rebuild
docker-compose down && docker-compose build --no-cache && docker-compose up -dUnofficial tool for planning. Always verify at the park.
Made with ❤️ for Efteling families
🎢🏰⏱️