Can I Enter (Visa Rules) API
Free visa and entry requirements API with no key: does a passport need a visa for a destination, with allowed stay, passport validity rules and cited official sources. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Can I Enter (Visa Rules) API?
Can I Enter is a visa requirements API with a free, key-free tier. Given a passport and a destination it returns whether a visa is needed, the permitted length of stay, and an entry-rules block covering passport validity, onward tickets and health requirements, each with its provenance stated.
Visa data is unusually dangerous to get wrong, and this API's design reflects that. Rather than emitting a confidence percentage, it splits provenance in two: `verdict_verification` describes how the visa-free-or-not answer was derived, and `entry_rules_verification` separately describes the curated rules layer with per-field citations to official government pages. Where sources conflict it answers `needs_review` rather than picking a side, and where it has nothing it answers `unknown` — both carrying an instruction to check with the official authority.
The free tier is genuinely free but genuinely small: five requests per IP per day, reported in the rate limit headers. That is enough to build and test an integration, and enough for a low-traffic page that caches, but not for a live checker on a busy site. Note also `defaults_applied`, which lists assumptions the answer rests on — ordinary passport, tourism purpose — because a business trip or a diplomatic passport can produce a different verdict entirely.
Quick facts
- Base URL
https://api.canienter.com- Authentication
- The free tier needs no key or account. Higher-volume tiers are pay-per-request; registered agents get a slightly larger free allowance.
- Rate limit
- 5 requests per IP per day on the free tier, reported in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`.
- Pricing
- Free at five requests a day. Paid per-request tiers exist for higher volume.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Can I Enter (Visa Rules) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Check whether a passport needs a visa for a destination
GET https://api.canienter.com/free/check?passport=NLD&destination=JPN
curl 'https://api.canienter.com/free/check?passport=NLD&destination=JPN'const res = await fetch("https://api.canienter.com/free/check?passport=NLD&destination=JPN");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.canienter.com/free/check?passport=NLD&destination=JPN", timeout=20)
res.raise_for_status()
print(res.json()){
"dataset_version": "2026-08-21",
"evaluated_at": "2026-08-21T08:01:23.503Z",
"request_id": "req_34b0038bb92940f6b91c",
"inputs": {
"passport": "NLD",
"destination": "JPN",
"transit": null,
"purpose": "tourism",
"documents_held": []
},
"passport": {
"code": "NLD",
"name": "Netherlands"
},
"destination": {
"code": "JPN",
"name": "Japan"
},
"requirement": "visa_free",
"requirement_label": "No visa required",
"allowed_stay_days": 90,
"verdict_verification": {
"status": "secondary_source_only",
"source": "aggregated_secondary_matrix",
"matrix_revision": "2026-08-21",
"basis": "The base visa verdict derives from an aggregated visa-requirement matrix, not from a per-verdict official citation. Official sources, where present, attach to entry_rules fields."
},
"entry_rules_verification": {
"status": "verified_official_sources",
"last_verified": "2026-08-16",
"staleness_days": 5,
"basis": "Entry-rules fields curated against official government sources with per-field citations (see the source objects inside entry_rules)."
},
"verification": {
"status": "secondary_source_only",
"last_verified": "2026-08-16",
"staleness_days": 5,
"basis": "Deprecated combined status — the weakest of verdict_verification and entry_rules_verification. Read those blocks for the split provenance."
},
"entry_rules": {
"passport_validity": {
"rule": "valid_for_stay",
"months": null,
"note": "Passport must be valid on entry and for the stay; MOFA/ISA stipulate a valiParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
passport | query | Required | ISO 3166-1 alpha-3 code of the passport's issuing country. NLD |
destination | query | Required | ISO alpha-3 code of the country being entered. JPN |
purpose | query | Optional | `tourism` by default; `business` can change the verdict. business |
transit | query | Optional | Alpha-3 code of a country transited en route, for transit-visa rules. QAT |
residence_permits_of / visas_of | query | Optional | Permits or visas already held, which can waive a requirement. USA,SCHENGEN |
Response fields
requirementstring- The verdict: `visa_free`, `visa_on_arrival`, `e_visa`, `eta`, `visa_required`, `no_admission`, `unknown` or `needs_review`.
requirement_labelstring- Human-readable form of the verdict, ready to display.
allowed_stay_daysinteger- Permitted stay in days where the verdict is visa-free or visa-on-arrival.
verdict_verificationobject- How the visa verdict was derived, with `status`, `source` and a plain-English `basis`. Never claimed as officially verified.
entry_rules_verificationobject- Provenance of the curated rules layer: `verified_official_sources`, `stale`, `not_curated` or `needs_review`, with `last_verified` and `staleness_days`.
entry_rulesobject- Passport validity minimum, blank-page requirement, onward-ticket rule, yellow-fever certificate and other health requirements, with citations.
inputs / defaults_appliedobject / array- What you asked and what was assumed — ordinary passport, tourism purpose — so nothing is silently inferred.
dataset_version / evaluated_at / request_idstring- Dataset revision, evaluation time and a request identifier for reproducibility and support.
passport / destinationobject- Resolved country codes and names for both ends of the query.
What you can build with the Can I Enter (Visa Rules) API
- Show entry requirements on a travel booking or guide page
- Warn a traveller their passport validity is too short for a destination
- Surface onward-ticket and vaccination requirements before departure
- Check transit visa rules for a connecting itinerary
- Add a visa checker to a country guide with caching
Common errors and how to fix them
429 Too Many Requests
The free tier allows five requests per IP per day.
Fix: Read `X-RateLimit-Remaining` before calling. Cache aggressively — rules change on the scale of months, not minutes.
requirement is `unknown` or `needs_review`
There is no data, or official sources conflict.
Fix: Do not fall back to a guess. Both states carry `action: check_official_authority`; show that message rather than an inferred verdict.
The verdict does not match a government website
`verdict_verification` states plainly that the base verdict comes from an aggregated secondary matrix.
Fix: Always present the official-source link from `entry_rules` and the response's own disclaimer. Never show a visa verdict as authoritative on its own.
A business trip gets the wrong answer
`purpose` defaults to tourism, as `defaults_applied` records.
Fix: Pass `purpose=business` explicitly. Business and tourism requirements genuinely differ for many country pairs.
Can I Enter (Visa Rules) API — frequently asked questions
Is the visa requirements API free?
There is a free tier needing no key or account, capped at five requests per IP per day. That suits development, testing and a cached low-traffic page; higher volume moves to a paid per-request tier.
How reliable is the data?
The API is deliberately explicit about this. The base visa verdict derives from an aggregated secondary matrix and is never claimed as officially verified, while the entry-rules layer carries per-field citations to official sources with a `last_verified` date. Treat it as guidance and always link the official source.
What does needs_review mean?
That official sources disagree with each other. Rather than picking one and presenting it as fact, the API returns `needs_review` with an instruction to check with the official authority — which is the honest answer when the sources conflict.
Does it handle transit and residence permits?
Yes. A `transit` parameter applies transit-visa rules for a connecting country, and `residence_permits_of` and `visas_of` account for documents already held, which waive the requirement for many country pairs.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Flag Emoji Generator
Turn ISO 3166-1 country codes into flag emoji, decode flags back into codes, or browse and copy every country flag with its Unicode code points.
Time Duration Calculator
Add or subtract hours, minutes and seconds, or sum a list of durations into a total shown in h:m:s and in total seconds. Free and 100% in-browser.
Can I Enter (Visa Rules) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.