# South African Premier Soccer League — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access real-time South African Premier Soccer League data including live scores, fixtures, results, standings, and match details. Search for clubs, news articles, and other PSL information to stay updated on the league.

**Category:** Sports | **Website:** [psl.co.za/](https://psl.co.za/) | **Docs:** [parse.bot/marketplace/96b972a0-e8bc-47ea-8de9-17f325892a05/psl-co-za-api](https://parse.bot/marketplace/96b972a0-e8bc-47ea-8de9-17f325892a05/psl-co-za-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_clubs_list

Retrieve a list of all clubs across divisions from the PSL website navigation. Returns clubs grouped by division (Premier Division and National First Division).

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_clubs_list \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_fixtures

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).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `team` | string | No | Filter fixtures by team name (exact match, case-insensitive) |
| `tournament` | string | No | Tournament slug |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_fixtures \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"team":"<string>","tournament":"<string>"}'
```

### get_live_scores

Retrieve currently live match scores. Returns an empty list with a descriptive message when no matches are live.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_live_scores \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_match_details

Retrieve detailed information for a specific match including stats, lineups, and commentary. The match_id can be obtained from the get_results endpoint.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `match_id` | string | Yes | Match ID slug from get_results (e.g., 2593619-durban-city-vs-amazulu-fc) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_match_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"match_id":"<string>"}'
```

### get_news_article

Retrieve full content of a news article including title, date, body text, and images. The article_id can be obtained from the get_news_list endpoint.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `article_id` | string | Yes | Article ID slug from get_news_list (e.g., 5615164-city-promotion-hopes-dashed-in-magesi) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_news_article \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"article_id":"<string>"}'
```

### get_news_list

Retrieve latest news articles from the PSL website. Returns article summaries with IDs, titles, dates, URLs, and thumbnails.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_news_list \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_results

Retrieve past match results for a given tournament. Returns completed matches with scores, teams, venues, and match IDs that can be used with get_match_details.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `team` | string | No | Filter results by team name (exact match, case-insensitive) |
| `tournament` | string | No | Tournament slug |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_results \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"team":"<string>","tournament":"<string>"}'
```

### get_standings

Retrieve the current league standings/log table for a tournament. Returns all teams with position, points, wins, draws, losses, and goal statistics.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `tournament` | string | No | Tournament slug |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/get_standings \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tournament":"<string>"}'
```

### search_items

Search for articles on the site. Note: This feature may be temporarily unavailable on the PSL website.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-psl-co-za-api-96b972a0/search_items \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<string>"}'
```
