psl.co.za 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.
curl -X GET 'https://api.parse.bot/scraper/0c2008df-2286-497a-a5cb-55dd56ec9a4e/get_fixtures?tournament=betway-premiership' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve upcoming match fixtures for a given tournament. Returns all scheduled matches with dates, times, teams, and venues.
| Param | Type | Description |
|---|---|---|
| team | string | Filter fixtures by team name (exact match, case-insensitive) |
| tournament | string | Tournament slug (e.g., betway-premiership) |
{
"type": "object",
"fields": {
"fixtures": "array of fixture objects with date, time, home_team, away_team, venue, tournament"
},
"sample": {
"data": {
"fixtures": [
{
"date": "16 May 2026",
"time": "16 May 15:00",
"venue": "Moses Mabhida Stadium, Durban",
"away_team": "Kaizer Chiefs",
"home_team": "AmaZulu FC",
"tournament": "betway-premiership"
}
]
},
"status": "success"
}
}About the psl.co.za 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.
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.
- 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_detailsfor 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_listto seed a team selection UI. - Track head-to-head results between two clubs by filtering
get_resultsby team name.
| 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 | 250 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 psl.co.za have an official developer API?+
How do I get detailed stats and lineups for a specific match?+
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?+
live_matches array alongside a descriptive message field. Live data only populates during active match periods.