YourThailand
Zero authJSONCloudflare EdgeFree forever

Thailand Public API

Structured data for all 77 Thai provinces — geography, live weather, AQI, attractions, events, exchange rates, and more. No API key, no sign-up, no rate limit.

Base URLhttps://www.yourthailand.net

Province Data

GET
/api/provinces

Returns all 77 provinces with region, coordinates, budget tiers, best visit months, and descriptions.

Cache TTL:1 hour
Example response
[
  {
    "id": "chiang-mai",
    "name_en": "Chiang Mai",
    "name_th": "เชียงใหม่",
    "region": "north",
    "lat": 18.7883,
    "lng": 98.9853,
    "area_km2": 20107,
    "population": 1774507,
    "capital_city": "Chiang Mai",
    "best_months": ["November","December","January","February"],
    "budget_low": 900,
    "budget_mid": 2500,
    "budget_high": 7000,
    "cover_image": "https://...",
    "summary_en": "Thailand's cultural capital in the mountainous north..."
  },
  ...76 more
]
GET
/api/provinces/{id}

Returns full province data plus up to 20 top-rated attractions.

idpathrequiredProvince ID in kebab-case — e.g. chiang-mai, nakhon-ratchasima
Cache TTL:1 hour
Example response
{
  "id": "krabi",
  "name_en": "Krabi",
  "name_th": "กระบี่",
  "region": "south",
  "lat": 8.0863,
  "lng": 98.9063,
  "best_months": ["November","December","January","February","March"],
  "budget_low": 1200,
  "budget_mid": 3000,
  "budget_high": 9000,
  "attractions": [
    {
      "id": "railay-beach",
      "name_en": "Railay Beach",
      "category": "beach",
      "lat": 8.0115,
      "lng": 98.8380,
      "entry_fee": 0,
      "rating": 4.8
    },
    ...up to 19 more
  ]
}
GET
/api/search

Full-text search across provinces, attractions, and events. Minimum 2 characters.

qqueryrequiredSearch query (min 2 chars)
Cache TTL:15 min
Example response
[
  {
    "entity_id": "chiang-mai",
    "entity_type": "province",
    "province_id": null,
    "name_en": "Chiang Mai",
    "name_th": "เชียงใหม่"
  },
  {
    "entity_id": "doi-suthep",
    "entity_type": "attraction",
    "province_id": "chiang-mai",
    "name_en": "Doi Suthep Temple",
    "name_th": "ดอยสุเทพ"
  }
]

Live Data

GET
/api/weather/{province}

Current weather conditions and 5-day forecast for a province, powered by OpenWeatherMap.

provincepathrequiredProvince ID in kebab-case
Cache TTL:30 min
Example response
{
  "province_id": "bangkok",
  "temp_c": 33,
  "feels_like_c": 40,
  "humidity": 76,
  "description": "Partly cloudy",
  "icon": "02d",
  "wind_kph": 14,
  "rain_chance": 30,
  "forecast": [
    {
      "date": "2026-07-27",
      "temp_max_c": 34,
      "temp_min_c": 27,
      "description": "Moderate rain",
      "icon": "10d",
      "rain_chance": 75
    },
    ...4 more days
  ]
}
GET
/api/aqi/{province}

Air Quality Index (AQI) and pollutant breakdown for a province.

provincepathrequiredProvince ID in kebab-case
Cache TTL:1 hour
Example response
{
  "province": "chiang-mai",
  "aqi": 52,
  "category": "Moderate",
  "pm25": 18.4,
  "pm10": 31.2,
  "o3": 44.1,
  "no2": 9.8,
  "updated_at": "2026-07-26T10:00:00Z"
}
GET
/api/exchange

Live Thai Baht exchange rates for USD, EUR, GBP, JPY, SGD, AUD, and CNY, via Frankfurter.

Cache TTL:1 hour
Example response
[
  { "currency": "USD", "symbol": "$",  "thb": 33.85, "date": "2026-07-25" },
  { "currency": "EUR", "symbol": "€",  "thb": 37.12, "date": "2026-07-25" },
  { "currency": "GBP", "symbol": "£",  "thb": 43.60, "date": "2026-07-25" },
  { "currency": "JPY", "symbol": "¥",  "thb": 0.22,  "date": "2026-07-25" },
  { "currency": "SGD", "symbol": "S$", "thb": 25.40, "date": "2026-07-25" },
  { "currency": "AUD", "symbol": "A$", "thb": 21.90, "date": "2026-07-25" },
  { "currency": "CNY", "symbol": "¥",  "thb": 4.65,  "date": "2026-07-25" }
]

Content

GET
/api/events

Upcoming festivals and events in Thailand, ordered by start date.

provincequeryFilter by province ID
Cache TTL:None
Example response
[
  {
    "id": "yi-peng-2026",
    "province_id": "chiang-mai",
    "name_en": "Yi Peng Lantern Festival",
    "name_th": "ยี่เป็ง",
    "category": "festival",
    "start_date": "2026-11-02",
    "end_date": "2026-11-03",
    "description": "Thousands of paper lanterns released into the night sky...",
    "lat": 18.7883,
    "lng": 98.9853
  }
]
GET
/api/news

Latest Thailand headlines parsed from Bangkok Post RSS.

Cache TTL:15 min
Example response
[
  {
    "title": "Thailand extends visa-free stay for 93 countries",
    "link": "https://www.bangkokpost.com/...",
    "pubDate": "Sat, 26 Jul 2026 08:00:00 +0700",
    "description": "The Cabinet approved a permanent extension...",
    "category": "Thailand"
  }
]
GET
/api/advisory

Active travel advisories for Thailand (seasonal warnings, safety notices).

Cache TTL:None
Example response
[
  {
    "id": "monsoon-2026-07",
    "level": "info",
    "title": "Monsoon Season",
    "body": "Heavy afternoon rains across Thailand through October. Southern Andaman coast sees the most rainfall.",
    "link": null
  }
]

Province IDs

Province IDs are kebab-case strings. Use them as path parameters in /api/provinces/{id}, /api/weather/{province}, etc.

North
chiang-maichiang-railampangmae-hong-sonnan
Northeast
buriramkhon-kaenloeinakhon-ratchasimaubon-ratchathaniudon-thani
Central
ayutthayabangkokkanchanaburinakhon-pathomphetchaburi
East
chanthaburichonburirayongtrat
South
krabinakhon-si-thammaratphang-ngaphuketsatunsongkhlasurat-thanitrang
West
ranongprachuap-khiri-khan

Full list of all 77 province IDs available at /api/provinces — each object contains the id field.

Caching & Limits

Responses are cached at the Cloudflare edge. Cache TTLs are listed per endpoint above.

There is no enforced rate limit, but please be considerate. If you are building something that queries all 77 provinces, fetch /api/provinces once and cache the result locally rather than making 77 individual requests.

All responses include standard CORS headers — the API is consumable directly from a browser.

AI & Developer Tools

Questions or data issues? [email protected]