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

131/199

Verified against official sources

829

Rules with source citations

—

Rules re-verified today

533

Official sources checked daily

1d

Median rule age since verification

2026-10-06

Dataset version

—

API uptime · 30 days

172/199

Official application portals linked

—

AI-agent visits today

—

MCP tool calls · all time

Verification activity

  • AUSHome Affairs transit-without-visa, the embassy passport-validity page and the ETA/eVisitor/Visitor scope were all re-read live and are unchanged; the London High Commission FAQ timed out again so the onward-ticket rule stays unverified.
  • BGRThe Bulgarian MFA visa page returned SOURCE_NOT_AVAILABLE at two fresh tokens and EUR-Lex timed out, so the recorded content change is still unadjudicated and every stored Bulgarian rule is retained unverified.
  • BHSBoth Immigration Department pages read live; six-month passport validity, return/onward ticket, the 8-month maximum visitor stay and the 30-day US and Canadian resident exemptions are unchanged.
  • BRAAll three Itamaraty pages read live; passport valid for the whole stay with two blank pages, Federal Police discretion over round-trip tickets, and the VIVIS/e-Visa 90-day tourism-business-transit scope all unchanged.
  • BRNBoth MFA pages read live; 6-month passport validity on entry, the 72-hour transit pass conditions and its eligible nationalities and AUS/NZL/USA/JPN/GBR residence-permit route all unchanged.
  • DJIevisa.gouv.dj returned CRAWL_EMPTY_CONTENT at two fresh tokens for a seventh day so the flagged change is still unadjudicated; the ANSIE e-Gouvernement page read live confirms the tourism/commerce/transit purpose scope unchanged.
  • EGYThe e-Visa portal fee table now lists USD 30 single entry and USD 65 multiple entry, matching the MOI Passports Administration page, so the inter-channel tourism-visa fee discrepancy recorded on 2026-10-06 is resolved.
  • EGYBoth official Egyptian sources re-read live and neither publishes the prior-visa-holder visa-on-arrival eligibility rule, which still rests on a Ministry of Tourism press statement.
  • ESTAll three Estonian sources read live; 3-months-beyond-departure passport validity, 10-year issue limit, the two-blank-page visa requirement and the Schengen residence-permit exemption are unchanged.
  • FJIAll four cited Fijian pages read live after Tier 1 flagged a content change; 6-month-from-entry passport rule, return/outbound ticket, 3-hour transit threshold and 4-month visitor permit all unchanged.
  • GEOAll four Georgian sources read live, including Ordinance No 280 art. 22: visa validity plus 3 months, two empty pages except via the e-Visa portal, 10-year issue limit, the Ordinance 256 90-in-180 visa/permit-holder exemption and the Ordinance 255 one-full-year visa-free list are unchanged.
  • INDe-Visa eligibility conditions read live in full: six-month passport validity at application, two blank pages, return or onward ticket, and the purpose-specific e-Visa categories all unchanged.
  • ISLisland.is read live and every Icelandic rule it backs is unchanged; only the EUR-Lex-sourced Schengen airport-transit entry stays unverified after a second livecrawl timeout.
  • KAZBoth cited Kazakh portals again returned only navigation shells at two fresh cache-busted tokens, so Tier 1’s recorded content change remains unadjudicated and all four stored rules are retained unverified.
  • LKADepartment of Immigration & Emigration page read live: six-month passport validity, the written onward-ticket assurance and the tourist/business ETA scope are unchanged; the eta.gov.lk transit page returned CRAWL_EMPTY_CONTENT at two tokens but the same Department page independently states the 48-hour transit-visa validity recorded in twov.
  • MYSThe Embassy of Malaysia Paris page read live confirms the 6-month passport rule and the return/third-country ticket requirement unchanged; the New Delhi transit-without-visa page timed out again so the 120-hour TWOV entry stays unverified.
  • NERThe MFA entry page read live confirms the air-transit exemption and the general visa requirement unchanged after Tier 1 flagged a change; the Niger Consulate UK page returned HTTP 503 at two tokens so the 90-day passport rule stays unverified.
  • NORThe UDI visa-free list read live confirms both residence-permit exemptions unchanged; the UDI visitor-visa page returned its citizenship-picker shell again and both EUR-Lex summaries timed out, so passport_validity, onward_ticket and the airport-transit entry stay unverified.
  • QATMOI, Visit Qatar and the Civil Aviation Authority eAIP all read live and confirm the 3-month passport rule, the mandatory onward ticket and the airside-transit exemption; the recommended-versus-required health-insurance conflict persists and Hukoomi returned only its title at two tokens.
  • ROUThe Romanian Border Police page read live and all its rules are unchanged; only the EUR-Lex-sourced Schengen airport-transit entry stays unverified after another livecrawl timeout.
  • SLBBoth Immigration Division pages read live after Tier 1 flagged a change; six-month passport validity, return/onward ticket and the 3-month multiple-entry tourist visa valid one year are unchanged.
  • SWEBoth Migrationsverket pages read live and every Swedish rule they back is unchanged; only the EUR-Lex-sourced Schengen airport-transit entry stays unverified.
  • TCDThe official e-Visa Tchad platform read live after Tier 1 flagged a change; the visa requirement for all non-exempt foreigners and the 7-day minimum / 90-day maximum application window are unchanged.
  • TJKAll three cited Tajik sources failed a live read at two fresh cache-busted tokens each, corroborating Tier 1’s source_unreachable classification; the stored rules are retained unverified.
  • TUNBoth sources read live; the 3-month-at-entry passport rule (page re-dated 15 September 2026 and marked still valid) and Law 68-7 art. 7 airside-transit and 3-month visa-waiver provisions are unchanged.
  • 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
  • ANDEntry rules re-verified against Govern d'Andorra - Travel to Andorra (Ministry of Foreign Affairs)
  • 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)
  • BHSOfficial source content changed — queued for review
  • BLREntry rules re-verified against Ministry of Foreign Affairs of the Republic of Belarus
  • BOLEntry rules re-verified against Ministry of Foreign Affairs of Bolivia (Cancilleria)
  • BRAOfficial source content changed — queued for review
  • BRBEntry rules re-verified against Barbados Immigration Department (online entry-visa portal; travelform.gov.bb hosts the pre-arrival Immigration and Customs Form)
  • BRNOfficial source content changed — queued for review
  • 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

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