EAMMU TRAVEL API — VERSION 1.0

API Documentation

The Eammu Travel API provides real-time visa requirements, passport index data, embassy locations, airport information, and step-by-step visa guides for 195+ countries. Built for travel apps, visa consultancies, and developers.

195+
Countries
3.9K+
Airports
10K+
Embassies
99.9%
Uptime
10
Endpoints
CHANGELOGLatest update

✦ Visa Guides are now live

6 static guide pages under /api/v1/visa-guides/. The Passport API now returns a visa_guide_url field that links directly to the relevant guide based on visa status.

BASE URL
https://api.eammu.com

⚡ Quick Start

Get your first API response in under 60 seconds.

1
Get a free API key
No credit card required. 100 requests/day free forever.
Get Free API Key →
2
Make your first request
Check visa requirements for Bangladesh → Japan:
curl "https://api.eammu.com/api/v1/passport?from=Bangladesh&to=Japan&api_key=eak_your_key"
3
Read the response
You'll get visa_status and a visa_guide_url ready to use:
{
  "visa_status": "e-visa",
  "visa_guide_url": "https://api.eammu.com/api/v1/visa-guides/e-visa",
  "from": { "name": "Bangladesh", "code": "bd" },
  "to":   { "name": "Turkey",     "code": "tr" }
}
4
Redirect to the guide
Use visa_guide_url to show a full step-by-step visa guide to your user. The guide URL already encodes the visa type — no extra param needed.

🔑 Authentication

Every request requires an API key. Pass it as a header (recommended) or query parameter.

Header — Recommended
x-api-key: eak_your_key
Query Parameter
?api_key=eak_your_key
⚠️ Never expose your API key in client-side code. Use server-side routes or environment variables.

🔄 How It Works

The passport and visa-guides endpoints are designed to work together in a two-step flow. Start with the Passport API to get visa requirements, then use the returnedvisa_guide_urlto show users a full guide for their specific visa type.

1
User selects passport + destination
Your app calls the Passport API with ?from= and ?to=
GET /api/v1/passport?from=Bangladesh&to=Turkey&api_key=eak_…
2
API returns visa_status + visa_guide_url
The response tells you the visa type and gives you the exact guide URL to use.
{
  "visa_status":    "e-visa",
  "visa_guide_url": "https://api.eammu.com/api/v1/visa-guides/e-visa"
}
3
Your app redirects to the guide page
Redirect the user to the visa guide URL — either as an API call (to render your own UI) or directly as a page in your app atyourapp.com/visa-guides/e-visa.
GET /api/v1/visa-guides/e-visa   → static JSON guide
4
User sees full step-by-step visa guide
The guide returns structured JSON: requirements checklist, step-by-step process, fees, processing time, tips, and related links. Render it however suits your UI.
VISA STATUS → GUIDE URL MAPPING
visa_status VALUEvisa_guide_url
visa requiredhttps://api.eammu.com/api/v1/visa-guides/visa-required
e-visahttps://api.eammu.com/api/v1/visa-guides/e-visa
visa on arrivalhttps://api.eammu.com/api/v1/visa-guides/visa-on-arrival
etahttps://api.eammu.com/api/v1/visa-guides/eta
no admissionhttps://api.eammu.com/api/v1/visa-guides/no-admission
30 / 60 / 90…null — visa-free has no guide URL
not_applicablenull — same country / territory
GETTRAVEL
/api/v1/passport

Core travel intelligence endpoint. Pass a passport country to get visa requirements for all destinations — or add ?to= for a single pair. The response includes a visa_guide_url field that points to the relevant visa-guides page, and a full grouped summary when no destination is specified.

PARAMETERS
PARAMETERTYPEREQUIREDDESCRIPTION
fromstringrequiredPassport (origin) country name. Example: Bangladesh
tostringoptionalDestination country name. Omit to receive all destinations grouped by visa type.
api_keystringrequiredYour API key. Can also be passed via x-api-key header.
EXAMPLE URLS
Single destination
https://api.eammu.com/api/v1/passport?from=Bangladesh&to=Japan&api_key=YOUR_KEY
All destinations
https://api.eammu.com/api/v1/passport?from=Bangladesh&api_key=YOUR_KEY
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/passport?from=Bangladesh&to=Japan&api_key=eak_your_key"
RESPONSE SCHEMA
// Single destination — GET /api/v1/passport?from=Bangladesh&to=Turkey
{
  "from": {
    "name": "Bangladesh",
    "flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg",
    "code": "bd"
  },
  "to": {
    "name": "Turkey",
    "flag": "https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f7.svg",
    "code": "tr"
  },
  "visa_status": "e-visa",
  "visa_guide_url": "https://api.eammu.com/api/v1/visa-guides/e-visa"
}
RESPONSE HEADERS
X-RateLimit-RemainingNumber of requests remaining in the current period
X-PlanYour current plan: free | pro | enterprise
TRY IT LIVE
▶ LIVE PLAYGROUND
api_key
from
to
GETDATA
/api/v1/countries

