VFS Global APIvisa.vfsglobal.com ↗
Access VFS Global visa appointment data: 100+ missions, application center locations, visa types, news, and country route configs via 5 structured endpoints.
What is the VFS Global API?
This API exposes structured data from the VFS Global visa appointment portal across 5 endpoints covering missions, application center locations, visa types, announcements, and country route configurations. The get_visa_centers endpoint returns geocoordinates, addresses, timing, and Google Maps links for application centers worldwide, filterable by origin and destination country ISO codes. Combined with get_missions, it gives a complete picture of which country pairs VFS Global serves.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/ef37863d-5109-4df3-99e2-aa6752430df8/get_missions' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace visa-vfsglobal-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
VFS Global Visa Portal API - Usage Example
Get your API key from: https://parse.bot/settings
"""
from parse_apis.vfs_global_visa_portal_api import VFSGlobal
vfs = VFSGlobal(api_key="YOUR_API_KEY")
# List all missions (destination countries)
for mission in vfs.missions.list():
print(mission.mission_name, mission.iso_code)
for origin in mission.origin_countries:
print(f" From: {origin.country_code}, Languages: {origin.languages}")
# Construct a mission by ISO code and browse its sub-resources
italy = vfs.mission(iso_code="ITA")
# Get visa centers for Italy from India
for center in italy.visa_centers.list(country_code="IND"):
print(center.name, center.latitude, center.longitude, center.google_map_url)
# Get news for Italy mission
for item in italy.news.list(country_code="IND", language="en"):
print(item.title, item.date, item.permanent)
# Get visa types grouped by jurisdiction
for group in italy.visa_types.list(country_code="ind", language="english"):
print(group.internal_name, group.title)
for vt in group.visa_types:
print(f" - {vt.name}")
# Get country configurations
for config in italy.country_configs.list(country_code="ind", language="en"):
print(config.name, config.enable_search, config.enable_dropdown)
Get all missions (destination countries) served by VFS Global, including available origin countries and supported languages for each mission. Returns the complete list of 100+ missions sorted alphabetically by name. Each mission contains an ISO code and a list of origin countries with their supported languages.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer total count of missions",
"missions": "array of mission objects each containing mission_name, iso_code, and origin_countries with their supported languages"
},
"sample": {
"data": {
"total": 105,
"missions": [
{
"iso_code": "DZA",
"mission_name": "Algeria",
"origin_countries": [
{
"languages": [
"en"
],
"country_code": "IND"
}
]
},
{
"iso_code": "AUS",
"mission_name": "Australia",
"origin_countries": [
{
"languages": [
"en"
],
"country_code": "IND"
},
{
"languages": [
"en"
],
"country_code": "NGA"
}
]
}
]
},
"status": "success"
}
}About the VFS Global API
Missions and Country Coverage
The get_missions endpoint returns the full list of 100+ destination countries (missions) that VFS Global services, each with an ISO code and a nested array of origin countries along with their supported interface languages. This is the right starting point for discovering valid country_code and mission_code pairs to use as filters in other endpoints.
Visa Application Centers
The get_visa_centers endpoint returns center records that include name, title, latitude, longitude, google_map_url, address_lines, and timing. Pass country_code (origin, e.g. IND) and/or mission_code (destination, e.g. ITA) to narrow results. Pagination uses skip and limit with a maximum of 100 results per call; the response always includes a total count so you can calculate pages in advance.
Visa Types and News
The get_visa_types endpoint takes a mission/country route and returns visa categories grouped by jurisdiction or center. Each group includes an internal_name, title, description, and a visa_types array with name and details for each category — covering tourist, business, study, and other classes available on that route. The get_news endpoint surfaces operational announcements (center closures, policy changes, schedule updates) ordered newest-first, filterable by mission_code, country_code, and language. News items carry title, slug, date, intro, body, and flags for permanent and global_news.
Country Route Configuration
The get_country_info endpoint exposes per-route page configuration, including enable_search, enable_dropdown, welcome_text, and the country_code/mission_code identifiers. This is useful for discovering which origin-destination combinations are actively configured in the portal and what UI features each route exposes.
The VFS Global API is a managed, monitored endpoint for visa.vfsglobal.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when visa.vfsglobal.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official visa.vfsglobal.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a visa center locator map using latitude/longitude and google_map_url fields from get_visa_centers
- Monitor VFS Global operational disruptions by polling get_news filtered by mission_code and checking the date field
- Enumerate all valid origin-destination route pairs using get_missions to seed filters for downstream queries
- Display available visa categories (tourist, business, study) for a given route using get_visa_types visa_types array
- Determine which country pair routes are actively configured and search-enabled using get_country_info enable_search flags
- Generate a directory of VFS application centers with operating hours and addresses for a specific destination country
- Validate user-selected country codes against live mission data before submitting appointment requests
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does VFS Global provide an official developer API?+
How do I filter visa centers by both origin and destination country?+
country_code (origin, e.g. PAK) and mission_code (destination, e.g. GBR) as query parameters to get_visa_centers. Both are optional and case-insensitive. Omitting either returns centers across all values for that dimension. The response includes a total field so you can paginate through results using skip and limit.Does the API return live appointment slot availability or booking data?+
What does the news body field contain, and how current is the data?+
body field in get_news contains the full announcement text for each item. News items also carry a date field, permanent and global_news boolean flags, and a slug. Results are ordered newest-first. Freshness depends on how frequently VFS Global publishes updates to their portal; the API reflects the current state of that content at call time.Can I retrieve visa fee amounts or required document checklists through this API?+
get_visa_types, but structured fee schedules and document requirement checklists are not included in the response fields. You can fork this API on Parse and revise it to add an endpoint targeting that detail content if it is available on the portal for a given route.