Automatically monitors US Visa OFC (Visa Application Center) appointment availability across Indian cities and sends instant Telegram alerts when slots open up.
- Opens a Chromium browser window
- You log in manually (handles CAPTCHA and security questions yourself)
- Script takes over and checks all configured cities every 5 minutes
- Sends a Telegram alert the moment any slot becomes available
Double-click setup.bat or run in terminal:
.\setup.bat
This creates a virtual environment, installs all dependencies, and downloads the browser binary.
- Open Telegram and search for @BotFather
- Send
/newbotand follow the prompts to create a bot - Copy the bot token you receive
- Send any message to your new bot (e.g.
/start) - Open this URL in a browser (replace
<TOKEN>with your bot token):https://api.telegram.org/bot<TOKEN>/getUpdates - Find
"chat": {"id": XXXXXXX}— that number is your chat ID
Open config.py and fill in your details:
TELEGRAM_BOT_TOKEN = "your_bot_token_here"
TELEGRAM_CHAT_ID = "your_chat_id_here"
APPLICANT_NAME = "YOUR NAME" # Must match exactly as shown on the website.\run.bat
Or from PowerShell:
.\run.batA browser window will open. You have 10 minutes to:
- Enter your username and password
- Solve the CAPTCHA
- Answer the two security questions
Once logged in, the script monitors automatically and alerts you via Telegram.
All settings are in config.py:
| Setting | Default | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN |
(required) | Bot token from @BotFather |
TELEGRAM_CHAT_ID |
(required) | Your Telegram user ID |
APPLICANT_NAME |
"YOUR NAME HERE" |
Exact name as shown on the Group Members panel (uppercase) |
OFC_CITIES |
All 5 Indian cities | List of VAC cities to monitor |
CHECK_INTERVAL_SECONDS |
300 |
Time between full check cycles (5 minutes) |
LOGIN_TIMEOUT_SECONDS |
600 |
How long to wait for manual login (10 minutes) |
OFC_CITIES = [
"CHENNAI VAC",
"HYDERABAD VAC",
"KOLKATA VAC",
"MUMBAI VAC",
"NEW DELHI VAC",
]Remove any cities you don't want to monitor.
| Event | Message |
|---|---|
| Monitor started | Bot confirms which cities are being watched |
| Slot found | City name, timestamp, and direct booking link |
| Session expired | Prompts you to log back in |
| Too many errors | Alerts and stops the monitor after 5 consecutive failures |
If Telegram is not configured, all notifications print to the console instead.
visa_checker/
├── checker.py — Core application logic
├── config.py — Your configuration (edit this)
├── requirements.txt — Python dependencies
├── setup.bat — One-time setup script
├── run.bat — Launch script
└── venv/ — Python virtual environment (auto-created)
- patchright — Patched Chromium browser that bypasses Cloudflare bot detection
- requests — HTTP client for Telegram API calls
Login timed out
The script couldn't confirm you were logged in within 10 minutes. Increase LOGIN_TIMEOUT_SECONDS in config.py if you need more time.
Telegram not sending
- Verify your bot token and chat ID are correct in
config.py - Make sure you sent at least one message to your bot before checking
- Check the console for error details
Session expired mid-monitoring Normal — the website logs you out after inactivity. The script will detect this and prompt you to log back in via the browser window.
Uncertain results for a city The page didn't show either a "No Slots Available" banner or a date picker. This usually means the page loaded slowly. The city is skipped for that cycle and retried next round.