Get a full list of countries with flags and ISO codes. Supports partial name search and code filtering.

PARAMETERS
PARAMETERTYPEREQUIREDDESCRIPTION
namestringoptionalPartial country name, case-insensitive. Example: bang
codestringoptionalISO 2-letter code. Example: bd
api_keystringrequiredYour API key
EXAMPLE URLS
Search by name
https://api.eammu.com/api/v1/countries?name=Bangladesh&api_key=YOUR_KEY
Search by code
https://api.eammu.com/api/v1/countries?code=bd&api_key=YOUR_KEY
All countries
https://api.eammu.com/api/v1/countries?api_key=YOUR_KEY
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/countries?name=Bangladesh&api_key=eak_your_key"
RESPONSE SCHEMA
JSON
{
  "total": 1,
  "countries": [
    {
      "country": "Bangladesh",
      "flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg",
      "code": "bd"
    }
  ]
}
TRY IT LIVE
▶ LIVE PLAYGROUND
api_key
name
code
GETLOCATION
/api/v1/embassies

Find embassy and consulate locations worldwide. Filter by operator country, host country, or city.

PARAMETERS
PARAMETERTYPEREQUIREDDESCRIPTION
operatorstringoptionalEmbassy home country. Example: Bangladesh
countrystringoptionalCountry where embassy is located. Example: Japan
citystringoptionalCity filter. Example: Tokyo
api_keystringrequiredYour API key
EXAMPLE URLS
Bangladesh embassies abroad
https://api.eammu.com/api/v1/embassies?operator=Bangladesh&api_key=YOUR_KEY
Embassies in Japan
https://api.eammu.com/api/v1/embassies?country=Japan&api_key=YOUR_KEY
Filter by city
https://api.eammu.com/api/v1/embassies?city=Tokyo&api_key=YOUR_KEY
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/embassies?operator=Bangladesh&country=Japan&api_key=eak_your_key"
RESPONSE SCHEMA
JSON
{
  "total": 1,
  "embassies": [
    {
      "operator": "Bangladesh",
      "country": "Japan",
      "city": "Tokyo",
      "type": "embassy",
      "website": "https://bdembassytokyo.org",
      "latitude": 35.6762,
      "longitude": 139.6503
    }
  ]
}
TRY IT LIVE
▶ LIVE PLAYGROUND
api_key
operator
country
city
GETTRANSPORT
/api/v1/airports

Search global airport data including IATA codes, coordinates, timezone, runway info, and direct flight counts.

PARAMETERS
PARAMETERTYPEREQUIREDDESCRIPTION
countrystringoptionalFilter by country name. Example: Bangladesh
citystringoptionalFilter by city. Example: Dhaka
codestringoptionalIATA code. Example: DAC
api_keystringrequiredYour API key
EXAMPLE URLS
By IATA code
https://api.eammu.com/api/v1/airports?code=DAC&api_key=YOUR_KEY
By country
https://api.eammu.com/api/v1/airports?country=Bangladesh&api_key=YOUR_KEY
By city
https://api.eammu.com/api/v1/airports?city=Dhaka&api_key=YOUR_KEY
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/airports?code=DAC&api_key=eak_your_key"
RESPONSE SCHEMA
JSON
{
  "total": 1,
  "airports": [
    {
      "code": "DAC",
      "name": "Hazrat Shahjalal International Airport",
      "city": "Dhaka",
      "country": "Bangladesh",
      "lat": "23.8433",
      "lon": "90.3978",
      "tz": "Asia/Dhaka",
      "direct_flights": "37",
      "runway_length": "10500"
    }
  ]
}
TRY IT LIVE
▶ LIVE PLAYGROUND
api_key
country
city
code
GETUTILITY
/api/v1/suggest

Autocomplete country names with flags and ISO codes. Ideal for search inputs and dropdowns.

