The Lanta Guide API
Read-only JSON API. No authentication, no rate limits. Responses are UTF-8 encoded JSON. CORS headers are included on all responses so you can call from a browser directly.
| Parameter | Type | Default | Description |
|---|---|---|---|
folder | string | — | Category: restaurants cafes bars resorts beaches diving tours wellness shopping cooking-classes services places markets mainland |
area | string | — | Geographic area, e.g. Klong Dao |
limit | integer | 50 | Max results (max 200) |
offset | integer | 0 | Pagination offset |
GET /api/places?folder=cafes&area=Klong+Khong&limit=2
[
{
"id": 42,
"title": "Shanti Cafe",
"folder": "cafes",
"area": "Klong Khong",
"lat": 7.481,
"lng": 99.031,
"description": "Chill beachside cafe with smoothie bowls…",
"updated_at": "2025-11-02T08:12:00.000Z"
}
]GET /api/places/42
{
"id": 42,
"title": "Shanti Cafe",
"folder": "cafes",
"folders": ["cafes", "wellness"],
"area": "Klong Khong",
"lat": 7.481,
"lng": 99.031,
"description": "Chill beachside cafe…",
"photos": [
"https://files.lanta.tv/places/42/photo1.jpg"
],
"contacts": [
{ "type": "phone", "value": "+66812345678" },
{ "type": "url", "value": "https://facebook.com/shanticafe" }
],
"hours": {
"mon": "08:00–18:00",
"tue": "08:00–18:00",
"sat": "09:00–16:00",
"sun": "closed"
},
"tags": ["breakfast", "vegan", "wifi"],
"updated_at": "2025-11-02T08:12:00.000Z"
}| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Max results (max 100) |
offset | integer | 0 | Pagination offset |
GET /api/articles?limit=3
[
{
"id": 7,
"title": "Best Beaches on Koh Lanta",
"summary": "From the long stretch of Klong Dao to the sheltered…",
"updated_at": "2025-10-15T00:00:00.000Z"
}
]GET /api/articles/7
{
"id": 7,
"title": "Best Beaches on Koh Lanta",
"summary": "From the long stretch of Klong Dao…",
"content": "# Best Beaches on Koh Lanta\n\n## Klong Dao\n…",
"updated_at": "2025-10-15T00:00:00.000Z"
}| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Max results (max 100) |
offset | integer | 0 | Pagination offset |
GET /api/news?limit=3
[
{
"id": 18,
"title": "New ferry route opens for summer season",
"created_at": "2025-11-10T09:00:00.000Z"
}
]GET /api/news/18
{
"id": 18,
"title": "New ferry route opens for summer season",
"body": "Starting 1 December, Andaman Wave Master will…",
"created_at": "2025-11-10T09:00:00.000Z"
}| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | required | Search query (min 2 characters) |
GET /api/search?q=diving
{
"places": [
{ "id": 18, "title": "Lanta Diver", "area": "Saladan", "folder": "diving" },
{ "id": 31, "title": "Blue Planet Divers", "area": "Saladan", "folder": "diving" }
],
"articles": [
{ "id": 3, "title": "Diving on Koh Lanta" }
],
"news": []
}Live weather from Open-Meteo (ECMWF model). Tides calculated from M2/S2/N2/K1/O1/P1/K2/Q1 harmonic constituents calibrated for the Koh Lanta area. Moon phase from an astronomical formula. Cached for 30 minutes.
GET /api/weather
{
"temp": 31,
"code": 1,
"desc": "Mainly clear",
"emoji": "🌤️",
"wind": 12,
"windDir": "SW",
"humidity": 74,
"uv": 8,
"moon": {
"phase": 0.42,
"illum": 82,
"name": "Waxing Gibbous",
"emoji": "🌔",
"next": "Full moon in 2 days"
},
"tide": {
"current": 1.23,
"next": { "time": "14:40", "high": true, "h": 1.87 }
}
}Returns all published places (id, title, folder, folders, area, lat, lng) plus a list of distinct areas. Results are cached for 5 minutes.
GET /api/nav
{
"places": [
{
"id": 42,
"title": "Shanti Cafe",
"folder": "cafes",
"folders": "[\"cafes\", \"wellness\"]",
"area": "Klong Khong",
"lat": 7.481,
"lng": 99.031
}
],
"areas": ["Klong Dao", "Klong Khong", "Kantiang Bay"],
"hasUntagged": false
}