Digital nomad visa tracker JSON and CSV API

Two static files, CORS enabled, no key. Fields are read from the files we actually serve.

These are plain static files. There is no key, no sign-up and no rate limit beyond ordinary good manners: cache what you fetch and please do not poll more than once a day, because the files only change when we re-check the data.

  • Licence: CC BY 4.0. Credit Nomad Terminal and link to https://nomadterminal.com/visas/.
  • CORS: every file under /data/ is served with Access-Control-Allow-Origin: *, so you can call it straight from browser JavaScript.
  • Update cadence: Rebuilt whenever a scheme is re-checked against its official page; each row carries its own checked date. Visa rules change often, so confirm with the official source linked in each row before acting.
  • Versioning: files are overwritten in place. The checked date below tells you which version you have.
  • Related: embeds, charts and downloads and the press and media kit.

Endpoints

GET /data/nomad-visa-tracker.json

One object per scheme with country, official name, status, income rule as the government states it, duration, fee, processing time, where to apply, tax note and the tracker link. Amounts keep the source currency and period.

Full URL: https://nomadterminal.com/data/nomad-visa-tracker.json. Format: application/json. 55 records. Last checked 2026-10-02. Described on https://nomadterminal.com/visas/.

const res = await fetch("https://nomadterminal.com/data/nomad-visa-tracker.json");
const data = await res.json();
console.log(Array.isArray(data) ? data.length : Object.keys(data));
Fields (13)
Top-level fields of /data/nomad-visa-tracker.json, read from the served file
FieldTypeExampleFilled
countrystringAlbania55 of 55
iso2stringAL55 of 55
schemestringSingle (Unique) residence permit for digital mobile worke...55 of 55
statusstringopen55 of 55
status_notestringThe Ministry of Interior's live procedure page (mb.gov.al...55 of 55
min_incomestring32000 ALL per month55 of 55
durationstringUp to 1 year the first time, for an alien legally staying...55 of 55
government_feestringService fee for the unique permit for mobile digital work...55 of 55
processing_timestringReview and issue within 4 to 12 weeks from the day of app...55 of 55
apply_atstringOnline by the alien, the employer or an authorised person...55 of 55
tax_treatmentstring55 of 55
checkedstring2026-10-0255 of 55
tracker_urlstringhttps://nomadterminal.com/visas/#albania-unique-permit-di...55 of 55

Empty or null means the source did not state it, not that the answer is zero. Money is in the source's own currency and is never converted. Dates are ISO 8601.

GET /data/nomad-visa-tracker.csv

The same rows as the JSON file, for spreadsheets.

Full URL: https://nomadterminal.com/data/nomad-visa-tracker.csv. Format: text/csv. 55 rows. Last checked 2026-10-02. Described on https://nomadterminal.com/visas/.

const res = await fetch("https://nomadterminal.com/data/nomad-visa-tracker.csv");
const rows = (await res.text()).trim().split(/
?
/);
console.log(rows.length - 1, "rows");
Columns (13)
CSV columns of /data/nomad-visa-tracker.csv, read from the served file
Column
country
iso2
scheme
status
status_note
min_income
duration
government_fee
processing_time
apply_at
tax_treatment
checked
tracker_url

Empty or null means the source did not state it, not that the answer is zero. Money is in the source's own currency and is never converted. Dates are ISO 8601.

How to credit

A visible mention with a link is enough, for example: "Data: Nomad Terminal (nomadterminal.com), CC BY 4.0." The citation below is ready to copy.

Cite this

Data version 2026-10-02. Stable address: https://nomadterminal.com/visas/. Free to reuse under CC BY 4.0 with a link back.