PARAMETERS
PARAMETERTYPEREQUIREDDESCRIPTION
qstringrequiredSearch query (min 1 character). Example: ban
api_keystringrequiredYour API key
EXAMPLE URLS
Autocomplete 'ban'
https://api.eammu.com/api/v1/suggest?q=ban&api_key=YOUR_KEY
Autocomplete 'uni'
https://api.eammu.com/api/v1/suggest?q=uni&api_key=YOUR_KEY
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/suggest?q=ban&api_key=eak_your_key"
RESPONSE SCHEMA
JSON
{
  "suggestions": [
    {
      "name": "Bangladesh",
      "flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg",
      "code": "bd"
    },
    {
      "name": "Barbados",
      "flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e7.svg",
      "code": "bb"
    }
  ]
}
TRY IT LIVE
▶ LIVE PLAYGROUND
api_key
q
✦ NEWVisa Guide Pages

Static guide endpoints — no parameters required

These endpoints return static JSON content describing a visa type: requirements, step-by-step process, fees, processing time, and tips. They are triggered automatically via the visa_guide_url field in Passport API responses. You can call them directly or render their content in your app's guide pages.No api_key required — these are public static info endpoints.

GETVISA GUIDESTATIC
/api/v1/visa-guides/e-visa

Static guide page returned when a passport holder's visa_status is e-visa. Explains what e-visa is, requirements, step-by-step application process, typical fees, and processing time.

TRIGGERED WHENvisa_status = "e-visa"in Passport API response
No parameters required. No API key needed. Call with a plain GET request.
EXAMPLE URL
https://api.eammu.com/api/v1/visa-guides/e-visa
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/visa-guides/e-visa?"
RESPONSE
JSON — static content
{
  "visa_type":       "e-visa",
  "label":           "E-Visa",
  "color":           "#00C2FF",
  "description":     "Apply online before travel. No embassy visit required.",
  "requirements": [
    "Valid passport (minimum 6 months validity)",
    "Digital passport photo (JPEG, white background, under 1MB)",
    "Valid email address for confirmation",
    "Credit or debit card for online payment",
    "Return or onward flight ticket",
    "Hotel booking confirmation",
    "Proof of sufficient funds"
  ],
  "steps": [
    "Visit the official e-visa portal of your destination country.",
    "Create an account or proceed as a guest applicant.",
    "Fill out the online application form.",
    "Upload required documents.",
    "Pay the e-visa fee online.",
    "Wait for approval email (usually 24–72 hours).",
    "Download and print your e-visa approval letter.",
    "Present the printed e-visa at the port of entry."
  ],
  "fee":             "USD 20–80 (varies by country and nationality)",
  "processing_time": "24–72 hours (some instant approvals)",
  "validity":        "Usually 30–90 days from approval date",
  "tips": [
    "Only apply through the official government portal.",
    "Apply at least 72 hours before your travel date.",
    "Print multiple copies of your e-visa approval.",
    "Check if your nationality is eligible before applying."
  ],
  "related_links": {
    "check_passport":  "https://api.eammu.com/api/v1/passport",
    "country_details": "https://api.eammu.com/api/v1/countries"
  }
}
GETVISA GUIDESTATIC
/api/v1/visa-guides/eta

Static guide returned when visa_status is eta. Covers Electronic Travel Authorization requirements, how to apply, validity, and which countries require it.

TRIGGERED WHENvisa_status = "eta"in Passport API response
No parameters required. No API key needed. Call with a plain GET request.
EXAMPLE URL
https://api.eammu.com/api/v1/visa-guides/eta
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/visa-guides/eta?"
RESPONSE
JSON — static content
{
  "visa_type":       "eta",
  "label":           "Electronic Travel Authorization",
  "color":           "#A855F7",
  "description":     "An ETA is an electronic entry requirement linked to your passport. Must be obtained before boarding.",
  "requirements": [
    "Valid passport (min 6 months validity)",
    "Valid email address",
    "Credit or debit card",
    "Return flight ticket"
  ],
  "steps": [
    "Go to the official ETA portal of the destination country.",
    "Enter your passport details and travel dates.",
    "Pay the ETA fee.",
    "Receive approval by email (usually within minutes).",
    "ETA is linked electronically — no printout required in most cases."
  ],
  "fee":             "USD 7–30 (varies by country)",
  "processing_time": "Minutes to 72 hours",
  "validity":        "Usually 1–5 years or multiple trips",
  "tips": [
    "Apply well in advance — some processing can take up to 72 hours.",
    "ETA is linked to your passport number, so carry the same passport you applied with.",
    "Confirm ETA eligibility for your specific nationality."
  ],
  "related_links": {
    "check_passport":  "https://api.eammu.com/api/v1/passport",
    "country_details": "https://api.eammu.com/api/v1/countries"
  }
}
GETVISA GUIDESTATIC
/api/v1/visa-guides/visa-on-arrival

