Passport Index API: Get passport rank
Looks up a country's passport on Passport Index and returns its global rank, mobility score, visa requirement counts and optionally every destination's requirement.
Unofficial. Not affiliated with or endorsed by Passport Index.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Country, required
country Passport country name or two-letter country code, for example Germany or DE.
Japan
- Include Destinations optional
include_destinations Whether to include every destination and its visa requirement; for example true.
true
True or false. Default
false.
Input as JSON
{ "country": "Japan", "include_destinations": true}Output
{ "country": "Japan", "evisa_count": 46, "global_rank": 4, "destinations": [ { "link": "https://www.passportindex.org/country/afghanistan/" , "destination": "Afghanistan", "requirement": "eVisa" }, { "link": "https://www.passportindex.org/country/albania/" , "destination": "Albania", "requirement": "visa free (90 days)" }, { "link": "https://www.passportindex.org/country/algeria/" , "destination": "Algeria", "requirement": "visa required" } ], "mobility_score": 173, "visa_free_count": 114, "passport_index_link": "https://www.passportindex.org/passport/japan/" , "visa_required_count": 25, "visa_on_arrival_count": 47}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"passportindex.org/get_passport_rank","input":{"country":"Japan","include_destinations":true}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "passportindex.org/get_passport_rank" , "input": { "country": "Japan", "include_destinations": True }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "passportindex.org/get_passport_rank" , "input": { "country": "Japan", "include_destinations": true } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run passportindex.org/get_passport_rank# with {"country":"Japan","include_destinations":true}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "country" ], "properties": { "country": { "type": "string", "description": "Passport country name or two-letter country code, for example Germany or DE." }, "include_destinations": { "type": "boolean", "default": false, "description": "Whether to include every destination and its visa requirement; for example true." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "country", "global_rank", "mobility_score", "visa_free_count", "visa_on_arrival_count", "evisa_count", "visa_required_count", "passport_index_link" ], "properties": { "country": { "type": "string", "description": "Country of the passport." }, "evisa_count": { "type": "integer", "description": "Destinations listing eVisa or eVisitor, including destinations that also list visa on arrival." }, "global_rank": { "type": "integer", "description": "Global passport power rank." }, "destinations": { "type": "array", "items": { "type": "object", "required": [ "destination", "requirement", "link" ], "properties": { "link": { "type": "string" }, "destination": { "type": "string" }, "requirement": { "type": "string" } }, "additionalProperties": false } }, "mobility_score": { "type": "integer", "description": "Number of destinations accessible without a visa arranged in advance, including eTA." }, "visa_free_count": { "type": "integer" }, "passport_index_link": { "type": "string" }, "visa_required_count": { "type": "integer" }, "visa_on_arrival_count": { "type": "integer" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
passportindex.org/get_passport_rank- Returns
- country, global rank, mobility score, visa-free / visa on arrival / eVisa / visa required counts, link, optional destinations
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method passportindex.org/get_passport_rank with the inputs above.
Ask your agent
- How strong is the Brazilian passport globally? I need its world ranking and mobility score.
- Pull up Passport Index data for JP — rank, mobility score, and how many countries are visa-free vs visa required.
- I hold an Indian passport. Can you list every destination and whether I need a visa, eVisa, or visa on arrival?
- What's the mobility score for a Nigerian passport, and how many places offer visa on arrival or eVisa?
- Check passportindex.org for the Canada passport: give me the global rank plus the full destination-by-destination visa breakdown.
See more
All Passport Index methodsChecks a passport holder's visa requirement and permitted stay for a destination on Passport Index. This is guidance; travellers should confirm entry rules with the embassy before travel. Visits to the passport's issuing country are not listed.
passportindex.org/check_visa_requirementRanks countries by a World Development Indicators statistic for a given year, or for the latest year with broad country coverage. Regional aggregates and countries without data for that year are left out.
worldbank.org/compare_countriesReturns current UK government (FCDO) travel warnings, entry requirements for British passport holders, safety, health and emergency information for a country. Summaries are shortened; follow the link for full details.
gov.uk/get_travel_adviceRanks countries by a World Economic Outlook indicator for a chosen year, excluding regional and group totals and countries without a value.
imf.org/list_country_rankingsLists EU Sanctions Map regimes concerning a country, with measures, EUR-Lex legal acts, amendment dates and listed person and entity counts.
sanctionsmap.eu/get_country_sanctionsLooks up a World Bank statistic for a country and returns its annual values and latest value for the selected years.
data.worldbank.org/get_country_statisticGets the latest WHO value of a health statistic for a country, with sex-specific values, the regional value for the same year, and up to 10 years of history.
who.int/get_country_health_statisticsGets CDC traveler vaccines, medicines, the routine vaccine reminder and malaria guidance for a destination country. Recommendations can vary by itinerary and traveler, so read the linked country page for details.
cdc.gov/get_travel_vaccines