AI Crawler · Collection Records

Bot summary · Last 24 hours
← Catalog
KTO

KTO Tourism Content Lab (TourAPI Korean Tourism Info)

Nationwide tourism information from Korea Tourism Content Lab (about 260,000 records for attractions, cultural facilities, festivals and events, travel courses, leisure sports, lodging, shopping, and restaurants). Call directly with GET /api/tour with no auth key (action=search for keyword search, area for regional lists, location for coordinate radius, detail for details). The server already has a data.go.kr key registered, so calls work immediately. Provides titles, addresses, coordinates, summaries, images, and hours.

⚡ Tourism info quick call

GET /api/tour?action=search&keyword=경복궁

Use this URL first for tourism search. No auth key required; action=search|area|location|detail. Server key already registered, so calls work immediately.

What agents get

  • title, addr1/addr2 (address), mapx/mapy (coordinates), firstimage/firstimage2 (representative images), contentid/contenttypeid, tel, overview (summary, via detail)
    Keyword-, region-, and coordinate-based attraction search, shortlisting of course, festival, lodging, and restaurant candidates, and travel-content generation with images and summaries

Use cases

  • Search attractions, festivals, lodging, and restaurants by keyword
  • List tourism entries by region code and category
  • Explore nearby attractions within a coordinate radius
  • Look up detail overview, images, and usage info by content ID

Registered APIs (4)

Keyword Search searchKeyword2

Unified tourism search by keyword. arrange=A (title asc)/C (modified desc)/D (created desc)/O (title asc)/Q (modified asc)/R (created asc)

  • keyword Required — Search keyword (1-50 chars) e.g. 경복궁
  • contentTypeId Optional — 12 attraction / 14 cultural facility / 15 festival-event / 25 travel course / 28 leisure sports / 32 lodging / 38 shopping / 39 restaurant e.g. 12
  • numOfRows Optional e.g. 10
  • pageNo Optional e.g. 1

Returns: totalCount (total records), items[] (title/addr1/mapx/mapy/firstimage/contentid/contenttypeid/tel), arrange ordering

Rate limit: 1,000 calls/day (data.go.kr development-account daily limit of 1,000 calls)

Area-Based List areaBasedList2

List tourism entries by sido + sigungu + category. areaCode=39 covers all of Jeju

  • areaCode Required — 1 Seoul / 2 Incheon / 3 Daejeon / 4 Daegu / 5 Gwangju / 6 Busan / 7 Ulsan / 8 Sejong / 31 Gyeonggi / 32 Gangwon / 33 Chungbuk / 34 Chungnam / 35 Gyeongbuk / 36 Gyeongnam / 37 Jeonbuk / 38 Jeonnam / 39 Jeju e.g. 1
  • contentTypeId Optional e.g. 15
  • numOfRows Optional e.g. 10
  • pageNo Optional e.g. 1

Returns: totalCount, items[] (title/addr1/mapx/mapy/firstimage/contentid/contenttypeid)

Rate limit: 1,000 calls/day

Location-Based List locationBasedList2

Tourism info within a coordinate radius. mapX=longitude (124-132), mapY=latitude (33-43), radius=radius in meters (1-20000)

  • mapX Required — Longitude e.g. 126.98
  • mapY Required — Latitude e.g. 37.57
  • radius Optional e.g. 1000
  • contentTypeId Optional e.g. 12

Returns: totalCount, items[] (title/addr1/dist (distance in m)/mapx/mapy/firstimage/contentid)

Rate limit: 1,000 calls/day

Common Detail Info detailCommon2

Look up title, address, overview, images, coordinates, and category codes at once by contentId

  • contentId Required — Content ID (numeric) e.g. 126508

Returns: title/overview (summary)/addr1/firstimage/mapx/mapy/tel/lclasification (major/mid/minor categories)/homepage

Rate limit: 1,000 calls/day

Auth · pricing · terms

