Discover/PSL API
live

PSL APIpsl.co.za

Access South African Premier Soccer League data via API. Get fixtures, live scores, results, standings, match details, news, and club info from psl.co.za.

Endpoint health
verified 4d ago
get_clubs_list
get_live_scores
get_results
get_standings
get_match_details
8/8 passing latest checkself-healing
Endpoints
9
Updated
26d ago

What is the PSL API?

The PSL API exposes 9 endpoints covering the South African Premier Soccer League, returning fixtures, live scores, results, standings, and full match details from psl.co.za. The get_match_details endpoint is particularly deep, surfacing per-match stats, starting lineups, substitutes, and commentary events for any completed match. Tournament filtering is available on most endpoints via a slug parameter such as betway-premiership.

Try it
Filter fixtures by team name (exact match, case-insensitive)
Tournament slug
api.parse.bot/scraper/0c2008df-2286-497a-a5cb-55dd56ec9a4e/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/0c2008df-2286-497a-a5cb-55dd56ec9a4e/get_fixtures?team=Orlando+Pirates&tournament=betway-premiership' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 psl-co-za-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.

"""PSL South Africa — fixtures, results, standings, news, and match details."""
from parse_apis.psl_premier_soccer_league_api import PSL, Tournament_, NotFound

client = PSL()

# Get league standings for the Betway Premiership using the enum
premiership = client.tournament(name=Tournament_.BETWAY_PREMIERSHIP)
for team in premiership.standings(limit=5):
    print(team.club, team.pts, team.played)

# Get recent results filtered by team
for result in premiership.results(team="Orlando Pirates", limit=3):
    print(result.date, result.home_team, result.score, result.away_team)

# Drill into match details from a result
first_result = premiership.results(limit=1).first()
if first_result:
    match = first_result.details()
    print(match.home_team, match.score, match.away_team, match.venue)
    for stat in match.stats:
        print(stat.stat, stat.home, stat.away)

# Browse latest news and read the first article
article_summary = client.articlesummaries.list(limit=1).first()
if article_summary:
    try:
        article = article_summary.full_article()
        print(article.title, article.date, article.body[:100])
    except NotFound as exc:
        print(f"Article no longer available: {exc}")

# List all clubs
for club in client.clubs.list(limit=5):
    print(club.name, club.division)

print("Exercised: standings, results, match details, news list, full article, clubs list")
All endpoints · 9 totalmissing one? ·

Retrieve upcoming match fixtures for a given tournament. Returns all scheduled matches with dates, times, teams, and venues. May return an empty array when no fixtures are scheduled (e.g., end of season).

Input
ParamTypeDescription
teamstringFilter fixtures by team name (exact match, case-insensitive)
tournamentstringTournament slug
Response
{
  "type": "object",
  "fields": {
    "fixtures": "array of fixture objects with date, time, home_team, away_team, venue, tournament"
  },
  "sample": {
    "data": {
      "fixtures": []
    },
    "status": "success"
  }
}

About the PSL API

Fixtures, Results, and Standings

The get_fixtures and get_results endpoints both accept optional team (case-insensitive exact match) and tournament slug parameters. Fixtures return date, time, home_team, away_team, venue, and tournament. Results extend this with a score field and a match_id slug — the identifier required by get_match_details. The get_standings endpoint returns a full log table with pos, club, played, won, drawn, lost, gf, ga, gd, and pts for every team in the specified tournament.

Match Details and Live Scores

get_match_details takes a match_id slug (e.g., 2593617-ts-galaxy-vs-mamelodi-sundowns) sourced from get_results and returns structured stats (an array of stat objects with stat, home, away values), lineups broken into starting and substitutes arrays for both home and away sides, a commentary event array, and the final score. get_live_scores requires no inputs and returns an array of live match objects when matches are in progress, or an empty array plus a status message when none are live.

News and Club Data

