Skip to main content

Headless VFS Global Schengen Visa Status Tracker + EU EES calculator

Project description

vfs-tracker ๐Ÿ›‚

VFS Global Schengen Visa Status Tracker + EU EES calculator
VFS uses a Chrome-free HTTP mode by default; EES uses Selenium for the slider CAPTCHA.

PyPI Python License


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) โœ… VFS works without Chrome; EES needs Chrome
Linux (Ubuntu / Debian / CentOS) โœ… Use --mode http for VFS in no-desktop sandboxes
Windows 10 / 11 โœ… VFS works without Chrome; EES needs Chrome
WSL2 / containers / Claude CLI sandboxes โœ… VFS HTTP mode recommended; EES may need a real Chrome runtime

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"

If the official PyPI file host has SSL/network issues in a sandbox, install from a mirror instead:

pip install -U vfs-tracker -i https://mirrors.cloud.tencent.com/pypi/simple

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"

# Track VFS and also check EES in the same run
vfs-tracker isl -r "ISL/PVG/010101/0001/01" -l "DOE" \
  --ees-passport "E12345678" --ees-entry "23-09-2026" --ees-exit "04-10-2026"

# 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

# 6. Diagnose local runtime/network only when something fails
vfs-tracker doctor

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)
--mode VFS backend: auto, http, or selenium (default: auto; force only for debugging)
--ees-passport Also run EES check with this passport number
--ees-entry Intended EES entry date (DD-MM-YYYY)
--ees-exit Intended EES exit date (DD-MM-YYYY)
--ees-issuing EES issuing country code (default: CHN)
--no-ees Disable automatic EES check from environment variables
--fetch-q Fetch & cache tracking endpoint for a country
list Show all 29 supported Schengen countries

How It Works

VFS status
  โ””โ”€ HTTP mode first: requests + certifi, no Chrome required
  โ””โ”€ Synchronized form tokens: __RequestVerificationToken + CaptchaDeText
  โ””โ”€ ddddocr with color-aware CAPTCHA preprocessing
  โ””โ”€ Selenium fallback when HTTP mode cannot parse a standard result

EES calculator
  โ””โ”€ Headless Chrome for the EU slider CAPTCHA
  โ””โ”€ ddddocr reads the CAPTCHA numbers
  โ””โ”€ Human-like slider selection
  โ””โ”€ Parses official Authorised stay + remaining-days result

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:

  1. Extracts both images from the page
  2. Uses ddddocr to read the number (digit image or word image like "thirty-seven")
  3. Reads whether the widget asks for the highest or lowest number
  4. Drags the slider with human-like mouse movement (variable speed, Y-axis jitter, random pauses)
  5. 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 โ”€โ”€

  ๐Ÿ“จ ็”ณ่ฏทๅทฒ้€่พพ
  ่ฟ›ๅบฆ: โ— โ†’ โ—‹ โ†’ โ—‹ โ†’ โ—‹ โ†’ โ—‹ โ†’ โ—‹
        Recv  Fwd  Review  Decide  Ship  Done

๐Ÿ“„ ๅŽŸๅง‹ๆ–‡ๆกˆ๏ผš
   Your visa application reference no. ISL/PVG/010101/0001/01 has been
   received by Iceland Embassy in Beijing.

ๆๆ–™ๅทฒ็ป็จณ็จณไบคๅˆฐไฝฟ้ฆ†ๆ‰‹้‡Œไบ†๏ผŒ็ฌฌไธ€ๆญฅ่ตฐๅฎŒใ€‚ๆŽฅไธ‹ๆฅๅฐฑๆ˜ฏ็ญ‰โ€”โ€”็ญพ่ฏๅฎ˜ๅฎกๆๆ–™ๆ€ฅไธๆฅ๏ผŒ
ไฝ ่ƒฝๅš็š„้ƒฝๅšๅฎŒไบ†๏ผŒๆพๅฃๆฐ”๏ผŒ่ฟ‡ๅ‡ ๅคฉๅ†ๅ›žๆฅ็œ‹ไธ€็œผๅฐฑๅฅฝใ€‚

Language auto-follows your system locale (LANG). Force Chinese with LANG=zh_CN.UTF-8 vfs-tracker isl -r ... -l ....


What's New

  • 1.0.5 โ€” Adds Chrome-free VFS HTTP mode for Claude CLI / containers, synchronized token handling, improved VFS CAPTCHA preprocessing, --mode, and vfs-tracker doctor.
  • 1.0.4 โ€” Fixes EES parsing to trust only the official Authorised stay: OK/NOT OK result section, extracts Remaining days at the moment of entry, and can run EES after VFS when passport/travel dates are supplied.
  • 1.0.3 โ€” Surfaces the full original VFS message verbatim, plus warm, per-status encouragement (and a reapply/appeal plan once a decision is made).
  • 1.0.2 โ€” Reliable CAPTCHA handling: uppercase normalization, fresh captcha on every retry (no more "stuck on the same captcha"), more retries.

Requirements

  • Python โ‰ฅ 3.10
  • Google Chrome (or Chromium) only for EES / Selenium fallback
  • Internet connection
pip install vfs-tracker  # installs all deps automatically

If PyPI SSL fails in a restricted network:

pip install -U vfs-tracker -i https://mirrors.cloud.tencent.com/pypi/simple

Manual dependencies if installing from source:

pip install requests certifi selenium selenium-stealth ddddocr Pillow

Linux no-desktop notes:

  • Use --mode http for VFS status checks to avoid Chrome/X11/d-bus issues.
  • If you force Selenium on Ubuntu, install Chrome/Chromium and common runtime libraries such as libxdamage1, libnss3, libatk-bridge2.0-0, libxkbcommon0, libgbm1, and libasound2.
  • EES currently still needs a working Chrome runtime because the official EU page uses an interactive slider CAPTCHA.

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

vfs_tracker-1.0.5.tar.gz (27.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vfs_tracker-1.0.5-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file vfs_tracker-1.0.5.tar.gz.

File metadata

  • Download URL: vfs_tracker-1.0.5.tar.gz
  • Upload date:
  • Size: 27.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for vfs_tracker-1.0.5.tar.gz
Algorithm Hash digest
SHA256 04ec09a6c3d41ee2084eb233764ffbac2c1eca4076feb383bc326ad6b8e5756a
MD5 b1db98245fb113410992ef57500eae4e
BLAKE2b-256 162a5fc9d13fb171352e68c04df208d2bbd5c5656567f4a656f87ead9e4d02ce

See more details on using hashes here.

File details

Details for the file vfs_tracker-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: vfs_tracker-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for vfs_tracker-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3b89acc3cae24eaee9173b9822a609d8ff007ee7d11a5a00a294090f833cfb00
MD5 3d1e4823a329920cdf3562a5d1a2d5c0
BLAKE2b-256 abfbab1fc046ac9c12a45cd4a137cdab154d9f95f9613643c7c12429c2a1e2ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page