Visafar API
The same answers as visafar.com, inside your product: where a passport, plus the visas and residence permits someone holds, lets them travel. Every destination comes with its conditions and the source it was read from.
Request
curl https://www.visafar.com/api/v1/evaluate?passport=IND&held=us_visa \
-H "Authorization: Bearer vf_live_…"
| Parameter | Meaning |
|---|---|
passport | Required. ISO 3166 alpha-3 code of the passport, e.g. IND, NGA, PHL. 199 passports are covered. |
held | Optional. Comma-separated documents the traveller holds (codes below). |
residence | Optional. Alpha-3 code of the country they live in, or HOME (default). |
date | Optional. Travel date, YYYY-MM-DD. Time-limited rules are applied for that date. |
The key can also go in an X-Api-Key header. Browser calls work from the sites listed on your key (CORS).
Document codes
| Code | Document |
|---|---|
us_visa | US visa |
us_pr | US Green Card |
schengen_visa | Schengen visa |
eu_residence | EU/EEA residence permit |
uk_visa | UK visa |
uk_residence | UK residence permit |
canada_visa | Canadian visa |
canada_pr | Canadian PR |
australia_visa | Australian visa |
japan_visa | Japanese visa |
korea_visa | South Korean visa |
ireland_visa | Irish visa |
gcc_residence | GCC residence permit |
nz_visa | New Zealand visa |
Response
A live example, generated when this page was built (Indian passport with a US visa, one destination shown):
{
"ok": true,
"passport": {
"code": "IND",
"name": "India"
},
"held": [
"us_visa"
],
"residence": "HOME",
"date": null,
"scope": "full",
"counts": {
"open": 130,
"unlocked": 28,
"conditional": 0,
"visaRequired": 72,
"onPassportAlone": 111,
"newWithDocuments": 19,
"easierWithDocuments": 9
},
"destinations": [ /* 202 in the real response; one shown */
{
"code": "MEX",
"name": "Mexico",
"status": "unlocked",
"entry": "visa_free",
"entryLabel": "Visa free",
"maxStayDays": 180,
"via": [
"us_visa"
],
"conditions": [
"Supporting visa or residence card must be valid on both entry and exit.",
"Admission is as a visitor without permission to carry out paid activities.",
"For residence, the legal text lists PERMANENT residence in Canada, the US, Japan, the UK or a Schengen state. A temporary EU/EEA residence permit or UK pre-settled status is not listed — confirm with a Mexican consulate before relying on one."
],
"basis": "visafar_rule",
"source": "https://www.gob.mx/sre",
"lastChecked": "2026-09-19"
}
],
"data": {
"rules": 53,
"datasetAsOf": "2026-02-18",
"compiled": "2026-09-24"
},
"attribution": "Visa data by Visafar, https://www.visafar.com",
"notices": "https://www.visafar.com/third-party-notices.txt",
"disclaimer": "Short tourist stays only. Entry rules change without notice and the final decision is the border officer's; confirm with the destination's official source before travel."
}
| Field | Meaning |
|---|---|
status | open on the passport, unlocked by a document held, conditional (a document could work but a condition isn't met; see gateReasons), or visa_required. |
entry | visa_free, visa_on_arrival, evisa, eta or visa_required; maxStayDays when the source states one. |
via | The documents that unlock it. |
conditions | The conditions the source attaches, in plain English. |
basis | visafar_rule: a rule Visafar read at the government source. official_source: a passport-alone answer Visafar confirmed or corrected at an official source. dataset: the passport-index open dataset (see below). |
counts | Totals, including newWithDocuments (countries the passport alone can't enter) and easierWithDocuments (already open, easier with the documents). |
Where the answers come from
Unlock rules are Visafar's own: each was read at the official source and links it, with the date it was last checked (data status). Passport-alone answers come from an open dataset compiled from passportindex.org, as of February 2026, except where Visafar has checked an official source. Keys can be limited to Visafar's rules and official sources only. The dataset's licence notices are at third-party-notices.txt.
Errors
| Status | Error |
|---|---|
| 400 | bad_passport, bad_residence, bad_date |
| 401 | missing_key, invalid_key |
| 403 | origin_not_allowed: a browser call from a site not listed on the key |
| 429 | quota_exceeded: this month's allowance is used up. X-Quota-Remaining on every response shows what's left. |
Widget
A small "Where can you go?" box for your site: pick a passport and documents, see the count and the best new destinations. It only loads on the sites listed on your key, and each lookup counts toward its allowance.
<iframe src="https://www.visafar.com/embed?key=vf_live_…&p=IND"
width="100%" height="560" style="border:0" title="Where can you go? (Visafar)"></iframe>
Terms of use
- The data is information, not legal or immigration advice. Entry rules change without notice and the border officer decides. Show travellers a line telling them to confirm with the destination's official source.
- Wherever you show Visafar data, credit it as "Visa data by Visafar" with a link to visafar.com.
- Don't resell or republish the data as a dataset. Use it to answer your own users' questions.
- Keep keys secret. Visafar can revoke a key that is abused or leaked, and will tell you first where it can.
- Visafar is provided as is. Its liability to you is limited to what you paid for the API in the three months before a claim.
Questions: hello@visafar.com.