39,585 visa pairs — 199 passports × 199 destinations — 15 languages
Get Free API Key • Documentation • RapidAPI • Status
Most visa APIs are either incomplete, expensive, or English-only. We built something better.
| Feature | Visa API | Sherpa | VisaList | IATA Timatic |
|---|---|---|---|---|
| Visa pairs | 39,585 | ~30,000 | ~15,000 | ~40,000 |
| Languages | 15 | 2 | 1 | 5 |
| Starting price | Free | $299/mo | $49/mo | Enterprise |
| Change alerts | Yes | Enterprise | No | Yes |
| Bulk endpoint | Yes | Yes | No | Yes |
| Webhook alerts | Yes | Enterprise | No | Yes |
| Free tier | 3,000 req/mo | No | 100 req/mo | No |
| Official sources | 136 | Undisclosed | ~50 | Airlines |
Get a free API key in 10 seconds at visa.orizn.app, then:
curl -H "x-api-key: YOUR_KEY" \
"https://visa.orizn.app/api/v1/visa?passport=FRA&destination=JPN&lang=en"const res = await fetch(
"https://visa.orizn.app/api/v1/visa?passport=FRA&destination=JPN&lang=en",
{ headers: { "x-api-key": "YOUR_KEY" } }
);
const { data } = await res.json();
console.log(data.requirement); // "visa_free"
console.log(data.visa_free_days); // 90import requests
res = requests.get(
"https://visa.orizn.app/api/v1/visa",
params={"passport": "FRA", "destination": "JPN", "lang": "en"},
headers={"x-api-key": "YOUR_KEY"}
)
data = res.json()["data"]
print(data["requirement"]) # "visa_free"
print(data["visa_free_days"]) # 90{
"data": {
"passport": "FRA",
"destination": "JPN",
"requirement": "visa_free",
"visa_free_days": 90,
"visa_required": false,
"description": "French citizens can enter Japan without a visa for a stay of up to 90 days.",
"documents_required": [
"Valid passport (6 months minimum)",
"Return or onward ticket",
"Proof of accommodation",
"Proof of sufficient funds"
],
"process": [
"No prior formalities required",
"Present valid passport upon arrival",
"Entry stamp will be issued at border control"
],
"tips": [
"Check passport validity before departure",
"Keep a copy of your passport",
"Respect the authorized length of stay",
"Take out travel insurance"
],
"country_info": {
"currency": "Yen (JPY)",
"language": "Japanese",
"timezone": "UTC+9",
"capital": "Tokyo"
},
"verified": true
},
"meta": {
"lang": "en",
"api_version": "1.0",
"coverage": "199 passports x 199 destinations",
"languages": 15
}
}| Method | Endpoint | Description |
|---|---|---|
GET |
/api/v1/visa/check |
Quick check — visa required or not |
GET |
/api/v1/visa/stats |
Database coverage statistics |
| Method | Endpoint | Plan | Description |
|---|---|---|---|
GET |
/api/v1/visa |
Free | Full visa details with documents, process, tips |
GET |
/api/v1/visa/bulk |
Pro | All destinations for a passport in 1 request |
GET |
/api/v1/visa/changes |
Starter | Track visa policy changes over time |
GET |
/api/v1/visa/webhooks |
Business | List your webhook endpoints |
POST |
/api/v1/visa/webhooks |
Business | Create a change alert webhook |
DELETE |
/api/v1/visa/webhooks |
Business | Delete a webhook |
Full API reference: visa.orizn.app/visa-api/dashboard/docs
| Type | Code | Description |
|---|---|---|
| Visa Free | visa_free |
No visa needed, enter with valid passport |
| Visa Required | visa_required |
Must obtain visa from embassy before travel |
| E-Visa | e_visa |
Apply for electronic visa online before travel |
| Visa on Arrival | visa_on_arrival |
Visa issued at the border/airport |
| ETA | eta |
Electronic Travel Authorization required |
| No Admission | no_admission |
Entry prohibited |
All descriptions, documents, process steps, and tips are available in 15 languages:
| Code | Language | Code | Language | Code | Language |
|---|---|---|---|---|---|
fr |
Francais | ja |
Japanese | ar |
Arabic |
en |
English | ko |
Korean | hi |
Hindi |
es |
Espanol | zh |
Chinese | th |
Thai |
pt |
Portugues | ru |
Russian | vi |
Vietnamese |
de |
Deutsch | it |
Italiano | tl |
Filipino |
Free plan: English only. Starter+ plans: all 15 languages.
| Plan | Price | Monthly Limit | Highlights |
|---|---|---|---|
| Free | $0 | 3,000 req | Basic check, English only |
| Starter | $49/mo | 30,000 req | 15 languages, policy changes |
| Pro | $199/mo | 250,000 req | Bulk endpoint, embassy data |
| Business | $699/mo | 1,000,000 req | Webhooks, team keys, SLA |
| Enterprise | Custom | Unlimited | Dedicated support, white-label |
Our data comes from 136 official government sources, including:
- Ministry of Foreign Affairs portals
- Immigration bureau websites
- Official e-visa platforms
- Embassy and consulate publications
- Passport Index datasets
Data is refreshed every 2 weeks with automated change detection. Policy changes trigger webhook alerts for Business+ users.
Each record includes a verified flag:
true= confirmed from official source for this exact passport/destination pairfalse= derived from contextual data, pending exact verification
- Travel apps — Show visa requirements before booking
- Airlines & OTAs — Pre-trip compliance checks
- Corporate travel — Employee travel policy automation
- Immigration platforms — Visa application workflows
- Travel insurance — Risk assessment by destination
- Relocation services — Country comparison tools
Every authenticated response includes rate limit headers:
X-RateLimit-Limit: 3000
X-RateLimit-Remaining: 2847
X-Plan: free
When you exceed your limit, you'll receive a 429 status code. Limits reset monthly.
| Code | Meaning |
|---|---|
400 |
Invalid parameters (bad ISO3 code, unsupported language) |
401 |
Missing API key |
403 |
Invalid key or plan insufficient for this endpoint |
404 |
Passport/destination pair not found |
429 |
Monthly rate limit exceeded |
The full OpenAPI 3.0 spec is available in this repo:
openapi.yaml— Import into Postman, Insomnia, or any OpenAPI-compatible tool
- Website & Free Key
- API Documentation
- RapidAPI Listing
- Status Page
- Changelog
- Terms of Service
- Privacy Policy
- Email: api@orizn.app
- Issues: GitHub Issues
Built by Orizn — Data from 136 official government sources