Static guide for visa-on-arrival destinations. Explains what to bring to the port of entry, fees to expect, and tips to avoid delays.

TRIGGERED WHENvisa_status = "visa on arrival"in Passport API response
No parameters required. No API key needed. Call with a plain GET request.
EXAMPLE URL
https://api.eammu.com/api/v1/visa-guides/visa-on-arrival
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/visa-guides/visa-on-arrival?"
RESPONSE
JSON — static content
{
  "visa_type":       "visa on arrival",
  "label":           "Visa on Arrival",
  "color":           "#00E5A0",
  "description":     "Get your visa stamp at the airport or border crossing upon arrival. No advance application required.",
  "requirements": [
    "Valid passport (min 6 months validity)",
    "Passport-size photo (usually 1–2 copies)",
    "Completed arrival card (available on plane or at border)",
    "Cash for visa fee (USD usually accepted)",
    "Return or onward ticket",
    "Proof of accommodation"
  ],
  "steps": [
    "Arrive at the port of entry.",
    "Proceed to the Visa on Arrival counter.",
    "Submit your passport, photo, and arrival card.",
    "Pay the visa fee in cash.",
    "Receive your visa stamp and proceed to immigration."
  ],
  "fee":             "USD 20–60 (varies by country)",
  "processing_time": "10–30 minutes at the counter",
  "validity":        "Usually 14–30 days",
  "tips": [
    "Carry exact change in USD — not all counters give change.",
    "Queues can be long; arrive early or use priority lanes.",
    "Some countries require a separate arrival card — fill it out on the plane."
  ],
  "related_links": {
    "check_passport":  "https://api.eammu.com/api/v1/passport",
    "country_details": "https://api.eammu.com/api/v1/countries"
  }
}
GETVISA GUIDESTATIC
/api/v1/visa-guides/no-admission

Static guide returned when entry is not permitted. Explains what no-admission means, why it occurs, and what alternatives may exist.

TRIGGERED WHENvisa_status = "no admission"in Passport API response
No parameters required. No API key needed. Call with a plain GET request.
EXAMPLE URL
https://api.eammu.com/api/v1/visa-guides/no-admission
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/visa-guides/no-admission?"
RESPONSE
JSON — static content
{
  "visa_type":    "no admission",
  "label":        "No Admission",
  "color":        "#FF3B5C",
  "description":  "Entry to this country is not permitted for your passport. This may be due to diplomatic restrictions or bilateral agreements.",
  "reasons": [
    "Absence of diplomatic relations between the two countries.",
    "Active travel ban or sanction.",
    "Bilateral travel restriction agreement."
  ],
  "alternatives": [
    "Check if entry is possible via a third country or special permit.",
    "Contact the destination country's embassy for exceptions.",
    "Consult your country's foreign affairs ministry for guidance."
  ],
  "tips": [
    "This restriction is at the country level — individual circumstances rarely override it.",
    "Attempting to enter may result in deportation and future travel bans.",
    "Restrictions can change — verify with official sources before planning."
  ],
  "related_links": {
    "check_passport":  "https://api.eammu.com/api/v1/passport",
    "embassy_lookup":  "https://api.eammu.com/api/v1/embassies"
  }
}
GETVISA GUIDESTATIC
/api/v1/visa-guides/visa-free

Static guide for visa-free travel. Explains what visa-free access means, common stay limits, and what travelers still need to carry.

