---
title: "Visa-free destinations for a passport"
method: GET
path: "/v1/countries/{countryCode}/visa-free-destinations"
tags: ["Countries"]
---

# Visa-free destinations for a passport

`GET /v1/countries/{countryCode}/visa-free-destinations`

Where a passport can travel without a visa, as one complete list (the API walks the upstream's pages). An inspiration list, not a visa rule: it carries no visa type and no permitted stay, and a country's absence means absent from Wego's list, never that a visa is required.

## Path parameters

- `countryCode` string, required

## Query parameters

- `locale` string
- `page` integer
- `pageSize` integer

## Response `200`

Visa-free destinations for this passport, keyed on countryCode for joining.

- object
  - `results` object[], required — Visa-free destinations for the passport.
    - `countryCode` string, required — ISO 3166-1 alpha-2 code – the key to join this list on.
    - `name` string, required — Localized country name.
    - `keyCityCode` string — The country's principal city code, ready for a flight search.
    - `currencyCode` string — The destination's ISO 4217 currency code, when known.
    - `latitude` number — Latitude of the destination's principal city, when known.
    - `longitude` number — Longitude of the destination's principal city, when known.
  - `metadata` object, required — The passport, the walk's coverage, and the counts for this read.
    - `resultCount` integer, required — Number of destinations on the current page.
    - `totalCandidates` integer, required — Destinations assembled across every upstream page, pre-pagination. 0 means Wego lists none for this passport – NOT that a visa is required.
    - `hasMore` boolean, required — True when a further page exists.
    - `passportCountryCode` string, required — The passport the list is for.
    - `upstreamPagesFetched` integer, required — How many upstream pages were read to assemble this list.
    - `coverage` 'complete' | 'truncated', required — `complete` when the walk ended on a short upstream page. `truncated` when the page cap stopped it on a full page, so totalCandidates is a FLOOR and destinations may exist that this response does not carry. At exactly the cap (200) a complete list also reports `truncated`, since telling the two apart would cost another upstream page.

## Other responses

- `400` — Malformed passport country code, page or pageSize.
- `401` — Missing or invalid bearer token.
- `429` — Rate limit exceeded; retry after the `Retry-After` seconds.
- `502` — The upstream destinations service returned an invalid response.
- `503` — The destinations service is temporarily unavailable; retry after the `Retry-After` seconds.

---

[API](https://skmtc.net/wego/apis/wego-api.md) · [All operations](https://skmtc.net/wego/apis/wego-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wego/wego-api/revisions/e5d7af502419/schema)
