Youth soccer clubs, soccer stores, registration windows, fees and tryouts in the United States, as open data. No key, any origin, JSON or CSV, one call per question. Directory data only: never players, families, rosters, orders or payments.
Base address: https://hattricklocal-core-api.azurewebsites.net. No key needed.
GET /api/public/v1/clubs: Clubs: by name, state, city, distance from a place or ZIP code, registration status and verification. Add .csv for every match as CSV.GET /api/public/v1/clubs/{org_key}: One club: contacts, locations, programs and current season facts.GET /api/public/v1/clubs/{org_key}/season-records: One club's current fees, registration windows and tryouts, each with its source.GET /api/public/v1/stores: Soccer stores, with the same place filters. Add .csv for CSV.GET /api/public/v1/stores/{org_key}: One store: address, phone, brands, and where it sells online.GET /api/public/v1/season-records: Current fees, registration windows and tryouts across clubs, by state. Add .csv for CSV.GET /api/public/v1/registration-windows: Registration windows by state and dates: open now, upcoming, or opening in a date range.GET /api/public/v1/domain-advisories: Dated observations about formerly listed club domains.Every answer carries the license, the attribution sentence, when it was made and when the data was read (it refreshes about every five minutes), the query as understood, warnings for parameters it ignored, and a next link for the following page.
Each record says how it was verified and when: owner_claimed, staff_verified, observed (seen on the organization's own page, not confirmed by it) or unverified. null means unknown. Registration is open, upcoming or not on record, never "closed". Only current season records are published.
RFC 9457 problem+json with a code and the parameter at fault: invalid_param, invalid_date, invalid_range, invalid_cursor (400), not_found (404, with suggestions), rate_limited (429), data_unavailable (503).
An ETag on every answer; send If-None-Match and an unchanged answer comes back as 304. Cache-Control allows five minutes.
60 requests a minute per address, reported in the IETF RateLimit-Policy and RateLimit headers on every answer. Send a descriptive User-Agent.
Directory pages link their JSON, CSV and Markdown copies (<link rel="alternate">). Append .md to a club, store, state, city or answer page address for clean text.