TRIGGERED WHENvisa_status = "number (e.g. 30, 90)"in Passport API response
No parameters required. No API key needed. Call with a plain GET request.
EXAMPLE URL
https://api.eammu.com/api/v1/visa-guides/visa-free
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/visa-guides/visa-free?"
RESPONSE
JSON — static content
{
  "visa_type":       "visa_free",
  "label":           "Visa Free",
  "color":           "#FEBC2E",
  "description":     "No visa required. You can enter and stay for the permitted number of days without any prior application.",
  "requirements": [
    "Valid passport (min 6 months validity beyond your stay)",
    "Return or onward flight ticket",
    "Proof of sufficient funds",
    "Hotel booking or proof of accommodation"
  ],
  "steps": [
    "Arrive at the destination country's port of entry.",
    "Proceed to immigration with your passport.",
    "Present your return ticket and accommodation proof if asked.",
    "Receive your entry stamp and note the permitted stay duration."
  ],
  "tips": [
    "Visa-free does not mean unlimited stay — respect the max days allowed.",
    "Overstaying can result in fines, deportation, or future bans.",
    "Some countries grant visa-free access but still require travel insurance."
  ],
  "related_links": {
    "check_passport":  "https://api.eammu.com/api/v1/passport",
    "country_details": "https://api.eammu.com/api/v1/countries"
  }
}
GETVISA GUIDESTATIC
/api/v1/visa-guides/visa-required

Static guide for visa-required destinations. Covers embassy application steps, document checklist, and typical processing times.

TRIGGERED WHENvisa_status = "visa required"in Passport API response
No parameters required. No API key needed. Call with a plain GET request.
EXAMPLE URL
https://api.eammu.com/api/v1/visa-guides/visa-required
CODE EXAMPLES
curl "https://api.eammu.com/api/v1/visa-guides/visa-required?"
RESPONSE
JSON — static content
{
  "visa_type":       "visa required",
  "label":           "Visa Required",
  "color":           "#FF6B35",
  "description":     "You must obtain a visa from the destination country's embassy or consulate before travel.",
  "requirements": [
    "Valid passport (min 6 months validity)",
    "Completed visa application form",
    "Recent passport-size photographs",
    "Bank statements (last 3–6 months)",
    "Confirmed flight itinerary",
    "Hotel booking or invitation letter",
    "Travel insurance (some countries require it)",
    "Visa fee payment receipt"
  ],
  "steps": [
    "Locate the nearest embassy or consulate of your destination country.",
    "Download and complete the official visa application form.",
    "Gather all required supporting documents.",
    "Book an appointment at the embassy (if required).",
    "Submit your application and pay the visa fee.",
    "Wait for processing (typically 5–15 business days).",
    "Collect your passport with visa stamp or denial letter.",
    "Travel within the visa validity period."
  ],
  "fee":             "USD 30–200 (varies by country and visa type)",
  "processing_time": "5–15 business days",
  "validity":        "Varies — typically 30–180 days",
  "tips": [
    "Apply well in advance — at least 4–6 weeks before travel.",
    "Double-check document requirements on the official embassy website.",
    "Use the embassy locator to find the nearest office.",
    "Some countries offer express processing for an additional fee."
  ],
  "related_links": {
    "check_passport":  "https://api.eammu.com/api/v1/passport",
    "embassy_lookup":  "https://api.eammu.com/api/v1/embassies"
  }
}

⚠️ Error Codes

All errors return JSON with an error field.

CODESTATUSDESCRIPTION
400Bad RequestMissing required parameter. Example: ?from= is required on the passport endpoint.
401UnauthorizedMissing or invalid API key.
403ForbiddenAccount suspended. Contact support@eammu.com.
404Not FoundCountry or passport not found. Check spelling — names are case-insensitive.
429Too Many RequestsRate limit exceeded. Upgrade plan or wait for daily reset.
500Internal ErrorServer error. Try again or contact support.
ERROR RESPONSE FORMAT
{
  "error": "Passport 'xyz' not found"
}

📋 Visa Status Values

The visa_status field in Passport API responses is one of the following. Numeric values (30, 60, 90…) indicate visa-free entry for that many days.

🔴visa requiredMust apply at embassy/consulate before travel
💻e-visaApply online before travel — no embassy visit needed
visa on arrivalObtain visa at port of entry on arrival
📋etaElectronic Travel Authorization — apply online before boarding
🚫no admissionEntry not permitted for this passport
🆓30 / 60 / 90…Visa-free — number indicates max stay in days
not_applicableSame country or special territory — not applicable

📊 Rate Limits

Rate limit info is returned in response headers on every request.

$0
Free
100 req/day
MOST POPULAR
$9/mo
Pro
10,000 req/mo
Custom
Enterprise
Unlimited
RATE LIMIT HEADERS
X-RateLimit-RemainingRequests remaining in current period
X-PlanYour current plan: free | pro | enterprise