RFS APIrfs.ru ↗
Access Russian Football Union data via 7 endpoints: tournament matches, standings, top scorers, match lineups, national team squads, and latest news.
What is the RFS API?
The RFS.ru API exposes 7 endpoints covering Russian football data from the official Russian Football Union website, including tournament matches, standings, player statistics, and national team rosters. The get_match_detail endpoint returns full match data — lineups, goals, punishments, shootouts, and a text broadcast timeline — identified by a match_id sourced from get_tournament_matches. News and squad endpoints require no parameters and return immediately usable results.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/81753609-0be5-4ad5-b0f4-743f189c7c5a/get_tournament_list' \ -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 rfs-ru-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.
"""Walkthrough: RFS SDK — Russian Football Union data, bounded and re-runnable."""
from parse_apis.RFS_ru_Scraper_API import RFS, TeamType, MatchNotFound
client = RFS()
# List tournaments and identify usable slugs.
for t in client.tournaments.list(limit=5):
print(t.name, t.slug, t.url)
# Construct a tournament by slug, list its matches.
cup = client.tournament(slug="cup")
match = cup.matches.list(limit=1).first()
if match:
print(match.home_team, match.score, match.away_team)
# Drill into full match details via the summary's nav op.
try:
detail = match.details()
print(detail.match_info.score, detail.status_text)
except MatchNotFound as exc:
print(f"match gone: {exc.match_id}")
# Tournament statistics — top scorers.
for stat in cup.statistics.list(limit=2):
print(stat.name, len(stat.items))
# Latest news from the RFS site.
for article in client.news_articles.list(limit=3):
print(article.title, article.url)
# National team squad filtered by team type enum.
for player in client.players.list(team_type=TeamType.NATIONAL, limit=5):
print(player.name, player.url)
print("exercised: tournaments.list / tournament().matches.list / match.details / statistics.list / news_articles.list / players.list")
Retrieve all tournaments listed on the RFS website. Returns tournament names, slugs (used as identifiers for other endpoints), and URLs. Some entries link to external sites. The slug 'cup' is the primary usable tournament slug for match/stats/standings endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"tournaments": "array of tournament objects with name, slug, and url"
},
"sample": {
"data": {
"tournaments": [
{
"url": "https://www.rfs.ru/tournament/1579",
"name": "Суперкубок России среди мужских команд",
"slug": "tournament"
},
{
"url": "https://www.rfs.ru/tournament/1511",
"name": "Лига легенд",
"slug": "tournament"
}
]
},
"status": "success"
}
}About the RFS API
Tournament and Match Data
The get_tournament_list endpoint returns all tournaments listed on rfs.ru, each with a name, slug, and url. In practice, the cup slug (FONBET Russian Cup) is the only one confirmed to return data from the match, standings, and statistics endpoints. get_tournament_matches accepts that slug and returns an array of match objects containing match_id, home_team, away_team, and score. Those match_id values are the required input for get_match_detail.
Match Detail
get_match_detail takes a slug and match_id and returns four top-level keys. match_info provides team names and the final score. translation includes the match_id, goals-for (gf) and goals-against (ga) counts, an is_finished boolean, and a video_url when available. body contains structured HTML sections for the timeline, lineups, goals, punishments, and shootouts. matchStatusText is a plain string reflecting the current match status.
Standings and Statistics
get_tournament_standings returns a tables array where each entry has a name and a rows array of arrays — each inner array holds the cell values for one table row, matching the group table layout on rfs.ru. get_tournament_statistics returns a stats array of category objects (e.g., top scorers), each with a name and an items array of player stat rows. Both endpoints accept the slug parameter and currently return data for cup.
News and National Team Squads
get_news_list requires no input and returns the 10 most recent RFS news articles, each with a title and url. get_national_team_squad accepts a team_type string — confirmed values are national (men's senior squad) and youth — and returns a players array of objects with name and url fields pointing to individual player profile pages on rfs.ru.
The RFS API is a managed, monitored endpoint for rfs.ru — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rfs.ru 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 rfs.ru 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?+
- Display FONBET Russian Cup standings tables in a football dashboard using
get_tournament_standings. - Build a match center showing lineups and goal timelines by chaining
get_tournament_matchesandget_match_detail. - Populate a top-scorers leaderboard from
get_tournament_statisticsstat category items. - Aggregate Russian football news headlines using
get_news_listfor a sports news aggregator. - Render the current men's national team or youth squad roster via
get_national_team_squadwithteam_typeset tonationaloryouth. - Track match result history across the Russian Cup by iterating match objects from
get_tournament_matches. - Embed video links for finished matches using the
video_urlfield returned inget_match_detail'stranslationobject.
| 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 Russian Football Union offer an official developer API?+
Which tournaments return data from the matches, standings, and statistics endpoints?+
cup slug (FONBET Russian Cup) is confirmed to return data from get_tournament_matches, get_tournament_standings, and get_tournament_statistics. get_tournament_list returns other tournament entries, but their slugs do not produce results from those endpoints at this time.Does `get_match_detail` return live in-progress match data or only finished matches?+
is_finished boolean in the translation object and a matchStatusText string, so both finished and in-progress match states are represented. However, the polling frequency and real-time update behavior depend on how often you call the endpoint — there is no push or streaming mechanism.Does the API cover the Russian Premier League or other domestic competitions beyond the Cup?+
cup slug) for match, standings, and statistics data, plus RFS news and national team squads. get_tournament_list does return other tournament entries, but they do not yield results from the data endpoints. You can fork this API on Parse and revise it to add support for additional tournament slugs if they become available.How many news articles does `get_news_list` return, and can I paginate for older articles?+
get_news_list returns the 10 most recent articles from rfs.ru, each with a title and url. Pagination is not currently supported — the endpoint always returns the latest 10 items. You can fork this API on Parse and revise it to add offset or page parameters for retrieving older articles.