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.

Ask for a key See pricing Keys are issued by hand while the API is new, with a monthly request allowance agreed with you.

Request

curl https://www.visafar.com/api/v1/evaluate?passport=IND&held=us_visa \
  -H "Authorization: Bearer vf_live_…"
ParameterMeaning
passportRequired. ISO 3166 alpha-3 code of the passport, e.g. IND, NGA, PHL. 199 passports are covered.
heldOptional. Comma-separated documents the traveller holds (codes below).
residenceOptional. Alpha-3 code of the country they live in, or HOME (default).
dateOptional. 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

CodeDocument
us_visaUS visa
us_prUS Green Card
schengen_visaSchengen visa
eu_residenceEU/EEA residence permit
uk_visaUK visa
uk_residenceUK residence permit
canada_visaCanadian visa
canada_prCanadian PR
australia_visaAustralian visa
japan_visaJapanese visa
korea_visaSouth Korean visa
ireland_visaIrish visa
gcc_residenceGCC residence permit
nz_visaNew 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."
}
FieldMeaning
statusopen on the passport, unlocked by a document held, conditional (a document could work but a condition isn't met; see gateReasons), or visa_required.
entryvisa_free, visa_on_arrival, evisa, eta or visa_required; maxStayDays when the source states one.
viaThe documents that unlock it.
conditionsThe conditions the source attaches, in plain English.
basisvisafar_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).
countsTotals, 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_…"
FieldMeaning
destAlpha-3 code, or SCHENGEN. Leave it out to list the covered destinations.
entries[]One per way in: label, appliesTo, maxStay, conditions, sources, activities.
activities[].statusyes, 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

StatusError
400bad_passport, bad_residence, bad_date
401missing_key, invalid_key
403origin_not_allowed: a browser call from a site not listed on the key
429quota_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
Ask for a Starter key
For agencies

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
Ask for a Business key

Scale

For high-traffic products

$499/mo

  • 1,000,000 requests a month
  • Unlimited websites
  • Priority handling of your rule questions
  • A named contact
Ask for a Scale key

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
Talk to us

Terms of use

Questions: contact@visafar.com.