# Radikal Radikal offers small-group trips, courses, and retreats created by experienced outdoor professionals, with an emphasis on learning, connection, safety, and respect for the places explored. ## Public pages - [Home](https://www.radikal.in/) - [Trips catalog](https://www.radikal.in/trips) - [Public trip feed (v1)](https://www.radikal.in/api/public/v1/trips) - [Outdoor community, safety and guide support](https://www.radikal.in/community) - [Why Radikal](https://www.radikal.in/why-radikal) - [Become a guide](https://www.radikal.in/become-a-guide) - [Contact Radikal](https://www.radikal.in/contact-us) ## Sport guides - [Hiking and Trekking](https://www.radikal.in/sports/trek) - [Biking](https://www.radikal.in/sports/bike) - [Rock Climbing](https://www.radikal.in/sports/rockclimb) - [Summit Expedition](https://www.radikal.in/sports/expedition) - [Skiing](https://www.radikal.in/sports/ski) - [Snowboarding](https://www.radikal.in/sports/snowboard) - [Yoga and Meditation](https://www.radikal.in/sports/yoga) ## Discovery Discover public trips and guide profiles through the [sitemap](https://www.radikal.in/sitemap.xml). The sitemap is cached and is not a real-time inventory. Public HTML uses server streaming. Read the complete response rather than treating an initial loading placeholder as an empty catalog. Clients without JavaScript may not visually reveal every streamed section; use the documented JSON feed for structured trip discovery and the canonical pages for authoritative published details. ## Public trip feed Only one optional `page` query parameter is supported; unknown or repeated parameters return HTTP 400. Pagination fields, including `nextPageUrl`, `truncated`, and `truncationReason`, are nested under `pagination`. The [versioned JSON feed](https://www.radikal.in/api/public/v1/trips) exposes only trips eligible for the public catalog. Use its canonical trip URLs for the authoritative public detail pages. It accepts a bounded `page` parameter (1 through 100), returns up to 24 trips per page plus `nextPageUrl`, and includes each trip's `updatedAt` timestamp. At page 100, `nextPageUrl` is null; if more trips exist, `truncated` is true and `truncationReason` explains the limit. A truncated feed is not a complete inventory. Pages use offset pagination, not a snapshot, so catalog changes between requests can shift results. The `sports` and `travelStyles` fields reflect active public taxonomy links; legacy `type` and `categories` fields remain for v1 compatibility. Feed HTTP responses permit 60 seconds of browser/shared caching and a further 60 seconds of stale-while-revalidate. Separately, the server data cache revalidates on requests after 300 seconds and expires after 3600 seconds. Five minutes is not a maximum data age. `priceInRupees` is the currently published base price in INR, not a quote; confirm availability, taxes, travel costs, optional extras, and the final price on the canonical trip page before acting. `updatedAt` is the trip row timestamp, not a complete public-content revision. Related guide, sport, or travel-style changes may not update it. Each trip's `contentRevision` is a SHA-256 digest of its serialized public entry excluding `contentRevision`, `updatedAt`, and `availability`. It covers published guide and taxonomy content, so those changes can alter the revision without changing the trip row timestamp. It is not a timestamp or an availability revision. Each trip's `availability` contains at most 24 nondeleted upcoming `departures`, ordered by date, with only `date`, capacity-derived `spotsRemaining`, and `status` (`spots_remaining` or `sold_out`). `truncated` indicates additional departures were omitted. `observedAt` is the start of the cached database read and stays with those rows; it is not response generation time or a transaction-wide snapshot guarantee. These bounded snapshots can be stale. Neither remaining spots nor an empty departures list guarantees current bookability or lack of future departures. Confirm current dates and availability on the canonical trip page before acting. ## Content boundaries Only publicly rendered pages and the documented public trip feed are intended for discovery. Account profiles, bookings, payments, support conversations, previews, staff tools, other APIs, and private custom-trip requests are not public content.