Public Directory API v1.0

Schools & Hospitals REST API

A free, open API for accessing schools and hospitals data across Sierra Leone. No signup. No API key. Just start building.

Base URLhttps://techfestapi.vercel.app

Overview

Like the REST Countries API — all read operations are public. Use filtering, pagination, and geolocation to power maps, directories, and education apps.

No authentication

All GET endpoints are open — no API key or signup required.

Geolocation search

Find nearby schools and hospitals using latitude and longitude.

Rich filtering

Filter by type, district, city, emergency services, and text search.

Pagination

Paginated list endpoints with page, limit, and navigation metadata.

1,000requests per 15 minutes per IP · MIT License

Quick Start

Copy any command below and run it in your terminal — no configuration required.

All schools
curl https://techfestapi.vercel.app/api/v1/schools/all
Primary schools
curl https://techfestapi.vercel.app/api/v1/primary-schools/all
Secondary schools
curl https://techfestapi.vercel.app/api/v1/secondary-schools/all
Universities
curl https://techfestapi.vercel.app/api/v1/universities/all
All hospitals
curl https://techfestapi.vercel.app/api/v1/hospitals/all
Search by name
curl https://techfestapi.vercel.app/api/v1/schools/name/Royal
Nearby hospitals
curl "https://techfestapi.vercel.app/api/v1/hospitals/nearby?latitude=6.9271&longitude=79.8612"

Schools (all types)

Combined endpoint for Primary, Secondary, University, and Vocational schools. Use the typed endpoints below when you only need one school category. Admin write operations require X-Admin-Key.

PrimarySecondaryUniversityVocational
GET
Try
/api/v1/schools/all

Get all schools — every type (no pagination)

GET
Try
/api/v1/schools

Get schools with pagination & filters

?page?limit?type?district?city?search
GET
Try
/api/v1/schools/types

Get all school types

GET
Try
/api/v1/schools/nearby

Find nearby schools

?latitude?longitude?radius?type
GET
Try
/api/v1/schools/district/:district

Get schools by district

GET
Try
/api/v1/schools/city/:city

Get schools by city

GET
Try
/api/v1/schools/name/:name

Search schools by name (partial match)

GET
Try
/api/v1/schools/:id

Get school by ID

Primary schools

Read-only endpoints filtered to type: Primary. Same query parameters as other typed school routes — no type filter needed.

GET
Try
/api/v1/primary-schools

Paginated primary schools with filters

?page?limit?district?city?search
GET
Try
/api/v1/primary-schools/all

Get all primary schools (no pagination)

GET
Try
/api/v1/primary-schools/nearby

Find nearby primary schools

?latitude?longitude?radius
GET
Try
/api/v1/primary-schools/district/:district

Get primary schools by district

GET
Try
/api/v1/primary-schools/city/:city

Get primary schools by city

GET
Try
/api/v1/primary-schools/name/:name

Search primary schools by name (partial match)

GET
Try
/api/v1/primary-schools/:id

Get primary school by ID

Secondary schools

Read-only endpoints filtered to type: Secondary.

GET
Try
/api/v1/secondary-schools

Paginated secondary schools with filters

?page?limit?district?city?search
GET
Try
/api/v1/secondary-schools/all

Get all secondary schools (no pagination)

GET
Try
/api/v1/secondary-schools/nearby

Find nearby secondary schools

?latitude?longitude?radius
GET
Try
/api/v1/secondary-schools/district/:district

Get secondary schools by district

GET
Try
/api/v1/secondary-schools/city/:city

Get secondary schools by city

GET
Try
/api/v1/secondary-schools/name/:name

Search secondary schools by name (partial match)

GET
Try
/api/v1/secondary-schools/:id

Get secondary school by ID

Universities& colleges

Read-only endpoints filtered to type: University.

GET
Try
/api/v1/universities

Paginated universities & colleges with filters

?page?limit?district?city?search
GET
Try
/api/v1/universities/all

Get all universities & colleges (no pagination)

GET
Try
/api/v1/universities/nearby

Find nearby universities & colleges

?latitude?longitude?radius
GET
Try
/api/v1/universities/district/:district

Get universities & colleges by district

GET
Try
/api/v1/universities/city/:city

Get universities & colleges by city

GET
Try
/api/v1/universities/name/:name

Search universities & colleges by name (partial match)

GET
Try
/api/v1/universities/:id

Get universities & college by ID

Hospitals endpoints

Hospital directory including emergency services filter and nearby search.

GovernmentPrivateClinicPharmacyLaboratory
GET
Try
/api/v1/hospitals/all

Get all hospitals (no pagination)

GET
Try
/api/v1/hospitals

Get hospitals with pagination & filters

?page?limit?type?district?city?search?emergencyAvailable
GET
Try
/api/v1/hospitals/:id

Get hospital by ID

GET
Try
/api/v1/hospitals/name/:name

Search hospitals by name

GET
Try
/api/v1/hospitals/district/:district

Get hospitals by district

GET
Try
/api/v1/hospitals/city/:city

Get hospitals by city

GET
Try
/api/v1/hospitals/nearby

Find nearby hospitals

?latitude?longitude?radius
GET
Try
/api/v1/hospitals/emergency

Hospitals with emergency services

GET
Try
/api/v1/hospitals/types

Get all hospital types

Query parameters

Available on paginated list endpoints (/api/v1/schools, /api/v1/primary-schools, /api/v1/secondary-schools, /api/v1/universities, and /api/v1/hospitals) and nearby search routes.

Pagination

ParameterDescription
pagePage number (default: 1)
limitItems per page (default: 10, max: 100)

Filtering

ParameterDescription
typeFilter by type (e.g. Secondary, Government)
districtFilter by district
cityFilter by city
searchText search across names and locations
emergencyAvailableHospitals only — true for emergency services

Nearby search

ParameterDescription
latitudeRequired — e.g. 6.9271
longitudeRequired — e.g. 79.8612
radiusOptional radius in meters (default: 5000)

Response format

All successful responses include success, count, and data. Paginated lists add a pagination object. Typed school endpoints also include a schoolType field.

SUCCESS

{
  "success": true,
  "count": 10,
  "data": [
    {
      "_id": "507f1f77bcf86cd799439011",
      "name": "Royal College",
      "type": "Secondary",
      "district": "Colombo",
      "city": "Colombo 07",
      "latitude": 6.9147,
      "longitude": 79.8612
    }
  ]
}

TYPED SCHOOLS

{
  "success": true,
  "schoolType": "Primary",
  "count": 5,
  "data": [...]
}

PAGINATED

{
  "success": true,
  "count": 10,
  "pagination": {
    "currentPage": 1,
    "totalPages": 5,
    "totalItems": 50,
    "hasNextPage": true,
    "hasPrevPage": false
  },
  "data": [...]
}

Code examples

Integrate with JavaScript, Python, React, HTML, or PHP using your configured base URL.

javascript
// All primary schools
const primary = await fetch('https://techfestapi.vercel.app/api/v1/primary-schools/all');
const { data } = await primary.json();

// Paginated universities in a district
const unis = await fetch(
  'https://techfestapi.vercel.app/api/v1/universities?district=Colombo&page=1&limit=20'
);

// Nearby secondary schools
const nearby = await fetch(
  'https://techfestapi.vercel.app/api/v1/secondary-schools/nearby?latitude=6.9271&longitude=79.8612&radius=3000'
);

// Emergency hospitals
const emergency = await fetch('https://techfestapi.vercel.app/api/v1/hospitals/emergency');