FIE APIfie.org ↗
Access FIE world rankings, fencer profiles, competition brackets, and athlete search via 5 endpoints covering the International Fencing Federation.
What is the FIE API?
The FIE API provides 5 endpoints covering athlete search, individual fencer profiles, world rankings, competition listings, and full competition details from the International Fencing Federation at fie.org. The get_athlete_profile endpoint returns biographical data, season-by-season competition results, and head-to-head opponent match histories. Rankings can be filtered by weapon, gender, level, and season across individual and team categories.
curl -X GET 'https://api.parse.bot/scraper/8c29260a-c015-45cd-aa8d-287a13560c95/get_athletes_search?page=1&query=LEHIS&gender=f%2Cm&is_team=false' \ -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 fie-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.
"""FIE Fencing API — search athletes, view rankings, browse competitions."""
from parse_apis.fie_fencing_api import FIE, Weapon, Gender, Level, AthleteNotFound
client = FIE()
# Search for fencers by last name, capped at 5 results.
for athlete in client.athletes.search(query="LEHIS", limit=5):
print(athlete.name, athlete.country, athlete.age)
# Get the first result and drill into their full profile.
athlete = client.athletes.search(query="LEHIS", gender="f", limit=1).first()
if athlete:
profile = athlete.profile(season="2026")
print(profile.name, profile.bio)
for result in profile.results[:3]:
print(result.city, result.place, result.competition_type)
# Fetch world rankings — senior female epeeists.
for fencer in client.rankings.list(
weapon=Weapon.EPEE, gender=Gender.FEMALE, level=Level.SENIOR, limit=5
):
print(fencer.name, fencer.rank, fencer.points)
# Browse upcoming competitions and get details for the first one.
comp = client.competitions.search(season="2026", limit=1).first()
if comp:
try:
detail = comp.details()
print(detail.competition.name, detail.competition.location,
detail.competition.fencer_count)
except AthleteNotFound as exc:
print(f"Not found: {exc}")
print("exercised: athletes.search / profile / rankings.list / competitions.search / details")
Search for fencers by name with optional filters. Returns a paginated list of athletes matching the search criteria. Results include basic athlete info (id, name, country, gender, age). Use the athlete id to fetch a full profile via get_athlete_profile.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search by athlete name (last name recommended, e.g. 'LEHIS'). |
| gender | string | Comma-separated gender codes: f (female), m (male). |
| country | string | Country name filter (e.g. 'ESTONIA'). |
| is_team | boolean | If true, search for team athletes only. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"items": "array of athlete objects with id, name, firstName, lastName, country, countryCode, gender, age, flag, image",
"totalFound": "integer, total number of matching athletes"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"id": 24108,
"age": 31,
"flag": "EE",
"name": "LEHIS Katrina",
"image": "https://static.fie.org/uploads/6/31185-Lehis_Katrina_ID.jpg",
"gender": "F",
"weapon": null,
"country": "Estonia",
"lastName": "LEHIS",
"firstName": "Katrina",
"countryCode": "EST"
}
],
"totalFound": 4
},
"status": "success"
}
}About the FIE API
Athlete Search and Profiles
The get_athletes_search endpoint accepts a name query (last name recommended), optional gender, country, and is_team filters, and returns paginated results including each athlete's id, name, country, gender, weapon, and age. The numeric id returned here feeds directly into get_athlete_profile, which returns a full bio object (club, occupation, injuries, awards), a results array of competition placements with date, city, and place, and an opponents array showing recent match scores and adversary details. A season parameter and category parameter (senior s or junior j) let you scope the profile data to a specific competitive year.
Rankings
The get_rankings endpoint returns two arrays: topFencers (the leading ranked athletes) and allAthletes (the full paginated set). Filtering is available by weapon (epee e, foil f, sabre s), gender, level (senior, junior, cadet), type (individual or team), season, and country. Each ranked entry includes id, name, country, rank, and points, making it straightforward to build leaderboards or monitor point movements across seasons.
Competitions
The get_competitions_list endpoint lists FIE competitions with filters for weapon, gender, season, status (previous or upcoming), and competition type. Each item in the items array includes competitionId, name, location, weapon, gender, and dates. Pass a competitionId and season to get_competition_detail to retrieve full metadata via the competition object, the list of participating athletes, tableau bracket data, and pools with poolsResults — the data needed to reconstruct the draw and match outcomes for a given event.
The FIE API is a managed, monitored endpoint for fie.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fie.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 fie.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 fencing athlete directory with search by name, country, weapon, and gender using
get_athletes_search. - Track a fencer's career trajectory by pulling season-by-season placement history from
get_athlete_profile. - Monitor FIE world ranking point changes over multiple seasons using
get_rankingswithseasonandweaponfilters. - Generate upcoming competition calendars filtered by weapon and gender with
get_competitions_listandstatus=upcoming. - Reconstruct full tournament bracket and pool results for any FIE event using
get_competition_detailtableau and poolsResults fields. - Analyze head-to-head fencer matchups using the
opponentsarray returned byget_athlete_profile. - Identify top-ranked athletes by country and category for scouting or fantasy fencing applications via
get_rankings.
| 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.
Does the FIE have an official developer API?+
What does `get_competition_detail` return beyond basic competition info?+
competition metadata object (name, location, dates, weapon, gender, fencerCount), a list of registered athletes, tableau bracket data showing the elimination draw, and pools plus poolsResults objects with pool assignments and match results. Both season and competition_id are required inputs.Does the rankings endpoint cover cadet-level athletes?+
level parameter on get_rankings accepts s (senior), j (junior), and c (cadet), so cadet rankings are accessible. Team rankings are also available by setting type to t.Are individual bout-level scores within tableau rounds returned by `get_competition_detail`?+
poolsResults object contains pool match results, and tableau contains bracket data, but granular scoring breakdowns for every individual elimination-round bout are not guaranteed at the same detail level as pool data. You can fork this API on Parse and revise it to add a dedicated bout-detail endpoint if finer tableau scoring is needed.Can I retrieve historical athlete rankings at a specific date rather than by season?+
get_rankings endpoint filters by season year but does not support point-in-time queries within a season. You can fork this API on Parse and revise it to add date-level ranking snapshots if that granularity is required.