FEI APIdata.fei.org ↗
Access FEI equestrian data: horse profiles, athlete records, competition results, world rankings, calendar events, and national federation details via 13 endpoints.
What is the FEI API?
This API exposes 13 endpoints covering the FEI (Fédération Equestre Internationale) database at data.fei.org, giving programmatic access to horse registrations, athlete profiles, competition results, world rankings, and show schedules. The get_competition_results endpoint returns full rider-horse result tables per competition, while get_rankings returns ranked athletes with points and result counts for a given discipline code.
curl -X GET 'https://api.parse.bot/scraper/4ec7d4d3-bcf8-4a28-84b4-bdc3bd38455f/search_horses?name=Donatello' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace data-fei-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""FEI Database API — search horses, athletes, rankings, and competition results."""
from parse_apis.fei_database_api import FEI, NotFound
client = FEI()
# Search for top-ranked jumping athletes worldwide
for athlete in client.rankings.get(ranking_code="S_WR", limit=5):
print(athlete.athlete, athlete.nf, athlete.points)
# Find a specific person and explore their competition history
person = client.people.search(last_name="Guerdat", limit=1).first()
if person:
print(person.name, person.groups, person.nf)
for result in person.results.list(limit=3):
print(result.show, result.horse, result.position, result.score)
# Search horses by name and get their results
horse = client.horses.search(name="Donatello", limit=1).first()
if horse:
print(horse.name, horse.fei_id, horse.sex)
for hr in horse.results.list(limit=3):
print(hr.start_date, hr.show, hr.athlete, hr.position)
# Search the calendar for upcoming shows at a venue
for show in client.shows.search_by_venue(venue="London", limit=3):
print(show.show, show.start_date, show.end_date, show.events)
# Get details of a national federation with error handling
try:
federation = client.federationdetails.get(nf_id="6")
print(federation.name, federation.city, federation.president)
except NotFound as exc:
print(f"Federation not found: {exc}")
print("Exercised: rankings.get, people.search, person.results.list, horses.search, horse.results.list, shows.search_by_venue, federationdetails.get")
Search for horses by name or FEI ID. At least one of name or fei_id should be provided. Returns an array of matching horses with basic registration info including an encrypted ID (Name_id) used for detail/results lookups.
| Param | Type | Description |
|---|---|---|
| name | string | Horse name to search for (partial match supported) |
| fei_id | string | FEI ID of the horse (e.g. 102YQ59) |
{
"type": "object",
"fields": {
"horses": "array of horse objects with FEI ID, Name, Name_id, Sex, Date of birth, Admin NF, and registration details"
}
}About the FEI API
Horses and Athletes
The search_horses endpoint accepts a partial horse name or a legacy-format FEI ID (e.g. BEL03436) and returns an array of matching horses including FEI ID, sex, date of birth, and administering national federation. Once you have a horse's encrypted Name_id, pass it to get_horse_detail for full registration data — gender, status, ID type, and current registered name — or to get_horse_results for a full competition history with show name, event, position, and score. The same pattern applies to people: search_persons looks up athletes, owners, and officials by last name or numeric FEI ID, and get_person_detail returns nationality, competing-for country, roles (the Groups field), and registration status.
Competition Results and Rankings
get_athlete_results and get_horse_results both return result arrays with Start Date, Show, NF, Event, Competition, and a Competition_id you can forward to get_competition_results to retrieve the full results table for that specific competition — every rider-horse pairing with rank and score. For global rankings, get_rankings takes a ranking_code string (e.g. S_WR for the Jumping Longines Rankings) and returns each athlete's current rank, previous rank, FEI ID, points total, and number of counted results.
Calendar and Shows
search_calendar filters by venue, date_from, and date_to (DD/MM/YYYY format) and returns show objects with start/end dates, national federation code, and an Events field listing discipline codes. get_show_detail takes the encrypted Show_id and returns the full event list with discipline and event code. search_shows_by_venue is a convenience endpoint scoped to venue name only.
National Federations
list_national_federations returns all FEI member federations with athlete counts, horse counts, official counts, event counts, and affiliation year. get_national_federation_detail takes a numeric nf_id and returns headquarters address, website, president name, membership status, affiliation year, and a members array listing each named contact's department and function.
The FEI API is a managed, monitored endpoint for data.fei.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when data.fei.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official data.fei.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a horse pedigree and competition history tracker using get_horse_detail and get_horse_results.
- Aggregate athlete career stats by combining get_athlete_results across multiple seasons for a given p_id.
- Monitor upcoming FEI shows in a specific region by querying search_calendar with date_from and date_to filters.
- Display live world ranking tables per discipline using get_rankings with the appropriate ranking_code.
- Create a national federation directory with contact details and member rosters from get_national_federation_detail.
- Cross-reference competition results between horse and athlete records using shared Competition_id values.
- Track which athletes represent a given national federation by filtering athlete results against NF codes.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.