Skip to main content

Open Match Listing API

How to pull your club's public open match schedule using your Club ID, and use it on your own website.

Written by Haris K

How to Use This Data

PadelOS offers a set of public APIs — web addresses that return your club's live data (trainings, open matches, and more) instead of a web page. Each one works the same basic way:

  • The address returns data in a format called JSON — a structured format, not ready-made HTML. It isn't meant to be viewed directly, it's meant to be read by code.

  • Whoever builds or manages your website (a developer) fetches that address, reads the fields out of the response, and uses them to generate the HTML your visitors actually see — a match time, a court, a price, and so on.

  • In practice, that means four steps on the developer's side:

    1. Fetch the data — call the address and get the response back.

    2. Parse it — convert the raw response into a usable object so individual fields can be read out of it.

    3. Loop through the list — the data comes back as a list of items (trainings, matches, etc.); the code goes through it one item at a time.

    4. Build the HTML — for each item, pull out the fields you want to show and insert them into the page.

This same pattern applies to every PadelOS public API — only the address and the specific fields returned change. Below is how it works for the Open Match Listing API specifically.


About the Open Match API

This endpoint returns the open matches currently available to join at your club — no player login required. It's meant for clubs that want to display their open match schedule on their own website, or pull it into another system.

The Basic Request

Every request starts from the same address, with your Club ID added on:

Replace YOUR_CLUB_ID with your club's ID, provided by PadelOS. By default this returns matches starting from today that still have open spots.

Example — for a club called PadelART:

Asking for More Than One Club

If you manage multiple locations and want one combined list, separate the Club IDs with a comma:

(216933 here is a placeholder for a second location — swap in your actual second Club ID.)

Narrowing the Results

You can add extra filters to the address to only show certain matches. Add each one after an &.

Filter

What it does

date

Only show matches from a specific date onwards, e.g. date=2026-09-20. Defaults to today.

sport

Only show one sport, e.g. sport=padel. Leave it out (or pass all) to show all sports.

gender

Only show matches of a given type, e.g. gender=mixed. Options are all, male, female, mixed.

courtSize

Only show matches on single or double courts.

courtType

Only show matches on a specific court type, as set up by your club.

courtFeature

Only show matches on a specific court surface, e.g. courtFeature=Clay.

visibility

Only show matches of a given visibility — public, private, or super_league.

startTime / endTime

Only show matches starting or ending within a time window, e.g. startTime=09:00.

day

Only show matches on a specific weekday, e.g. day=Monday.

rating

Only show matches whose rating range includes a given value.

availability

available (default) shows only matches with open spots, slots_full shows only full ones, all shows both.

Example — only mixed padel matches with open spots at PadelART:

If you enter a value a filter doesn't recognise, that one filter is simply ignored — the rest of the request still works.

Splitting Results Into Pages

Matches are grouped by date. A request returns matches for the date you asked for, plus the next few upcoming dates that have any matches at all.

  • limit — how many matches per page, e.g. limit=10.

  • page — which page to fetch, starting from 0.

If there are matches further out than the current window, the response tells you so — repeat the request with a later date to keep paging forward.

What You Get Back

The response is a list of open matches, each including:

  • Date, time, and duration

  • Sport, and whether it's a friendly or competitive match

  • Current status (e.g. open, paid, cancelled)

  • Gender and court-size restrictions

  • Rating band required to join, if any

  • Price per player, and whether a discount applies

  • Which court it's on

  • The players already in the match, and their team/slot

Sample response — showing what one open match in the list looks like:

  • date: 2026-09-20

  • startTime / endTime: 18:00–19:30

  • sport: padel

  • type: friendly

  • status: open

  • gender: mixed

  • courtSize: double

  • minRating / maxRating: 2.0–3.5

  • pricePerSlot: €12 (originalPrice: €12, no discount applied)

  • isBooked: true

  • visibilityType: public

  • court: Court 3, PadelART (Clay)

  • participants: 3 of 4 slots filled — Team A: Ahmed K., Sara L.; Team B: Youssef M.

Note: participant emails are never included in this response.

Did this answer your question?