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
198/199
Verified against official sources
827
Rules with source citations
—
Rules re-verified today
537
Official sources checked daily
1d
Median rule age since verification
2026-08-10
Dataset version
—
API uptime · 30 days
172/199
Official application portals linked
—
AI-agent visits today
—
MCP tool calls · all time
Verification activity
- BHSFull deep audit (6-month passport validity, onward-ticket, US/Canadian permanent-resident exemption, purpose scope, yellow-fever) found every field accurate against live official sources.
- BHRFull deep audit (6-month passport validity, onward-ticket/hotel/bank-statement requirement, GCC resident visa-on-arrival exemption, purpose scope, yellow-fever) found every field accurate against live official sources.
- BGRFull deep audit (3-month post-departure passport rule, 2 blank pages, onward-means, Schengen airport-transit and residence-permit exemptions, purpose scope) found every field accurate against live official sources.
- BGDFull deep audit (6-month passport validity, 2 blank pages, USD 500 VOA solvency requirement, purpose scope, yellow-fever) found every field accurate against live official sources.
- BFAFull deep audit (unspecified passport-validity rule, onward-ticket, health-record and medical-insurance requirements, purpose scope, yellow-fever) found every field accurate against live official sources.
- BENFull deep audit (passport validity, onward-ticket, purpose scope, yellow-fever) found every field accurate against live official sources.
- BELRemaining fields (passport validity, blank pages, Schengen residence-permit exemption, purpose scope) re-verified accurate.
- BELRe-pointed twov citation to the IBZ airport-transit-visa page that actually documents the type-A regime (the previously cited URL was the parent visa-index page); content unchanged.
- BELRe-pointed onward_ticket citation to the IBZ page that actually states the EUR 45/95 per-day subsistence figures (the previously cited PDF only carries the generic Art. 6 legal text); the figures themselves were already correct and unchanged.
- BDIFull deep audit (6-month passport validity, 1 blank page, onward-ticket, purpose scope, yellow-fever) found every field accurate against live official sources.
- AZERemaining fields (airport-transit exemption, purpose scope, links) re-verified accurate against evisa.gov.az and migration.gov.az.
- AZECorrected passport_validity.rule from months_beyond_stay to months_beyond_visa_expiry: the e-visa portal anchors the 3-month passport-validity requirement on the e-visa's own 90-day expiry window, not the 30-day permitted stay.
- AUTFull deep audit confirmed the 3-month post-departure Schengen passport rule, 2-blank-page visa requirement, onward-means condition, Schengen residence-permit exemption and purpose scope all accurate.
- AUSFull deep audit (no-fixed-validity passport rule, no return-ticket requirement, TWOV eligibility, purpose scope, yellow-fever) found every field accurate against live official sources.
- ATGFull deep audit (passport validity, onward-ticket, airport-transit exemption, US/CAN/UK/Schengen visa-on-arrival exemption, purpose scope, yellow-fever) found every field accurate against live official sources.
- VNMVietnam Kuala Lumpur embassy visa-info PDF re-checked after repeated 404s; 6-month passport-validity and onward-ticket text unchanged.
- URYUruguay Natural (Ministerio de Turismo) entry-requirements page re-checked after a 404; unchanged.
- TONTonga Ministry of Revenue immigration-services page re-checked after repeated fetch failures; passport-validity, onward-ticket and purpose-scope text unchanged.
- TJKTajik MFA Vienna-post visa page and mid.tj e-visa notice re-checked after repeated fetch failures; blank-pages and visa-validity text unchanged.
- SYRevisa.sy re-checked after a fetch failure; portal is reachable but still displays only a 'coming soon' placeholder, consistent with the destination's unpopulated fields.
- SSDmofaic.gov.ss visas page re-checked after repeated fetch failures; passport-validity and blank-pages text unchanged.
- SOMevisa.gov.so eVisa terms page re-checked after DNS failures; passport-validity, blank-pages and purpose-scope text unchanged.
- SAUvisitksa.com terms-and-conditions page (actual cited source; ksavisa.sa is not a rule citation) re-checked; 6-month passport-validity rule unchanged.
- PRTPortuguese short-stay-visa, SEF law-text PDF and gov.pt migrant-visa pages re-checked after fetch failures/HTTP 503; all unchanged.
- NPLNepal Immigration arrival-information and visa-on-arrival pages re-checked after repeated fetch failures; unchanged.
- NAMMHAISS visa fact-sheet and FAQ PDFs re-checked after timeouts; 6-month passport validity and 2/3-blank-page split unchanged.
- MOZPAE visa-exemption implementation notice re-checked after repeated fetch failures; unchanged.
- MNGMongolian Embassy (Australia) visa FAQ re-checked after DNS failures; passport-validity and blank-pages text unchanged.
- LSOLesotho Trade Portal visa FAQ re-checked after repeated 404s; blank-pages, onward-ticket and health-certificate text unchanged.
- LCAgovt.lc non-immigrant visa service page re-checked after an HTTP 500; unchanged.
- KHMevisa.gov.kh visa-fee/requirements pages re-checked after repeated fetch failures; unchanged.
- IRNBern embassy passport-validity/blank-pages page re-checked after repeated fetch failures; unchanged. evisa.mfa.ir remains bot-blocked (unrelated to any cited rule).
- HUNHungarian consular-service Schengen residence-permit/visa exemption page re-checked; unchanged.
- GINpaf.gov.gn entry-requirements pages re-checked after HTTP 500s; live and unchanged.
- GABevisa.dgdi.ga e-visa portal re-checked after repeated fetch failures; live and unchanged.
- CRICosta Rica SCIJ legal-text page (Resolucion 484) re-checked after repeated fetch failures; passport-validity and onward-ticket/solvency text unchanged.
- COLMigracion Colombia PIP tourism/business permit page re-checked after a 404; live and unchanged.
- AREu.ae visit-visa, transit-visa and entry-permit pages re-checked after repeated 404s; all live and unchanged.
- AGOsmevisa.gov.ao e-visa portal re-checked after repeated fetch failures; live and unchanged (URL is an official-links reference, not a rule citation).
- TWNBOCA visa-exempt entry page re-read; passport validity, onward-ticket and purpose scope unchanged.
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