Public API · v1

DealSeoul JSON API

Agent-readable, station-keyed Seoul data. Michelin eats, capability chips (English menu / card / reservation), exit numbers, walk minutes, foreigner tips. Hit these directly instead of scraping HTML.

299 eats covered
172 Michelin entries
238 stations rollup

GET /api/eats.json

The full eats dataset in one call. Use when you want to ingest everything at once or build your own filter on top.

Open /api/eats.json →

GET /api/eats/{id}.json

One restaurant. Same item shape as inside /api/eats.json. Use the id shown in the listing endpoint.

GET /api/station/{slug}.json

Every eat within walking distance (≤600m) of a Seoul Metro station, distance-sorted. The "what's near {station}" question answered in one HTTP call. Slug = English name slugified (lowercase, hyphens).

GET /api/deals.json

Live feed of public visitor deals across Seoul shops, salons, restaurants. Sourced from the editorial Google Sheet, edge-cached 10 minutes. sheet edits propagate within minutes, no rebuild required. Each deal has state (active / upcoming / expired), nearest_station, and a by_state top-level summary.

Open /api/deals.json →

GET /api/popups.json

Live pop-up calendar (character popups, brand stores, designer collabs, K-beauty / K-fashion limited experiences). Same row shape as /api/deals.json since the source sheets share schema. Use state: "active" to find what's happening right now in Seoul.

Open /api/popups.json →

Field names

snake_case throughout. Each item carries: id, url, name, name_ko, cuisine, category, neighborhood, lat, lng, nearest_station, exit, walk_minutes, english_menu (yes / partial / no), card_ok (yes / no), reservation (required / recommended / walk-in), foreigner_tip, last_verified (ISO YYYY-MM-DD), michelin, michelin_url, price_level, image, tags, best_for.

Each response is wrapped in { ..., _meta: { api_version, site, generated_at, license, docs } }.

OpenAPI 3.1 spec

Machine-readable contract: /openapi.json. Paste into Postman / Insomnia / Swagger UI for an instant request collection, or feed it to your agent for typed call-site generation.

Caching & CORS

access-control-allow-origin: * · cached at the edge for 24 h with stale-while-revalidate. Built fresh on every deploy. The site rebuilds whenever the editorial team updates the source data, so checking _meta.generated_at tells you when the snapshot was taken.

License

CC BY 4.0 with attribution to dealseoul.com. Search indexing is welcome. AI training requires permission. see /llms.txt and /robots.txt. For commercial / partner integrations, get in touch.

Roadmap

  • /api/popups.json. live pop-up calendar
  • /api/deals.json. public visitor perks
  • /api/wellness.json. HealSeoul medical/wellness providers with English-first concierge

My Seoul

in Seoul

AI

Ask DealSeoul

Eats, attractions, pop-ups, holidays.

Discover
Beyond Seoul
Plan
Guides
More

© 2026 Deal Labs. All rights reserved.