Can I enter?

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.

More details

These documents can unlock exemptions where the destination publishes them; they never change the base verdict on their own. Dates are checked in your browser against the allowed stay and the destination's passport-validity rule: nothing you type here leaves the check request.

5 free checks a day, no account needed

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

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

191/199

Verified against official sources

827

Rules with source citations

71

Rules re-verified today

538

Official sources checked daily

0d

Median rule age since verification

2026-08-12

Dataset version

API uptime · 30 days

172/199

Official application portals linked

AI-agent visits today

MCP tool calls · all time

Verification activity

  • AGOSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • ARESources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • ATGSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • AUSSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • AUTPassport-validity, blank-pages, onward-ticket, residence-permit-exemption and purpose-scope rules re-read against oesterreich.gv.at and bmeia.gv.at, all unchanged; the flagged content-hash change was a cosmetic page-furniture update.
  • BHRSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • BIHSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • BTNPassport-validity, sustainable-development-fee and purpose-scope rules re-read against doi.gov.bt and bhutan.travel, all unchanged.
  • CANPassport, blank-pages, health, TWOV, residence-permit-exemption and purpose-scope rules re-read against canada.ca, all unchanged; the flagged eta.html hash change was a transient scheduled-maintenance banner.
  • CHLFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • CHNFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • CIVFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • CMRFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • CODFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • COGFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • COLSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • COMFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • CPVTourist-visa duration corrected from a flat 30-day cap to 90 days (extendable once to 180); transit visa corrected to 4 days; added the EASE pre-registration and TSA airport-tax requirement that applies even to visa-exempt travellers. Passport-validity and onward-ticket reconfirmed unchanged.
  • CRISources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • CUBFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • CYPDeep audit: blank-pages, airport-transit-visa and two of three residence-permit-exemption clauses reconfirmed unchanged, and the third clause's excluded-country list corrected to 'except the UK and Ireland' (was 'except Ireland'); passport-validity flagged needs_review because the cited embassy page states two different anchors for the 3-month buffer (beyond the visa's validity in one section, beyond the trip in another) without reconciling them.
  • CZEFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • DEUFull deep audit: every populated field (passport validity, onward ticket, TWOV, residence-permit exemptions, purpose scope where applicable) re-read against live official sources and found accurate.
  • GABSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • GINSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • HUNSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • INDPassport-validity, blank-pages, onward-ticket and purpose-scope rules re-read against indianembassyusa.gov.in and indianvisaonline.gov.in, all unchanged; the flagged hash change was a page-footer date edit.
  • IRNSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • IRQPassport-validity, blank-pages, onward-ticket and purpose-scope rules re-read against UK FCDO and the Iraqi MOFA, all unchanged.
  • KHMSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • LCAPassport-validity and purpose-scope rules re-read against stlucia.org and govt.lc, unchanged.
  • LSOBlank-pages rule flagged needs_review: the cited source states the 3-clean-pages requirement specifically for trade-purpose visas, while the general embassy visa-requirements list has no blank-pages item at all. Passport-validity, onward-ticket, health and purpose-scope reconfirmed unchanged.
  • MDASources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • MNGSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • MOZSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • MUSSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • MYSSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • NAMBlank-pages note corrected: both current MHAISS documents require 3 clean pages uniformly; the prior note's claim of a 2-page exception for online applications was not supported by either source. Passport-validity, onward-ticket, health and purpose-scope reconfirmed unchanged.
  • NGASources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).
  • NPLSources previously flagged unreachable were retried and loaded successfully; live official content matches the stored rules unchanged (prior failures were sandbox/proxy artifacts, not real outages).

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

EndpointPrice
/free/checkfree · 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

Widget docs, options and live example · Developer hub