AuthServiceKey — data.go.kr service key. Stored only on the proxy server and never exposed to agents. Agents call only our quick API (/api/tour) or the X-Agent-Token proxy.
PricingFree. Development accounts auto-approved; production accounts require review
LicensePublic data (follow the data.go.kr application terms; attribution required)
RedistributionAllowed (attribution required)
Terms checked2026-10-13
ApplyLog in to data.go.kr -> Apply for the KTO_Korean Tourism Information Service_GW -> Service key issued (development account auto-approved) Portal
StatusActive
Last checked2026-10-13

How agents call

Call through our proxy. Start with the keyless quick API shown above (no token needed). For the keyed proxy, send X-Agent-Token to POST /agencatalog/api/call with ('service', 'endpoint', 'params'). The full service list is at /agencatalog/api/services.json.

Example: POST /agencatalog/api/call {service:'kto-tour-content-lab', endpoint:'searchKeyword2', params:{keyword:'경복궁'}}

Machine-readable JSON schema

{
  "service": "kto-tour-content-lab",
  "name": "KTO Tourism Content Lab (TourAPI Korean Tourism Info)",
  "provider": "KTO",
  "apis": [
    {
      "id": "searchKeyword2",
      "name": "Keyword Search",
      "params": [
        {
          "name": "keyword",
          "required": true,
          "example": "경복궁",
          "desc": "Search keyword (1-50 chars)"
        },
        {
          "name": "contentTypeId",
          "required": false,
          "example": "12",
          "desc": "12 attraction / 14 cultural facility / 15 festival-event / 25 travel course / 28 leisure sports / 32 lodging / 38 shopping / 39 restaurant"
        },
        {
          "name": "numOfRows",
          "required": false,
          "example": "10"
        },
        {
          "name": "pageNo",
          "required": false,
          "example": "1"
        }
      ]
    },
    {
      "id": "areaBasedList2",
      "name": "Area-Based List",
      "params": [
        {
          "name": "areaCode",
          "required": true,
          "example": "1",
          "desc": "1 Seoul / 2 Incheon / 3 Daejeon / 4 Daegu / 5 Gwangju / 6 Busan / 7 Ulsan / 8 Sejong / 31 Gyeonggi / 32 Gangwon / 33 Chungbuk / 34 Chungnam / 35 Gyeongbuk / 36 Gyeongnam / 37 Jeonbuk / 38 Jeonnam / 39 Jeju"
        },
        {
          "name": "contentTypeId",
          "required": false,
          "example": "15"
        },
        {
          "name": "numOfRows",
          "required": false,
          "example": "10"
        },
        {
          "name": "pageNo",
          "required": false,
          "example": "1"
        }
      ]
    },
    {
      "id": "locationBasedList2",
      "name": "Location-Based List",
      "params": [
        {
          "name": "mapX",
          "required": true,
          "example": "126.98",
          "desc": "Longitude"
        },
        {
          "name": "mapY",
          "required": true,
          "example": "37.57",
          "desc": "Latitude"
        },
        {
          "name": "radius",
          "required": false,
          "example": "1000"
        },
        {
          "name": "contentTypeId",
          "required": false,
          "example": "12"
        }
      ]
    },
    {
      "id": "detailCommon2",
      "name": "Common Detail Info",
      "params": [
        {
          "name": "contentId",
          "required": true,
          "example": "126508",
          "desc": "Content ID (numeric)"
        }
      ]
    }
  ],
  "proxy_call": "POST /agencatalog/api/call",
  "attribution": "Source: KTO Korean Tourism Information Service (TourAPI, Public Data Portal data.go.kr)"
}

Notes

  • API keys live only on the server. Clients asking for keys directly cannot use this route.
  • Each provider has a daily quota. Over-quota calls return 429 and are blocked.
  • Provider outages or over-quota errors are passed through. Check the error field before retrying.
  • Attribution: Source: KTO Korean Tourism Information Service (TourAPI, Public Data Portal data.go.kr)

Last checked: 2026-10-13