# Travel Advisories Monitor: US, UK, Canada Levels (`maliksaid/travel-advisories-monitor`) Actor

Official travel advisories and travel warnings from the US State Department, UK FCDO travel advice and Global Affairs Canada. One row per country per government with the travel risk level from 1 to 4, regional warnings, last update date and source link. Monitor mode returns only changed advisories.

- **URL**: https://apify.com/maliksaid/travel-advisories-monitor.md
- **Developed by:** [Malik Said](https://apify.com/maliksaid) (community)
- **Categories:** Travel, AI, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 advisories

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Travel Advisories Monitor: US, UK, Canada Levels

Travel Advisories Monitor collects official government travel advisories and travel warnings. It reads the US State Department, the UK Foreign, Commonwealth and Development Office (FCDO) and Global Affairs Canada.

It returns one row per country per government. Every row has the risk level on one 1 to 4 scale. The original wording stays next to it.

Travel risk teams, travel management companies, insurers and AI agents use it. Schedule it daily with monitor mode on. Each run then returns only the advisories that changed.

### Travel advisories covered: US, UK and Canada

| Government | Source | Advisories (21 October 2026) | Reuse licence |
|---|---|---|---|
| United States | State Department travel advisories feed | 217 | Public domain (US government work) |
| United Kingdom | FCDO foreign travel advice, GOV.UK Content API | 226 | Open Government Licence v3.0 |
| Canada | Global Affairs Canada open data feed | 230 | Open Government Licence - Canada |

A full run gives about 670 rows. Counts change when governments add or merge destinations.

### Travel advisory levels: how they are normalised

| Level | United States | Canada | United Kingdom |
|---|---|---|---|
| 1 | Exercise normal precautions | Exercise normal security precautions | No FCDO advice against travel |
| 2 | Exercise increased caution | Exercise a high degree of caution | FCDO advises against travel to parts of the country only |
| 3 | Reconsider travel | Avoid non-essential travel | FCDO advises against all but essential travel to the whole country |
| 4 | Do not travel | Avoid all travel | FCDO advises against all travel to the whole country |

The US and Canada use four levels, so the mapping is direct. The UK has no numbered levels. The Actor maps FCDO alert statuses as shown above. The `levelLabel` field always keeps the government's own wording.

### Travel advisory data you get

| Field | Meaning |
|---|---|
| `government` | US, UK or CA |
| `governmentName` | Full name of the issuing department |
| `country` | Destination as the government names it |
| `countryCode` | ISO 3166-1 alpha-2 code |
| `level` | Risk level from 1 (lowest) to 4 (do not travel) |
| `levelLabel` | The level in the government's own words |
| `summary` | One short line. US: the opening line of the advisory. UK and Canada: the latest update note |
| `riskCategories` | List of risks the government names, from a fixed set: crime, terrorism, unrest, kidnapping, health, armed-conflict, landmines, wrongful-detention, natural-disaster. US rows only. Empty for UK and Canada rows |
| `hasRegionalWarnings` | True when parts of the country have stricter warnings |
| `regionalWarnings` | Short note on those warnings |
| `lastUpdated` | When the government last updated the advisory, UTC |
| `url` | Link to the full advisory on the official site |
| `changeType` | Monitor mode: `new`, `level_raised`, `level_lowered` or `updated` |
| `previousLevel` | Monitor mode: the level at the last monitor run |
| `licence` | Reuse licence and attribution text for that government |

Sample records for one country, from a test run on 21 October 2026. Some fields are left out for space:

```json
[
  {
    "id": "US:jordan",
    "government": "US",
    "country": "Jordan",
    "countryCode": "JO",
    "level": 3,
    "levelLabel": "Level 3: Reconsider Travel",
    "summary": "Reconsider travel to Jordan due to terrorism and armed conflict. Some areas have increased risk.",
    "hasRegionalWarnings": true,
    "regionalWarnings": "Some areas have increased risk. The advisory page lists them.",
    "lastUpdated": "2026-08-29T00:00:00Z",
    "url": "https://travel.state.gov/content/tsg_aem/us/en/home/international-travel/travel-advisories/destination.jor.html"
  },
  {
    "id": "UK:jordan",
    "government": "UK",
    "country": "Jordan",
    "countryCode": "JO",
    "level": 2,
    "levelLabel": "FCDO advises against all travel to parts of the country",
    "summary": "Addition of information about Iranian missile strikes on Jordan (‘Warnings and insurance’ page)",
    "hasRegionalWarnings": true,
    "lastUpdated": "2026-09-10T11:30:28Z",
    "url": "https://www.gov.uk/foreign-travel-advice/jordan"
  },
  {
    "id": "CA:JO",
    "government": "CA",
    "country": "Jordan",
    "countryCode": "JO",
    "level": 2,
    "levelLabel": "Exercise a high degree of caution",
    "summary": "Latest update: Editorial change",
    "hasRegionalWarnings": true,
    "lastUpdated": "2026-10-16T20:41:42Z",
    "url": "https://travel.gc.ca/destinations/jordan"
  }
]
```

Some fields can be empty. `countryCode` is empty for three entries that cover several territories, such as "French West Indies". `summary` is empty when Canada lists no recent update. `changeType` and `previousLevel` are empty outside monitor mode.

The Actor does not copy the full advisory text. Follow `url` to read it on the official site.

### Travel advisories monitor: how to use it

1. Pick the governments. Leave the list empty for all three.
2. Optional: list countries by ISO code (`JO`, `SA`, `EG`) or English name.
3. Optional: set **Minimum level** to 3 to see only reconsider-travel and do-not-travel advisories.
4. Set **Maximum advisories** to 0 for every country.
5. For alerts, turn on **Monitor mode** and schedule the Actor daily. The first run returns every advisory. Later runs return only advisories whose level or update date changed.

### Travel advisories input options

| Option | Default | Meaning |
|---|---|---|
| Governments | US, UK, CA | Which governments to read |
| Countries | All | ISO codes or English names |
| Minimum level | 1 | Keep advisories at this level or higher |
| Risk categories | All | Keep advisories that name one of these risks. US advisories only |
| Monitor mode | Off | Return only changed advisories |
| Monitor name | `default` | Name of the monitor memory. Use one key per watch list. The old field `stateKey` still works |
| Maximum advisories | 100 | Stop after this many rows. Set 0 for no limit |

### Travel advisories pricing

This Actor uses pay-per-event pricing. These are the prices on 21 October 2026:

| Event | Price (USD) |
|---|---|
| Actor start, one per GB of memory (the default 256 MB counts as one) | $0.02 |
| Each advisory row saved to your dataset | $0.003 ($3 per 1,000) |

Rows skipped by your filters cost nothing. In monitor mode you pay only for changed advisories. Check the Pricing tab for the current prices.

### Travel advisory sources and licences

- Every source is an official public feed. None needs a login or a key.
- The Actor sends a small number of requests. A monitor run skips UK pages whose update date has not changed.
- Each row carries the licence and attribution text of its government. Keep it when you republish the data.
- US government works are in the public domain. UK content is under the Open Government Licence v3.0. Canadian content is under the Open Government Licence - Canada.
- Advisories inform travel decisions. Always read the full advisory on the official site before you travel.
- The data has no personal information.

### Travel advisories input and output example

This input comes from a real run:

```json
{
  "governments": [
    "US",
    "UK",
    "CA"
  ],
  "countries": [
    "JO",
    "SA",
    "EG"
  ],
  "maxItems": 100,
  "minLevel": 1,
  "monitorMode": false,
  "monitorName": "default"
}
```

This is one row from that run's dataset:

```json
{
  "id": "US:egypt",
  "government": "US",
  "governmentName": "United States Department of State",
  "country": "Egypt",
  "countryCode": "EG",
  "level": 2,
  "levelLabel": "Level 2: Exercise Increased Caution",
  "summary": "Exercise increased caution in Egypt due to terrorism, crime, and health. Some areas have increased risk.",
  "hasRegionalWarnings": true,
  "regionalWarnings": "Some areas have increased risk. The advisory page lists them.",
  "lastUpdated": "2025-07-15T00:00:00Z",
  "url": "https://travel.state.gov/content/tsg_aem/us/en/home/international-travel/travel-advisories/destination.egy.html",
  "licence": "Public domain. Work of the United States government (17 U.S.C. 105).",
  "changeType": null,
  "previousLevel": null,
  "scrapedAt": "2026-10-21T10:23:08.126Z"
}
```

### Travel advisories FAQ

#### Which governments does it cover?

It covers the US State Department, the UK FCDO and Global Affairs Canada. Pick one, two or all three.

#### How does it compare UK travel advice with US levels?

The UK has no numbered levels. The Actor maps FCDO alert statuses to the 1 to 4 scale. The `levelLabel` field keeps each government's own wording.

#### Does it return the full advisory text?

No. Each row has a short summary and the official link. Read the full advisory on the official site.

#### Where do the risk categories come from?

From the government's own words. For US advisories the Actor reads the reasons after "due to" in the opening line, such as "due to crime and terrorism", and maps them with fixed keyword rules. The list is empty when the line names no risk. UK and Canada rows carry update notes, so their list is always empty.

#### How do I get an alert when a travel advisory changes?

Turn on monitor mode and schedule the Actor daily. Each later run returns only advisories whose level or update date changed. The `previousLevel` field shows the old level.

#### Can an AI agent use it?

Yes. Agents can find and run it through the Apify MCP server or the Apify API. Every row uses the same fields for all three governments.

### Related Actors

- [Regulator Circulars Monitor](https://apify.com/maliksaid/regulator-circulars-monitor) tracks circulars from the Central Bank of Jordan and the Saudi National Cybersecurity Authority.
- [Gulf Tenders Radar](https://apify.com/maliksaid/gulf-tenders-radar) returns government tenders from Oman, Jordan and the UAE.

### Support

Report a problem in the Issues tab. Include the run link.

# Actor input Schema

## `governments` (type: `array`):

Which governments' travel advisories to read. US is the State Department, UK is the FCDO and CA is Global Affairs Canada. Leave empty for all three.

## `countries` (type: `array`):

Keep only these destination countries. Use ISO codes such as JO, SA and EG, or English names such as Jordan. Leave empty for every country.

## `minLevel` (type: `integer`):

Keep only advisories at this level or higher, on the 1 to 4 scale. 1 keeps everything. 3 keeps only reconsider-travel and do-not-travel advisories.

## `riskCategories` (type: `array`):

Keep only advisories that name at least one of these risks. The Actor reads the reasons the US State Department gives in its opening line, so this filter keeps US advisories only. Leave empty to keep everything.

## `monitorMode` (type: `boolean`):

Return only advisories whose level or update date changed since the last monitor run with the same monitor name. The first monitor run returns every advisory. Schedule the Actor with this on to get a feed of changes.

## `monitorName` (type: `string`):

Name of the memory that monitor mode uses. Use a different name for each separate watch list. Inputs that still send the old field `stateKey` keep working.

## `maxItems` (type: `integer`):

Stop after saving this many advisory rows. The default keeps test runs short and cheap. Set 0 for no limit. All three governments give about 680 rows.

## Actor input object example

```json
{
  "governments": [
    "US",
    "UK",
    "CA"
  ],
  "countries": [],
  "minLevel": 1,
  "riskCategories": [],
  "monitorMode": false,
  "monitorName": "default",
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maliksaid/travel-advisories-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 100 }

# Run the Actor and wait for it to finish
run = client.actor("maliksaid/travel-advisories-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 100
}' |
apify call maliksaid/travel-advisories-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maliksaid/travel-advisories-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ve2vw2nqPHfWelWhw/builds/2fGLNy1ggWKrFKgUg/openapi.json
