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": 128,
"unlocked": 30,
"conditional": 0,
"visaRequired": 74,
"onPassportAlone": 106,
"newWithDocuments": 22,
"easierWithDocuments": 8
},
"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://dof.gob.mx/nota_detalle_popup.php?codigo=5437383",
"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.
What visitors can do: /api/v1/activities
For each way in (visitor visa, visa-free entry, business visitor and so on), whether tourism, business meetings, conferences, contracts, remote work for an employer abroad, paid work, short study, volunteering and medical treatment are allowed. Every status was read at an official source and carries its link, a short quote and the date it was checked. Where the source is silent the status is not_stated; Visafar doesn't fill it in. Covers 89 destinations (the Schengen area counts as one), with more being added; call it with no dest for the current list. For a few destinations with no usable official source, the response has a secondary object instead of entries: paid work (or volunteering) only, taken from the UK government's travel advice for British travellers and labelled with its publisher and page date. Each entry has a kind (visa_free, visa or any) saying which travellers it applies to.
curl https://www.visafar.com/api/v1/activities?dest=GBR \
-H "Authorization: Bearer vf_live_…"
| Field | Meaning |
|---|---|
dest | Alpha-3 code, or SCHENGEN. Leave it out to list the covered destinations. |
entries[] | One per way in: label, appliesTo, maxStay, conditions, sources, activities. |
activities[].status | yes, limited (within the limit in note), no, varies (set by each country in the group) or not_stated. |
The same answers are public, one page per destination, at What visitors can do. Unknown destinations return 400 not_covered.
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>
Pricing
Prices in US dollars, billed monthly by invoice. Pay yearly and get two months free. Every plan returns the same answers, with the official source for each rule.
Starter
For a first integration
$49/mo
- 10,000 requests a month
- 1 website for browser calls and the widget
- Every passport and document code
- Email support
Business
For travel agencies and booking sites
$199/mo
- 100,000 requests a month
- Up to 3 websites
- Branded client portal for your agency
- Email support
Scale
For high-traffic products
$499/mo
- 1,000,000 requests a month
- Unlimited websites
- Priority handling of your rule questions
- A named contact
Enterprise
Custom volume and terms
From $1,000/mo
- Volume set with you
- Written agreement
- Invoicing to suit your accounts team
- Data scope agreed with you
- Agency portal only: $29 a month for a branded "where can you travel?" page for your clients, without API access.
- Over your allowance: requests return
429 quota_exceededuntil the next month. Move up a plan any time, or ask us to raise the allowance. - Data included: Visafar's own unlock rules and passport answers confirmed at an official source. The passport-index open dataset is available on request, subject to its licence (see where the answers come from).
- First partners: half price for your first three months, in return for feedback on the API.
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: contact@visafar.com.