Skip to main content

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

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) โœ… 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:

  1. Extracts both images from the page
  2. Uses ddddocr to read the number (digit image or word image like "thirty-seven")
  3. Computes the target value (0โ€“50)
  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 โ”€โ”€

  ็›ฎๆ ‡ๅ›ฝๅฎถ : ๅ†ฐๅฒ› (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

vfs_tracker-1.0.1.tar.gz (17.0 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.1-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

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

Hashes for vfs_tracker-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e6f05780a8aeb0acd839f9fcb4f9dcea252e829edff00f461affdd4c80986457
MD5 4c0b4b605d866911d4aad278343a0ef9
BLAKE2b-256 42817aa81c6d60b56612d9ad6d98b4d9a23dd3c1598a96f883350db2fa48e37a

See more details on using hashes here.

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

Hashes for vfs_tracker-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 da5c9e5d3cfa8aecddd2bd9a34b0f5f9b4bb034ad533b6b7e77c166592ff8da6
MD5 99bd9094067c25e31801d143623531f2
BLAKE2b-256 daa8a178d532e220d7d5f9919911f2dba3e1617ed9ea6ba4edcba8dc88ec60b4

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