# Visa Requirements API
> Look up visa requirements between 199 passports and 199 destinations: whether a passport holder needs a visa, can enter visa-free, gets a visa on arrival, an e-visa or an eTA, or is not admitted — including the allowed length of stay in days. Get a full breakdown for any passport (every destination with category counts and a passport-power mobility score), the reverse view for any destination (which passports may enter), a ranking that compares the mobility of several passports, and the list of supported countries. Countries can be given as ISO-2, ISO-3 or exact name, and every endpoint accepts input via the query string or the request body. Pure server-side data (no third-party upstream), so responses are instant and always available. Ideal for travel-booking flows, relocation and immigration tools, fintech onboarding and travel apps.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/visa-api/..."
```

## Pricing
- **Free** (Free) — 25,000 calls/Mo, 3 req/s
- **Basic** ($6/Mo) — 350,000 calls/Mo, 12 req/s
- **Pro** ($17/Mo) — 2,500,000 calls/Mo, 40 req/s
- **Mega** ($44/Mo) — 12,000,000 calls/Mo, 120 req/s

## Endpoints

### Visa

#### `GET /v1/compare` — Rank passports by mobility

**Parameters:**
- `passports` (query, required, string) — Comma-separated countries (max 20) Example: `DE,US,JP,SG`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/visa-api/v1/compare?passports=DE%2CUS%2CJP%2CSG"
```

#### `GET /v1/countries` — All supported countries

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/visa-api/v1/countries"
```

#### `GET /v1/destination` — Which passports may enter a destination

**Parameters:**
- `country` (query, required, string) — Destination country Example: `JP`
- `category` (query, optional, string) — Filter category Example: `visa_free`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/visa-api/v1/destination?country=JP&category=visa_free"
```

#### `GET /v1/passport` — All destinations for one passport

**Parameters:**
- `country` (query, required, string) — Passport country Example: `DEU`
- `category` (query, optional, string) — Filter: visa_free|visa_on_arrival|e_visa|eta|visa_required|no_admission Example: `visa_required`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/visa-api/v1/passport?country=DEU&category=visa_required"
```

#### `GET /v1/requirement` — Visa rule for a passport → destination

**Parameters:**
- `from` (query, required, string) — Passport country (ISO-2/3 or name) Example: `DE`
- `to` (query, required, string) — Destination country Example: `US`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/visa-api/v1/requirement?from=DE&to=US"
```


---
Marketplace page: https://www.oanor.com/api/visa-api
OpenAPI spec: https://www.oanor.com/api/visa-api/openapi.json