get_news_list returns article summaries with id, title, date, url, and thumbnail. Pass the article id slug to get_news_article to retrieve body, date, title, and an images array for the full piece. get_clubs_list enumerates all clubs from the site navigation, returning each club's name, division, and url. The search_items endpoint accepts a query string but may be temporarily unavailable depending on the source site's current state.

Reliability & maintenanceVerified

The PSL API is a managed, monitored endpoint for psl.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when psl.co.za 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 psl.co.za 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.

Last verified
4d ago
Latest check
8/8 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Display upcoming Betway Premiership fixtures filtered by a specific club in a fan app.
  • Build a match-day dashboard showing live PSL scores without polling the PSL website directly.
  • Populate a league table widget with standings including goal difference and points from get_standings.
  • Retrieve full lineups and per-match stats from get_match_details for post-match analysis tools.
  • Aggregate PSL news thumbnails and headlines into a sports content aggregator using get_news_list.
  • List all PSL clubs by division using get_clubs_list to seed a team selection UI.
  • Track head-to-head results between two clubs by filtering get_results by team name.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does psl.co.za have an official developer API?+
No. psl.co.za does not publish an official public developer API or documented data feed.
How do I get detailed stats and lineups for a specific match?+
Call get_results (optionally filtered by team or tournament) to retrieve the match_id slug for the match you want. Pass that slug to get_match_details, which returns stats (an array of home/away stat pairs), lineups with starting and substitutes for both sides, and a commentary event array.
Does `get_live_scores` return data only during match windows?+
Yes. When no PSL matches are currently in progress, the endpoint returns an empty live_matches array alongside a descriptive message field. Live data only populates during active match periods.
Does the API cover historical seasons or older tournament data beyond the current campaign?+
Not currently. The API reflects the data available on psl.co.za for the active season — fixtures, results, and standings are tied to whatever tournaments the site currently surfaces. You can fork this API on Parse and revise it to add endpoint parameters targeting archived season data if psl.co.za exposes it.
Are player-level statistics like top scorers or individual player profiles available?+
Not currently. The API covers team-level standings, match stats aggregated by home/away side, and lineup player names. Individual player profiles, goal tallies, and top-scorer tables are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting player statistics pages on psl.co.za.
Page content last updated . Spec covers 9 endpoints from psl.co.za.
Related APIs in SportsSee all →
footystats.org API
Get live football scores, team performance metrics, league standings, and head-to-head match statistics all in one place. Search teams and leagues to access detailed player stats, comprehensive analytics, and in-depth performance data across football competitions worldwide.
mlssoccer.com API
Access live MLS soccer scores, match schedules, and detailed game information across all major competitions including the Regular Season, US Open Cup, and CONCACAF Champions Cup. Retrieve real-time match data and comprehensive details for any MLS team.
soccerstats.com API
Access comprehensive soccer statistics including live league tables, match details, team performance metrics, and form rankings across multiple football leagues. Search for specific teams and analyze their season statistics, head-to-head records, and competitive standings to stay informed on the latest soccer data.
livescore.com API
Track live scores and detailed statistics across football, hockey, basketball, tennis, and cricket with the ability to filter by date, sport, and league. Access match summaries, team overviews, standings, fixtures, and results to stay updated on your favorite competitions and teams.
flashscore.com API
Search teams and competitions, pull daily fixtures and live scores, and retrieve match details including events, statistics, and league standings from FlashScore.
afl.com.au API
Access live AFL match scores, team standings, player statistics, and fixture schedules directly from official sources. Search player profiles, view news updates, and track competition rounds and seasons all in one place.
predicd.com API
Get real-time football match predictions, live scores, fixtures, and league standings across multiple competitions including Bundesliga. Access detailed match insights, upcoming games, and current league tables to stay informed about football events and predictions.
football-data.org API
Get live match scores, team standings, and player statistics across football competitions worldwide. Search for teams, view head-to-head matchups, track top scorers, and explore detailed information about competitions and geographical areas.