Visa and entry requirements — 199 passports · 39,402 routes
Can I enter?
Pick a passport and a destination: the rule, the allowed stay, and what to arrange before you fly. Five free checks a day, no account.
Verify you're human to unlock 20 checks a day
Where next · Trust and transparency · Developers and agents: the same check as an HTTP request
01 — Where next
- Netherlands → Japan
- United States → Brazil
- United Kingdom → United States
- India → United Arab Emirates
- India → Thailand
- United States → China
- Germany → Thailand
- Philippines → Japan
- Australia → Indonesia
- Canada → Mexico
- United States → Vietnam
- United Kingdom → Australia
Every passport to destination pair has a page: where a passport can go · who needs a visa for a destination · 39,402 routes in the sitemap.
02 — Trust and transparency
Counted from the dataset itself
Every figure below is computed from the exact dataset this deployment serves: nothing is written by hand. Every entry rule is re-checked against its cited official source every day; the live counters come straight from production, refreshed every five minutes.
199
Passports covered
39,402
Passport to destination routes
131/199
Verified against official sources
829
Rules with source citations
—
Rules re-verified today
533
Official sources checked daily
2d
Median rule age since verification
2026-10-05
Dataset version
—
API uptime · 30 days
172/199
Official application portals linked
—
AI-agent visits today
—
MCP tool calls · all time
Verification activity
- ANDGovern d'Andorra travel page read live: Andorra requires no visa of any kind, and visa-required third-country nationals still need a double- or multiple-entry Schengen visa to transit France or Spain.
- BLZThe Belize Tourism Board visas-and-immigration page, unreadable yesterday, read live today and still states a 30-day post-arrival passport minimum with a six-month rule for onward third-country transit, so yesterday's needs_review is resolved.
- DJIThe evisa.gouv.dj platform returned empty content at two fresh cache-busted tokens for a sixth consecutive day, and its /en/ and /en/home paths errored, so the 30 September content change remains unadjudicated.
- FINFinnish Border Guard travel-document and border-crossing pages read live: the three-months-beyond-departure passport rule, the ten-year issuance limit, the residence-permit exemption from both and the work-trip documentation guidance are unchanged.
- FJITrimmed the unsupported '3 to 72 hours' transit-visa window: both the Fiji MFA and Ministry of Immigration pages read live state only that transits over 3 hours require a visa, with no published maximum duration.
- IRQRemoved the claim that US and Canadian citizens use a 'Visa on Arrival' section of the e-visa portal: FCDO states a visit visa on arrival can no longer be obtained and the Iraqi consulate confirms on-arrival issuance is suspended; e-visa pricing, the 24-hour lead time and the Kurdistan Region's separate regime were added.
- KAZBoth cited Kazakh government pages failed a live read for a twenty-third consecutive day - gov.kz timed out the live crawler and egov.kz returned only its navigation shell at fresh cache-busted tokens - so the recorded content change still could not be adjudicated.
- NGANigeria Immigration Service F6A and Landing/Exit Card pages read live: the six-month passport minimum, return-ticket evidence and the mandatory digital landing and exit cards are unchanged.
- OMNForeign Ministry entry-visas page and the ROP eVisa eligibility wizard both read live: the six-month passport minimum, return-ticket and health-insurance conditions of the 14-day visa-free exemption and the GCC-resident eVisa route are unchanged.
- SLESierra Leone Immigration Department notices and FAQ read live: travel advisory SLID/TRV/002 still advises six months' passport validity and the official eVisa and unified-permit portals are unchanged.
- TJKAll three cited Tajik sources failed a live read today: mid.tj returned an unknown crawl error at two fresh cache-busted tokens, the mfa.tj Vienna consular page errored and evisa.tj returned empty content.
- TURThe Turkish MFA visa-information and consular-info pages, which answered HTTP 418 to a live crawl on 3 September, read live today and confirm the 60-days-beyond-duration-of-stay passport rule, the Schengen/USA/UK/Ireland e-visa route and the tourism-or-commerce e-visa scope, resolving the needs_review set then.
- AFGEntry rules re-verified against Ministry of Foreign Affairs of Afghanistan (Islamic Emirate — de facto authorities)
- AGOEntry rules re-verified against Servico de Migracao e Estrangeiros de Angola (SME)
- ALBEntry rules re-verified against Ministry for Europe and Foreign Affairs of Albania
- ANDOfficial source content changed — queued for review
- ARGEntry rules re-verified against Ministerio de Relaciones Exteriores (Cancillería) / Dirección Nacional de Migraciones
- ARMEntry rules re-verified against Ministry of Foreign Affairs of the Republic of Armenia
- BFAEntry rules re-verified against Visa Burkina, official Burkina Faso e-visa platform (referenced by servicepublic.gov.bf); applicant portal at https://applicant.visaburkina.bf/
- BGDEntry rules re-verified against Bangladesh Online MRV Portal (online application, visa issued at missions); VOA info at https://voa.specialbranch.gov.bd/public/voa-info.html (Bangladesh Police Special Branch)
- BGROfficial source content changed — queued for review
- BHSEntry rules re-verified against Bahamas Department of Immigration
- BLREntry rules re-verified against Ministry of Foreign Affairs of the Republic of Belarus
- BLZEntry rules re-verified against Belize Immigration Department
- BOLEntry rules re-verified against Ministry of Foreign Affairs of Bolivia (Cancilleria)
- BRBEntry rules re-verified against Barbados Immigration Department (online entry-visa portal; travelform.gov.bb hosts the pre-arrival Immigration and Customs Form)
- BRNEntry rules re-verified against Ministry of Foreign Affairs of Brunei Darussalam
- CAFEntry rules re-verified against Ministere des Affaires Etrangeres de la RCA (diplomatie.gouv.cf); online short-stay visa application via Embassy of CAR in Paris portal
- CANEntry rules re-verified against Immigration, Refugees and Citizenship Canada
- COGEntry rules re-verified against Ambassade de la Republique du Congo en France - online visa application/payment via GIRAFE (girafe.ambacongofr.org); no visa on arrival in Congo
- COMEntry rules re-verified against Ministere de la Justice des Comores - Loi 88-025 on entry and stay of foreigners (transit visa issued at airport/port; tourist visa max 45 days)
- CPVEntry rules re-verified against Government of Cabo Verde - EASE traveller pre-registration
- CZEEntry rules re-verified against Ministry of Foreign Affairs of the Czech Republic - Passport (supporting documents)
- DOMEntry rules re-verified against Direccion General de Migracion, Dominican Republic (mandatory e-Ticket entry/exit form, not a visa)
- EGYOfficial source content changed — queued for review
- ERIEntry rules re-verified against Embassy of Eritrea in Washington DC - Visa
- ESTEntry rules re-verified against Estonian Ministry of Foreign Affairs / Police and Border Guard Board
- FINOfficial source content changed — queued for review
- FJIOfficial source content changed — queued for review
- FSMEntry rules re-verified against FSM Embassy Washington DC
Full data, machine-readable: GET /transparency · GET /stats.json · GET /changes.json · status.canienter.com
03 — Integration
The answer, sold by the request.
An unpaid call returns HTTP 402 with payment instructions. Any x402 client settles $0.03 in USDC and retries. Payments run on Base mainnet.
# Free tier — 5 checks a day, no auth curl "https://api.canienter.com/free/check?passport=NLD&destination=JPN" # Paid tier — answers HTTP 402 Payment Required. The offer (amount, # asset, pay-to) is base64 JSON in the PAYMENT-REQUIRED header; # any x402 client settles it and retries automatically. curl "https://api.canienter.com/v1/check?passport=NLD&destination=JPN" # Peek at the offer without paying: curl -s -o /dev/null -D - "https://api.canienter.com/v1/check?passport=NLD&destination=JPN" \ | grep -i "^payment-required" | cut -d" " -f2 | base64 -d
// npm i @x402/fetch @x402/evm viem (Node 18+) // WARNING: running this spends real USDC ($0.03/call, Base mainnet). // Inspect the offer first, free of charge: const probe = await fetch("https://api.canienter.com/v1/check?passport=NLD&destination=JPN"); console.log(probe.status, /* 402 */ JSON.parse(atob(probe.headers.get("PAYMENT-REQUIRED")))); // Then pay per call — key from an env var, never hardcoded or logged: import { wrapFetchWithPaymentFromConfig } from "@x402/fetch"; import { ExactEvmScheme } from "@x402/evm"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.X402_PRIVATE_KEY); const payFetch = wrapFetchWithPaymentFromConfig(fetch, { schemes: [ { network: "eip155:8453", client: new ExactEvmScheme(account) }]}); const res = await payFetch( "https://api.canienter.com/v1/check?passport=NLD&destination=JPN"); if (!res.ok) throw new Error("check failed: " + res.status); const { requirement, allowed_stay_days } = await res.json();
# The API publishes its own agent skill (Claude Code paths shown; # Codex/Cursor/other agents: use your agent's skills directory) mkdir -p ~/.claude/skills/visa-check curl -s "https://api.canienter.com/.well-known/agent-skills/visa-check/SKILL.md" \ -o ~/.claude/skills/visa-check/SKILL.md # Discovery index with the SKILL.md sha256 digest (verify, updates, extras): curl -s "https://api.canienter.com/.well-known/agent-skills/index.json" # Remove: delete ~/.claude/skills/visa-check
The skill lets an agent look up entry requirements and pay per request over x402. There is no API key to leak.
Machine docs: GET /llms.txt · GET /openapi.json
Add to your agent
| Endpoint | Price |
|---|---|
| /free/check | free · 5/day |
| /v1/check | $0.03 |
| /v1/trips/evaluatefull trip: multi-leg, multi-passport, explanations | $0.10 |
| /v1/passport/{iso3}all 198 destinations at once | $0.15 |
- USDC on Base mainnet · x402 v2
- No account, no API key, no contract
- Freshness date on every answer
01 — Call
GET /v1/check: the unpaid request returns HTTP 402 with a payment offer.
02 — Pay
$0.03 USDC via any x402 client, settled on Base mainnet.
03 — Answer
JSON verdict plus an on-chain receipt for the payment.
Not a developer? The same answers go on your own site with two lines of HTML: no API call, no account.
04 — Your site
Runs on your pages, too.
A travel guide, a relocation blog, a booking flow: paste two lines and your readers get the requirement, the allowed stay and a link to the sourced rules without leaving your page. It is free for any site, commercial or not. The only thing asked in return is that the attribution link stays visible.
<!-- anywhere in your page --> <div data-canienter-widget></div> <script src="https://canienter.com/embed.js" async></script> <!-- on a Japan guide, pre-select the destination --> <div data-canienter-widget data-destination="JPN"></div>
- No cookies, no tracking, no account
- Follows your reader's light and dark setting
- Auto-sizes to its container
- Answers cite the same official sources