The open API platform
built for Nepal
Agriculture prices, trekking permits, health triage, transport booking, job matching and more — all in one ecosystem. Free forever.
# Apply for a trekking permit
curl -X POST /api/v1/tourism/permits/apply \
-H "Content-Type: application/json" \
-d '{"trek_id":"EBC","passport_number":"P123456","nationality":"Foreign"}'
# Response
{
"status": "success",
"data": {
"permit_id": "PRMT-9FFE4A8F",
"trek": "Everest Base Camp",
"fee_npr": 6000,
"status": "PENDING_PAYMENT"
}
}
// Apply for a trekking permit
const response = await fetch('/api/v1/tourism/permits/apply', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
trek_id: 'EBC',
passport_number: 'P123456',
nationality: 'Foreign'
})
});
const { data } = await response.json();
console.log(data.permit_id); // PRMT-9FFE4A8F
import requests
# Apply for a trekking permit
res = requests.post(
'/api/v1/tourism/permits/apply',
json={
'trek_id': 'EBC',
'passport_number': 'P123456',
'nationality': 'Foreign'
}
)
data = res.json()['data']
print(data['permit_id']) # PRMT-9FFE4A8F
All APIs
Everything Nepal needs,
one base URL
Each API is independently usable. Click any endpoint to copy the full URL. GET endpoints open directly in browser.
JWT-based admin authentication. Login to get a Bearer token for protected write endpoints.
/auth/login
Nepali language translation, transliteration, sentiment analysis, NER, and language detection.
Live Kalimati market prices, crop disease analysis, weather forecasts, and fertilizer recommendations.
Active disaster alerts, river flood levels, landslide risk zones, earthquake data, and SMS subscriptions.
Trekking routes, permit applications (MongoDB Atlas), itinerary generation, teahouse availability, and altitude risk.
Live NRB forex rates, remittance calculator, eSewa/Khalti payment initiation, bank branches, and budget categorizer.
AI tutor, syllabus by grade, past exam papers, objective and essay grading for Nepal's curriculum.
Symptom-based triage, nearby health facility finder, first-aid guides, and disease outbreak monitoring.
Application status tracking, document verification, public holidays, ward office locator, and vehicle tax rates.
Job search by category and location, resume skill extraction, candidate–job matching, and foreign demand verification.
City and intercity bus routes, fare calculator with student discounts, seat availability, and ticket booking.
Live NEPSE indices, top gainers & losers, market status, and registered broker list from Nepal Stock Exchange.
Live news headlines scraped from OnlineKhabar, Setopati, Ratopati, and eKantipur RSS feeds in real time.
Live weather for 10 major Nepal cities powered by Open-Meteo — no API key required. Temperature, humidity, wind, condition.
Nepal Oil Corporation fuel prices — petrol, diesel, kerosene, LP gas per litre in NPR. Live scrape with fallback.
Daily gold and silver rates in NPR per tola from FENEGOSIDA. Fine gold (24K), tejabilo, silver. Gold weight converter included.
Bikram Sambat ↔ Gregorian date conversion, today's BS date, Nepal public holidays, and all 12 BS month names.
Nepal national cricket team fixtures, recent results, current squad, and team stats. Powered by ESPNcricinfo.
NEA electricity tariff rates, planned outages, 10 major hydropower plants, and national energy summary.
20+ Nepal festivals — Dashain, Tihar, Holi, Indra Jatra, Buddha Jayanti and more with dates, significance and regions.
Why Nepal API
Built for real-world use
JWT Authentication
Admin-protected write endpoints secured with JSON Web Tokens. Public read endpoints need no key.
MongoDB Atlas Backed
Permits, tickets, jobs, payments, and subscriptions persist in MongoDB Atlas with file fallback for local dev.
Validated & Rate Limited
Every endpoint validated with express-validator. 100 req/15 min rate limiting. Helmet security headers.
Docker Ready
Comes with a production Dockerfile. Drop in your env file and ship.
Live API Fallbacks
External integrations (NRB forex, OpenWeatherMap) gracefully fall back to realistic cached data if unavailable.
Structured Logging
Winston JSON logs + Morgan HTTP access logs. Production-mode uses combined Apache format.
Quick Start
Up in 30 seconds
const res = await fetch('/api/v1/weather/city/kathmandu');
const { data } = await res.json();
console.log(data.temperature_c); // 18.4
console.log(data.condition); // "Partly Cloudy"
console.log(data.humidity_percent);// 72
import requests
r = requests.get('/api/v1/weather/city/kathmandu')
data = r.json()['data']
print(data['temperature_c']) # 18.4
print(data['condition']) # Partly Cloudy
print(data['humidity_percent']) # 72
curl /api/v1/weather/city/kathmandu
# Response
{
"status": "success",
"source": "Open-Meteo (Live)",
"data": {
"city": "Kathmandu",
"temperature_c": 18.4,
"condition": "Partly Cloudy",
"humidity_percent": 72,
"wind_kmh": 12
}
}
const res = await fetch('/api/v1/nepse/live');
const { data } = await res.json();
console.log(data.index); // NEPSE index object
console.log(data.fetchedAt); // "2026-04-29T..."
import requests
r = requests.get('/api/v1/nepse/live')
data = r.json()['data']
print(data['index'])
print(data['fetchedAt'])
curl /api/v1/nepse/live
# Response (live from Nepal Stock Exchange)
{
"status": "success",
"source": "Nepal Stock Exchange (Live)",
"data": {
"index": { "nepseIndex": 2078.34, "change": 12.4 },
"fetchedAt": "2026-04-29T..."
}
}
const res = await fetch('/api/v1/gold/rates');
const { data } = await res.json();
console.log(`Fine gold: NPR ${data.fine_gold_per_tola_npr} / tola`);
console.log(`Silver: NPR ${data.silver_per_tola_npr} / tola`);
// Weight converter
const conv = await fetch('/api/v1/gold/convert?weight_grams=10&karat=22');
const val = (await conv.json()).data;
console.log(`10g 22K = NPR ${val.estimated_value_npr}`);
import requests
data = requests.get('/api/v1/gold/rates').json()['data']
print(f"Fine gold: NPR {data['fine_gold_per_tola_npr']} / tola")
print(f"Silver: NPR {data['silver_per_tola_npr']} / tola")
# Weight converter
conv = requests.get('/api/v1/gold/convert',
params={'weight_grams': 10, 'karat': 22}).json()['data']
print(f"10g 22K = NPR {conv['estimated_value_npr']}")
curl /api/v1/gold/rates
{
"data": {
"fine_gold_per_tola_npr": 148000,
"silver_per_tola_npr": 1750,
"unit": "tola (11.664g)",
"source": "FENEGOSIDA"
}
}
# Gold weight converter
curl "/api/v1/gold/convert?weight_grams=10&karat=22"
const res = await fetch('/api/v1/calendar/today');
const { data } = await res.json();
console.log(data.bs.date); // "2082-01-16" (Bikram Sambat)
console.log(data.bs.month_name); // "Baishakh"
console.log(data.ad.date); // "2026-04-29"
// Convert AD → BS
const cv = await fetch('/api/v1/calendar/convert/ad-to-bs?date=2026-04-14');
const bs = (await cv.json()).data.bs;
console.log(`April 14 = ${bs.date} ${bs.month_name}`);
import requests
data = requests.get('/api/v1/calendar/today').json()['data']
print(data['bs']['date']) # 2082-01-16
print(data['bs']['month_name']) # Baishakh
# Convert AD → BS
r = requests.get('/api/v1/calendar/convert/ad-to-bs',
params={'date': '2026-04-14'})
print(r.json()['data']['bs'])
curl /api/v1/calendar/today
{
"data": {
"bs": { "date": "2082-01-16", "month_name": "Baishakh" },
"ad": { "date": "2026-04-29" }
}
}
# AD → BS conversion
curl "/api/v1/calendar/convert/ad-to-bs?date=2026-04-14"
const res = await fetch('/api/v1/finance/forex/rates');
const { data } = await res.json();
const usd = data.payload[0].rates.find(r => r.currency.iso3 === 'USD');
console.log(`1 USD = NPR ${usd.sell}`);
import requests
data = requests.get('/api/v1/finance/forex/rates').json()['data']
rates = data['payload'][0]['rates']
usd = next(r for r in rates if r['currency']['iso3'] == 'USD')
print(f"1 USD = NPR {usd['sell']}")
curl /api/v1/finance/forex/rates
{
"source": "NRB Live API",
"data": {
"payload": [{
"rates": [
{ "iso3": "USD", "buy": 133.50, "sell": 134.10 },
{ "iso3": "EUR", "buy": 145.20, "sell": 145.85 }
]
}]
}
}
const res = await fetch('/api/v1/news/headlines');
const { data } = await res.json();
data.headlines.forEach(article => {
console.log(`[${article.source}] ${article.title}`);
});
// Or pick a specific outlet
const ok = await fetch('/api/v1/news/source/onlinekhabar');
const ok_data = await ok.json();
import requests
r = requests.get('/api/v1/news/headlines').json()
for article in r['data']['headlines']:
print(f"[{article['source']}] {article['title']}")
# Specific outlet: onlinekhabar, setopati, ratopati, ekantipur
r2 = requests.get('/api/v1/news/source/setopati').json()
curl /api/v1/news/headlines
# Specific Nepali outlet
curl /api/v1/news/source/onlinekhabar
curl /api/v1/news/source/setopati
curl /api/v1/news/source/ratopati
curl /api/v1/news/source/ekantipur
const params = new URLSearchParams({ category: 'IT', location: 'Kathmandu' });
const res = await fetch(`/api/v1/jobs/search?${params}`);
const { data } = await res.json();
data.jobs.forEach(j => console.log(j.title, '—', j.company));
import requests
r = requests.get('/api/v1/jobs/search',
params={'category': 'IT', 'location': 'Kathmandu'})
for job in r.json()['data']['jobs']:
print(job['title'], '—', job['company'])
curl "/api/v1/jobs/search?category=IT&location=Kathmandu"
{
"data": {
"count": 3,
"jobs": [
{ "title": "Backend Engineer", "company": "Kathmandu Tech" }
]
}
}
const res = await fetch('/api/v1/tourism/permits/apply', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
trek_id: 'EBC',
passport_number: 'P123456',
nationality: 'Foreign'
})
});
const { data } = await res.json();
console.log(data.permit_id); // "PRMT-9FFE4A8F"
console.log(data.fee_npr); // 6000
import requests
r = requests.post('/api/v1/tourism/permits/apply', json={
'trek_id': 'EBC',
'passport_number': 'P123456',
'nationality': 'Foreign'
})
data = r.json()['data']
print(data['permit_id']) # PRMT-9FFE4A8F
print(data['fee_npr']) # 6000
curl -X POST /api/v1/tourism/permits/apply \
-H "Content-Type: application/json" \
-d '{"trek_id":"EBC","passport_number":"P123456","nationality":"Foreign"}'
{
"data": {
"permit_id": "PRMT-9FFE4A8F",
"trek": "Everest Base Camp",
"fee_npr": 6000,
"status": "PENDING_PAYMENT"
}
}
Start Today
Build something for Nepal
21 production-ready APIs, zero signup, no credit card. Hit an endpoint and you're live in seconds.