Skip to content
Back to the directory
Directory Methodology

How the Ruck Club directory is built

The Ruck Authority Club Finder lists 767 community-verified rucking clubs across 35 countries. The data comes from a small set of named sources, processed through a documented pipeline, and refreshed on a quarterly cadence. This page shows how.

By Joel KellyLast reviewed: May 15, 2026

Answer-first summary

Every club in the directory comes from one of two places: GORUCK's official Find A Ruck Club spreadsheet (the primary source) or a community submission via /clubs/submit that's been reviewed by a human moderator. We do not scrape user data, generate fictional clubs, or accept paid placement.

The full sync against GORUCK's spreadsheet runs quarterly. In between, new submissions are reviewed within a few days and appear on the directory once approved.

The source spreadsheet

GORUCK publishes a public “Find A Ruck Club” spreadsheet at goruck.com/pages/official-goruck-clubs. The spreadsheet has two tabs: US clubs (states-organized) and International clubs (country-organized). We treat this as the canonical source and mirror it into our database every quarter. Each sync archives the version we worked from in our internal wiki, so the provenance of any club entry can be traced back to the source spreadsheet on a specific date.

How a club ends up in the directory

  1. Source ingestion. The latest GORUCK spreadsheet is parsed into name, city, state-or-region, and country. Duplicate detection runs against the existing database.
  2. Geocoding. Each net-new club is geocoded via Nominatim using city + country as the query and the country ISO code as a disambiguation filter. The geocoded latitude and longitude are stored alongside the row.
  3. Manual review for geocoding failures. Nominatim resolves roughly 99% of city + country pairs correctly. The remaining few (misspellings, sub-prefecture names, ambiguous places) get manual review and a hand-set coordinate.
  4. Insertion. The row enters the Supabase clubs table with approved = true and becomes visible on the directory.
  5. Sync notes. The wiki page wiki/club-directory.md is updated with the new total and any country-level changes (e.g., a country crossing the 3-club threshold for its own landing page).

Community submissions

Anyone can submit a club via the Submit a club form. Submissions go through the same geocoding pipeline as ingested rows, plus a duplicate-detection check against existing clubs within 5 kilometers in the same country. Submissions land with approved = false and stay invisible until a human moderator reviews them. Typical turnaround is a few days.

We don't auto-approve. The moderator step exists to keep fictional clubs, spam, and one-off events out of a directory meant to surface genuinely active communities.

Per-country landing pages

Countries with three or more clubs get their own URL under /clubs/<country-slug>. As of May 15, 2026, the qualifying countries are United States, Canada, Germany, United Kingdom, Australia, Mexico, France, Malaysia, Japan, and Costa Rica. Each page renders a scoped subset of the directory with its own ItemList schema, country-specific stat-pair, and link back to the canonical /clubs page.

Countries with fewer than three clubs roll up to the global tail and stay visible via the search and filter, but don't get a standalone landing page. We don't ship thin pages; one-club pages dilute the directory's authority signal.

Structured data for AI engines

The directory is the most-cited rucking-related page on Ruck Authority in AI search engines (ChatGPT web search, Perplexity, Google AI Overviews, Gemini). That citation depth comes from three structured-data layers:

  • ItemList JSON-LD with one SportsClub per directory entry. Each club carries name, sport, full address (with proper addressCountry by ISO code), geo coordinates, and a contact URL when present.
  • FAQPage JSON-LD that mirrors the visible FAQ section at the bottom of /clubs. Each question and answer is a discrete citable unit.
  • BreadcrumbList and per-country self-canonicals so each /clubs/<country> page captures long-tail queries (“rucking clubs in Germany”) without diluting the canonical /clubs page.

What we don't do

  • No fabricated aggregate ratings. AI engines cross-check rating schemas; fabricating them is a fast way to lose ranking trust.
  • No scraped user data. Member counts, leader names, and other club internals require a Sandlot account to view. We don't scrape behind that auth wall.
  • No paid placement. Clubs cannot pay to be listed, featured, or ranked higher. The editorial Notable Communities section is hand-picked for geographic spread, not sponsored.
  • No automated translation. Club names and cities stay in their original spelling. We don't Anglicize international entries.

Limitations and known gaps

  • Sandlot is gated. Of the 767 clubs in the directory, 173 have a Sandlot link. The remaining 593 don't, because the GORUCK spreadsheet doesn't publish their URLs. We're working on a better submission path for club leaders to add their own links.
  • Activity level is not tracked. A club listed on the GORUCK spreadsheet may be dormant. The directory surfaces clubs as “listed,” not “known active.” If you find a dead club, tell us at the contact link below.
  • Sub-national geography is uneven. US clubs have state, Canadian clubs sometimes have province, but clubs in Singapore, Bahrain, and a few other countries have no subdivision because none meaningfully applies.

How to flag an error

If a club is missing, mis-located, or no longer active:

Review cadence

This methodology page is reviewed quarterly alongside the GORUCK sync. If the source process changes (new data source, automation, schema update), the wiki page wiki/club-directory.md updates first and this public page follows within a week.

Source block

  • GORUCK Quick Lookup Club Directory

    Official GORUCK Find A Ruck Club spreadsheet

    GORUCK

    The canonical source for GORUCK-affiliated clubs worldwide. Maintained by GORUCK staff. The Ruck Authority directory mirrors this list and adds community submissions on top. Each sync archives the spreadsheet at Ruck Authority WIKI/raw/clubs/ for historical traceability.

  • Nominatim (OpenStreetMap)

    OpenStreetMap geocoding API

    OpenStreetMap Foundation

    Each club's latitude and longitude come from Nominatim, called with city + state + country as the query and the ISO 3166-1 alpha-2 country code as a filter. Rate-limited to 1 request per second. Used for the one-time backfill of the international clubs and for new submissions in real time.

  • Mapbox Geocoding API

    Mapbox Places geocoding

    Mapbox

    Used at submission time to verify a city + country pair before the row is written. The alpha-2 country filter disambiguates international cities (Birmingham UK vs Birmingham AL).

  • Supabase

    Supabase Postgres - the canonical store

    Supabase

    The clubs table lives in Supabase Postgres. Every approved row is rendered server-side on /clubs as part of the ItemList JSON-LD schema. AI engines (ChatGPT, Perplexity, Google AI Overviews, Gemini) parse the schema directly. Approval state is a boolean column; new submissions land with approved=false until reviewed.

Browse the directory

Search 767 community-verified rucking clubs across 35 countries. Filter by country, browse the map, or submit a new club.

Open the Club Finder