Travel Risk Data API for Developers

Stop maintaining six scrapers. Start shipping product.

Country risk data from the State Department, WHO, World Bank, Freedom House, safety indices, and climate databases. One GET request. Structured JSON back in under 200ms. 195 countries.

Free Requests Every Month
6 Data Sources
No Credit Card
Developer dashboard displaying structured country risk data from six sources

Data from sources you already trust

US State Department
Advisory levels for 195 countries
WHO
Disease risk and active health alerts
World Bank
GDP, inflation, stability indicators
Freedom House
Freedom scores, political rights
Safety Indices
Crime rates, safety scores
Climate Risk DB
Disaster frequency, environmental risk

The problem you know too well

Government travel data is public information trapped behind terrible websites.

Six government data sources, six different formats, six cron jobs to maintain. The State Department wraps HTML inside XML. The WHO publishes PDFs. Freedom House ships Excel files once a year. You spend more time keeping scrapers alive than building features. The enterprise alternative starts at $10K/year and requires a sales call before you see pricing.

Six data sources converging into a single structured API response

DATA AGGREGATION

Six sources. One request. Zero maintenance.

State Department advisories, WHO health alerts, World Bank indicators, Freedom House scores, global safety indices, and climate risk data. All normalized into consistent JSON fields with ISO timestamps. Your integration code stays the same even when upstream sources change their format.

Clean API documentation with typed response examples

DEVELOPER EXPERIENCE

Documentation you read once. Schemas that never surprise you.

Every endpoint returns the same field structure for all 195 countries. TypeScript types included. No pagination gotchas, no undocumented rate limits, no responses that change shape depending on which country you query.

Response Headers
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4987
X-RateLimit-Reset: 1740268800

// Hit your limit?
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Remaining: 0

RATE LIMITS THAT MAKE SENSE

Clear headers, predictable limits, no 2 AM surprises.

X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on every response. Hit your cap? A clean 429 with your current usage and a Retry-After header. No silent failures, no undocumented walls.

Response
{
  "country": {
    "code": "CO",
    "name": "Colombia",
    "slug": "colombia",
    "flag": "🇨🇴"
  },
  "advisory": {
    "level": 2,
    "label": "Exercise Increased Caution",
    "reasons": ["crime", "terrorism"],
    "summary_points": [
      "Violent crime is widespread",
      "Terrorism risk remains present"
    ],
    "headline": "Exercise Increased Caution in Colombia",
    "state_dept_url": "https://travel.state.gov/...",
    "updated_at": "2026-02-18T00:00:00Z"
  },
  "areas": [
    {
      "name": "Arauca",
      "type": "state",
      "admin_level": 1,
      "level": 4,
      "summary": "Do not travel due to armed conflict"
    }
  ],
  "do_not_travel": ["Arauca", "Cauca", "Norte de Santander"],
  "trend": {
    "direction": "stable",
    "since": "2025-06-01",
    "signals": [],
    "freedom_status": "Partly Free"
  },
  "restrictions": {
    "movement_restrictions": false,
    "curfew": false,
    "escort_required": false,
    "details": []
  },
  "conditions": {
    "state_of_emergency": false
  },
  "entry_exit": {
    "visa_required": false,
    "currency": "COP",
    "language": "Spanish",
    "notable_restrictions": []
  }
}

What you actually get

One request. Six data sources. Structured JSON you can easily parse.

Request
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.traveladvisory.io/v1/advisory/CO

Six government and institutional data sources, normalized into one response. No scraping. No cron jobs. No HTML-inside-XML parsing.

Built for developers who ship

What you get when the data just works.

Replace six cron jobs with one call

State Department, WHO, World Bank, Freedom House, safety indices, and climate risk. Combined, normalized, and scored in a single request.

Parse JSON, not HTML inside XML

Typed fields, consistent schemas, and ISO 8601 timestamps. Your parser deserves better than regex on government HTML.

Response times your users will notice

Average response in 147ms. Cold starts under 200ms. We cache aggressively and refresh every 6 hours so your app always serves current data.

Full coverage, not footnotes

Every ISO 3166-1 alpha-2 country code. 195 countries with complete data profiles. No asterisks, no partial coverage.

Always-current data without your maintenance

Data from all sources refreshed every 6 hours. You always get the latest advisory levels, health alerts, and economic indicators without running a single cron job.

Predictable rate limits, not 2 AM surprises

Standard REST conventions. X-RateLimit headers on every response. Clear documentation, not undocumented walls.

Three steps. That is the whole integration.

1

Get your API key

Sign up, grab your key from the dashboard. 90 seconds. No credit card required. 250 free requests to test every endpoint with real data.

2

Make a request

14 endpoints, all documented with examples and response schemas. One header, one query parameter, structured JSON back.

View documentation
3

Get structured JSON back

Country risk profile with data from all six sources, scored and normalized. Parse it, display it, build with it. No SDK required.

The numbers behind the API

Built for speed, coverage, and reliability. Here is what you get.

6
data sources per request
147ms
average response time
195
countries covered
99.5%
uptime SLA

Questions you probably have

Your users deserve current risk data. You deserve your weekends back.

250 free requests. No credit card. See the data before you commit.