Chora
Chora is grouped into six topics — one per section a guest cares about when they’re planning a stay. Pick the topics you need, compose them in your booking flow, or embed the whole thing as one HTML widget.
Topics
Weather forecast (or climatology beyond 16 days), sunrise and sunset, marine, and snow. 4 endpoints.
Nearest airports with drive-time estimates and an interactive directions embed. Walking-distance essentials (pubs, shops, ATMs). 2 endpoints.
Ticketed events during the stay, iconic annual festivals, and bookable tours + attractions. 3 endpoints.
MICHELIN-recognised restaurants tier-ranked by prestige and distance, plus a crowd-rated dining fallback. 2 endpoints.
Species commonly observed near the coord during the month of the stay. Aggregated seasonal signal, not a live feed. 1 endpoint.
Curated day-trip destinations — RHS Partner Gardens, National Trust properties, National Trust walks, UNESCO World Heritage Sites, and DarkSky Places. 5 endpoints.
Pre-composed HTML widgets you embed in one <iframe>. No auth,
themeable, auto-resizes. 3 endpoints.
The shared envelope
Every Chora JSON endpoint returns the same envelope, so you can compose sections uniformly:
Design principles
Applicable, not empty. Every endpoint returns an applicable flag.
Marine data on an inland coord returns applicable: false. Wildlife
data in a low-coverage rural area returns applicable: false. Callers
hide the section rather than branching on an error.
Facts, attributed. Every response carries a sources[] array
naming the upstream provider and license. We republish only facts —
never editorial content or copyrighted images.
Cached at the edge. Every response carries a meta.fresh_until
timestamp. Weather refreshes every 10 minutes; MICHELIN monthly;
festivals annually. You never need to think about upstream rate limits.
Booking-safe. No travel advisories, no safety warnings, no cost-of-living data. Nothing in a Chora response would discourage a booking.
Composition
Every JSON endpoint is independent. Fan out with Promise.all and
filter to what applies:
Or embed the pre-composed HTML widget in one <iframe> — see
Embed the widget.