Headless VFS Global Schengen Visa Status Tracker + EU EES calculator
Project description
vfs-tracker ๐
Headless VFS Global Schengen Visa Status Tracker + EU EES calculator
Fully automated โ Selenium + ddddocr + number-slider CAPTCHA solver
What is this?
Automatically query your Schengen visa status through VFS Global and check your allowed stay duration through the EU EES system โ all headless, no browser window, no manual CAPTCHA input.
| Tool | What it does | Automated |
|---|---|---|
| VFS Tracker | Query visa application status via VFS Global | โ |
| EES Calculator | Check allowed stay duration via EU EES | โ |
Supported Environments
| Platform | Status | Notes |
|---|---|---|
| macOS (Intel / Apple Silicon) | โ | Chrome required |
| Linux (Ubuntu / Debian / CentOS) | โ | Chrome or Chromium required |
| Windows 10 / 11 | โ | Chrome required |
| WSL2 | โ | Needs Chrome installed in WSL |
Mobile: Not directly supported (Python runtime required), but works through any AI coding agent that has Python access โ see below.
Install in AI Coding Agents
Claude Code (macOS / Linux / Windows)
# 1. Install the package
pip install vfs-tracker
# 2. Link the skill
mkdir -p ~/.claude/skills/vfs-tracker
# Create SKILL.md from the repo's SKILL.md in that directory
Codex (OpenAI)
pip install vfs-tracker
# Add to your Codex workspace skills
Cursor / Windsurf / Other VS Code-based agents
pip install vfs-tracker
# The CLI entry point will be available:
vfs-tracker isl -r "REF_NUMBER" -l "LAST_NAME"
GitHub Copilot Chat
pip install vfs-tracker
# Ask Copilot: "Query my Iceland visa status using vfs-tracker"
# It will run: python3 -m vfs_tracker isl -r "..." -l "..."
Terminal / CLI (anywhere Python 3.10+ is available)
pip install vfs-tracker
vfs-tracker isl -r "ABCD/123456/01" -l "SMITH"
# or:
python3 -m vfs_tracker isl -r "ABCD/123456/01" -l "SMITH"
Quick Start
# 1. Install
pip install vfs-tracker
# 2. Track your visa (Iceland is pre-cached)
vfs-tracker isl -r "ISL/PVG/010101/0001/01" -l "DOE"
# 3. Check EU EES stay duration
python3 -c "
from vfs_tracker import ees_check
r = ees_check(passport_number='E12345678', issuing_country='CHN',
destination_code='isl', entry_date='23-09-2026', exit_date='04-10-2026')
print(r['message'])
"
# 4. List all countries
vfs-tracker list
# 5. Pre-cache a new country
vfs-tracker deu --fetch-q
Usage
vfs-tracker <country_code> -r <REF> -l <NAME>
| Option | Description |
|---|---|
-r, --reference |
Application Reference Number (from VFS receipt) |
-l, --last-name |
Last Name / Surname (as on passport) |
--fetch-q |
Fetch & cache tracking endpoint for a country |
list |
Show all 29 supported Schengen countries |
How It Works
Headless Chrome (no window)
โโ stealth.js anti-detection
โโ ddddocr: CAPTCHA OCR (VFS text-based)
โโ Custom number-slider solver (EU EES 2-digit puzzle)
โโ Human-like mouse drag simulation
โโ POST form โ parse result โ status card
EES CAPTCHA Solver
The EU EES calculator uses a 2-digit number selection CAPTCHA (two tiny images showing digits, slider to select the target number). Our solver:
- Extracts both images from the page
- Uses ddddocr to read the number (digit image or word image like "thirty-seven")
- Computes the target value (0โ50)
- Drags the slider with human-like mouse movement (variable speed, Y-axis jitter, random pauses)
- Submits the form โ fully automated
VFS โ EES Relationship
| VFS Status | Expected EES | What it means |
|---|---|---|
| ๐จ Application Received | NOT OK | Visa not yet in EES โ normal |
| ๐ค Application Forwarded | NOT OK | Embassy hasn't entered data |
| โณ Under Process | Varies | Not reliable at this stage |
| ๐ Decision Made | OK (likely) | Visa likely approved |
| ๐ฆ Passport Dispatched | OK | Should be in the system |
Output Example
๐ vfs-tracker โ VFS Global ็ญพ่ฏ็ถๆๆฅ่ฏข
็ฎๆ ๅฝๅฎถ: ๅฐๅฒ (Iceland) (ISL)
็ณ่ฏท็ผๅท: ISL/PVG/010101/0001/01
ๅงๆฐ: DOE
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ ๆญฃๅจๅ ่ฝฝ่ฟฝ่ธช้กต้ข...
โ
้กต้ขๅทฒๅ ่ฝฝ (17305 bytes)
โ
่กจๅๅทฒๅกซๅ
๐ ้ช่ฏ็ ่ฏๅซ: [PFKRG]
โโ Query Result โโ
็ฎๆ ๅฝๅฎถ : ๅฐๅฒ (Iceland) (ISL)
็ณ่ฏท็ผๅท : ISL/PVG/010101/0001/01
ๅงๆฐ : DOE
Embassy : Iceland Embassy
๐จ ็ณ่ฏทๅทฒ้่พพ
ๆจ็็ญพ่ฏ็ณ่ฏทๆๆๅทฒ้่พพ Iceland Embassyใ
่ฟๅบฆ: โ โ โ โ โ โ โ โ โ โ โ
Recv Fwd Review Decide Ship Done
Requirements
- Python โฅ 3.10
- Google Chrome (or Chromium)
- Internet connection
pip install vfs-tracker # installs all deps automatically
Manual dependencies if installing from source:
pip install selenium selenium-stealth ddddocr Pillow
Project Structure
vfs-tracker/
โโโ pyproject.toml # Package metadata + build config
โโโ README.md
โโโ SKILL.md # Claude Code / agent skill definition
โโโ src/
โ โโโ vfs_tracker/
โ โโโ __init__.py # Main tracker (VFS + EES)
โ โโโ countries.json # 29 Schengen countries
โ โโโ q_params.json # Cached tracking endpoints
โโโ references/
โโโ troubleshooting.md
License
MIT
Acknowledgments
- VFS-Helper-Bot โ inspired the Selenium approach
- ddddocr โ CAPTCHA OCR engine
- EU EES โ official short-stay calculator
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vfs_tracker-1.0.1.tar.gz.
File metadata
- Download URL: vfs_tracker-1.0.1.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6f05780a8aeb0acd839f9fcb4f9dcea252e829edff00f461affdd4c80986457
|
|
| MD5 |
4c0b4b605d866911d4aad278343a0ef9
|
|
| BLAKE2b-256 |
42817aa81c6d60b56612d9ad6d98b4d9a23dd3c1598a96f883350db2fa48e37a
|
File details
Details for the file vfs_tracker-1.0.1-py3-none-any.whl.
File metadata
- Download URL: vfs_tracker-1.0.1-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da5c9e5d3cfa8aecddd2bd9a34b0f5f9b4bb034ad533b6b7e77c166592ff8da6
|
|
| MD5 |
99bd9094067c25e31801d143623531f2
|
|
| BLAKE2b-256 |
daa8a178d532e220d7d5f9919911f2dba3e1617ed9ea6ba4edcba8dc88ec60b4
|