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.
Operation ID: getVisaFreeDestinations
Parameters
| Name | In | Type | Required | Constraints | Description |
|---|---|---|---|---|---|
countryCode |
path | string | yes | pattern ^[A-Z]{2}$ |
ISO 3166-1 alpha-2 code of the PASSPORT whose visa-free destinations you want (e.g. AE). A passport, not a market: any well-formed code is accepted (a passport need not be a Wego market) and an unrecognized one returns an honest empty list. The same path segment means a market on the holidays route. |
locale |
query | string | no | length 1..35; default "en" |
Locale for localized names (e.g. en, ar). Defaults to en. |
page |
query | integer | no | 1..20; default 1 |
Page number, 1-based (max 20). Defaults to 1. The list is a bounded registry the API assembles whole, so paging is rarely needed and the cap is low by design. |
pageSize |
query | integer | no | 1..200; default 200 |
Rows per page (1-200). Defaults to 200, which is also the maximum: this is a bounded registry the API walks completely, so the default returns the whole list. pageSize exists only to narrow a long answer, never to force paging. |
Responses
| Status | Description |
|---|---|
200 |
Visa-free destinations for this passport, keyed on countryCode for joining. |
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. |
200 body
| Field | Type | Always present | Description |
|---|---|---|---|
results |
object[] | yes | Visa-free destinations for the passport. |
↳ countryCode |
string | yes | ISO 3166-1 alpha-2 code – the key to join this list on. |
↳ name |
string | yes | Localized country name. |
↳ keyCityCode |
string | no | The country’s principal city code, ready for a flight search. |
↳ currencyCode |
string | no | The destination’s ISO 4217 currency code, when known. |
↳ latitude |
number | no | Latitude of the destination’s principal city, when known. |
↳ longitude |
number | no | Longitude of the destination’s principal city, when known. |
metadata |
object | yes | The passport, the walk’s coverage, and the counts for this read. |
↳ resultCount |
integer | yes | Number of destinations on the current page. |
↳ totalCandidates |
integer | yes | Destinations assembled across every upstream page, pre-pagination. 0 means Wego lists none for this passport – NOT that a visa is required. |
↳ hasMore |
boolean | yes | True when a further page exists. |
↳ passportCountryCode |
string | yes | The passport the list is for. |
↳ upstreamPagesFetched |
integer | yes | How many upstream pages were read to assemble this list. |
↳ coverage |
complete | truncated |
yes | 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. |
Example
curl -s -H "Authorization: Bearer $TOKEN" \
"https://api.wego.com/v1/countries/$COUNTRY_CODE/visa-free-destinations"