Release Notes Schema Differences

Release Notes

▸ 2026-07-07

What's Changing?

GoLink.hrefReplaced(filter: HrefReplacedFilter) now also supports geo filters:

  • countries: [CountryEnum]
  • countrySubdivisionCodes: [String]

These filters restrict the returned replaced href entries to the requested countries and/or country subdivisions.

The relation goLinks filter now supports isFiltersFallbackActive: Boolean on these fields:

  • Bookie.goLinks(filter: RelationGoLinksFilter)
  • Bonus.goLinks(filter: RelationGoLinksFilter)
  • Promotion.goLinks(filter: RelationGoLinksFilter)
  • Channel.goLinks(filter: RelationGoLinksFilter)

When isFiltersFallbackActive: true is used and the requested client-specific filters remove all matching goLinks for a relation item, the resolver performs a fallback query and returns goLinks with these filters relaxed:

  • countries
  • countrySubdivisionCodes
  • devices
  • languages
  • platforms

The fallback still keeps the relation scope and the other goLink filters such as types, applicationIds, isActive, and tags.

Example Query

query PromotionGoLinksWithFallback($id: ID!) {
    promotion(filter: {id: $id}) {
        id
        goLinks(filter: {
            isFiltersFallbackActive: true
            countries: [AT]
            devices: [MOBILE]
            languages: [DE_DE]
        }) {
            id
            href
        }
    }
}

▸ 2026-06-29

What's Changing?

A new Absence GraphQL type has been added for player absence data.

New fields are now available on existing types:

  • MatchEntity.absences: [Absence!]!
  • Competition.currentAbsences: [Absence!]!

Absence also includes a nested person field to resolve the related Person.

Example Queries

Match Absences

query MatchAbsences($id: ID!) {
    match(filter: {id: $id}) {
        id
        absences {
            id
            kind
            reason
            person {
                id
                fullName
            }
        }
    }
}

Competition Current Absences

query CompetitionCurrentAbsences($id: ID!) {
    competition(filter: {id: $id}) {
        id
        currentAbsences {
            id
            kind
            reason
            person {
                id
                fullName
            }
        }
    }
}

▸ 2026-06-22

What's Changing?

Match association fields are now grouped under a new nested field on MatchEntity:

  • associations: MatchAssociations

Use the new nested path for provider-specific match association data:

  • match.associations.betql
  • match.associations.as
  • match.associations.deltatre
  • match.associations.dfl
  • match.associations.faz
  • match.associations.futbol24
  • match.associations.gazzetta
  • match.associations.kicker
  • match.associations.manual
  • match.associations.oddset
  • match.associations.opta
  • match.associations.phoenix
  • match.associations.ronin
  • match.associations.sportradar
  • match.associations.transfermarkt
  • match.associations.tonline
  • match.associations.toralarm
  • match.associations.livescore
  • match.associations.goaldotcom
  • match.associations.globo
  • match.associations.xscores

Remove Notice

The legacy top-level match association fields on MatchEntity are deprecated and will be removed on 2026-08-01. Use associations.<provider> instead.

Example Queries

Old Query (Deprecated)

query OldQuery($id: ID!) {
    match(filter: {id: $id}) {
        id
        betql {
            id
        }
        opta {
            id
        }
    }
}

New Query (Recommended)

query NewQuery($id: ID!) {
    match(filter: {id: $id}) {
        id
        associations {
            betql {
                id
            }
            opta {
                id
            }
        }
    }
}

▸ 2026-06-18

What's Changing?

The SearchIdTeamFilter input now supports competitionIds: [Int!]. This filter applies only when searchId.filter.category is TEAM and returns only teams that:

  • match the searchTerm
  • have played in at least one of the provided competitions

When multiple competition ids are provided, the filter uses OR semantics. A team is returned if it has participated in any of the given competitions.

The SearchIdCompetitionFilter input now supportincludeInternational: Boolean. When includeInternational: true is used on its own, only competitions without a country (countryId = null) are returned. When country and includeInternational: true are used together, the result includes both:

  • competitions from the selected country
  • competitions without a country

▸ 2026-06-08

What's Changing?

A new set of alias relations and GraphQL types has been added:

  • Sport.sportAliases: [SportAlias!]!
  • Team.teamAliases: [TeamAlias!]!
  • Competition.competitionAliases: [CompetitionAlias!]!
  • Person.personAliases: [PersonAlias!]!

The new alias types expose the alias entries as nested objects:

  • SportAlias
  • TeamAlias
  • CompetitionAlias
  • PersonAlias

TeamAlias also includes competitionId to expose the competition-specific alias scope.

For Person, the existing single-value alias field is kept for backward compatibility, and the new personAliases field should be used to access the full list of aliases.

A new nested categoryFilters input has been added to SearchIdFilter. It groups the per-category filters so each category can be filtered with its relevant fields:

  • team: SearchIdTeamFilter — applied when category is TEAM. Fields: sports: [SportEnum!], kind: TeamKindEnum, gender: GenderEnum, age: AgeEnum, country: CountryEnum.
  • competition: SearchIdCompetitionFilter — applied when category is COMPETITION. Same fields as the team filter.
  • person: SearchIdPersonFilter — applied when category is PERSON. Field: country: CountryEnum.

A new SportEnum is introduced for the sports filter on team and competition category filters with the following values: FOOTBALL, BASKETBALL, BASEBALL, ICE_HOCKEY, TENNIS, HANDBALL, GOLF, RUGBY, AMERICAN_FOOTBALL, CRICKET, VOLLEYBALL, FORMULA_1.

When both the legacy top-level fields and categoryFilters are provided, the values in categoryFilters take precedence.

The TeamsFilter input now supports sports: [SportEnum!] for filtering teams by sport.

The legacy sportIds: [Int] filter on TeamsFilter is deprecated and will be removed on 2026-08-01. Use sports instead.

Remove Notice

The incorrect person alias field aliasName will be removed in a future release. A person can have multiple aliases, so clients should migrate to personAliases.

The top-level age and gender arguments on SearchIdFilter are deprecated and will be removed on 2026-08-01. After this date, queries using the deprecated arguments will no longer be supported. Use categoryFilters instead.

The deprecated sportIds argument on TeamsFilter will be removed on 2026-08-01. After this date, queries using the deprecated argument will no longer be supported.

Example Queries

Old Query (Deprecated)

query OldQuery {
    searchId(filter: {searchTerm: "Madrid", category: TEAM, language: DE_DE, age: A_TEAM, gender: MALE}) {
        ... on Team {
            id
            name
        }
    }
}

New Query (Recommended)

query NewQuery {
    searchId(filter: {
        searchTerm: "Madrid",
        category: TEAM,
        language: DE_DE,
        categoryFilters: {
            team: {
                sports: [FOOTBALL],
                age: A_TEAM,
                gender: MALE,
                country: ES
            }
        }
    }) {
        ... on Team {
            id
            name
        }
    }
}

Old Teams Query (Deprecated)

query OldTeamsQuery($sportIds: [Int]) {
    teams(filter: {sportIds: $sportIds}) {
        paginatorInfo {
            total
        }
    }
}
{
  "sportIds": [1]
}

New Teams Query (Recommended)

query NewTeamsQuery($sports: [SportEnum!]) {
    teams(filter: {sports: $sports}) {
        paginatorInfo {
            total
        }
    }
}
{
  "sports": ["FOOTBALL"]
}

▸ 2026-05-20

What's Changing?

A new groupOptions filter has been added to StandingsFilter.

It consists of two subfilters:

  • groupMode - ENUM possible values: LEAGUE, CONFERENCE, DIVISION. (Default: LEAGUE)
  • returnGroupCompetitors - BOOLEAN. (Default: false)

If roundIds and teamIds is provided and returnGroupCompetitors is true, the response will include the team's group competitors based on the provided groupMode and teamIds.

▸ 2026-04-27

What's Changing?

When matches are sorted by score, or the score field is queried, and no other filters are active:

  • Default: Results are limited to the next 7 days.
  • POST state only: Results are limited to the past 7 days.
  • POST state + any other state: Results span from the past 7 days through the next 7 days.

A new h2hTeamIds filter has been added to MatchesFilter. It accepts an array of exactly 2 team IDs and restricts results to head-to-head matches between those teams. This filter is mutually exclusive with the teamIds filter.

The searchId query has been enhanced with the following changes:

  • All-language search: When no language argument is provided, the search now queries across all available languages in the translation tables instead of defaulting to a single language. This applies to TEAM, COMPETITION, and SPORT categories.
  • New optional filters added to SearchIdFilter:
    • age: AgeEnum — Filter results by age category (e.g. A_TEAM, U21, U19). Applies to TEAM and COMPETITION categories.
    • gender: GenderEnum — Filter results by gender (MALE, FEMALE, MIXED). Applies to TEAM and COMPETITION categories.

Example Queries

Search teams without language (all languages)

query {
    searchId(filter: {searchTerm: "Real Madrid", category: TEAM}) {
        ... on Team {
            id
            name
            ageName
            primaryColor
        }
    }
}

Search teams with age and gender filter

query {
    searchId(filter: {searchTerm: "Madrid", category: TEAM, language: DE_DE, age: A_TEAM, gender: MALE}) {
        ... on Team {
            id
            name
            ageName
            gender
        }
    }
}

▸ 2026-04-13

What's Changing?

Added new fields to the Standing type

  • rankDivision
  • rankConference
  • winPercentageDivision
  • winPercentageConference
  • streak
  • winDivision
  • lostDivision
  • drawDivision
  • winConference
  • lostConference
  • drawConference
  • gamesLive
  • winOnPenalty
  • lostOnPenalty
  • winOnExtraTime
  • lostOnExtraTime
  • winOnPenaltyAway
  • winOnPenaltyHome
  • lostOnPenaltyAway
  • lostOnPenaltyHome
  • winOnExtraTimeAway
  • winOnExtraTimeHome
  • lostOnExtraTimeAway
  • lostOnExtraTimeHome

▸ 2026-03-05

What's Changing?

  • Removed userId field form these types:
    • Application
    • BettingMarket
    • BettingMarketOutcome
    • Bonus
    • BonusType
    • Bookie
    • BookieCountrySubdivisionAssociation
    • Channel
    • Country
    • Currency
    • GoLink
    • PaymentType
    • Promotion
    • PromotionOddsBoost
    • PromotionOddsBoostMatchAssociation
    • PromotionOddsBoostMatchAssociationBettingMarketOutcomeAssociation
    • PromotionType
  • Removed comment field form these types: Bonus, MatchResult
  • Removed productOwnerUserId field form Application type

▸ 2026-02-27

What's Changing?

  • Added the uniqueId field to the Bet type. This field is unique for each bet.

▸ 2025-11-28

What's Changing?

  • Added the images field to the Sport type

▸ 2025-11-24

What's Changing?

  • Added the brandColor field of type ImageBrandColor to the Image type

▸ 2025-11-24

What's Changing?

  • Added the mandatory argument bookieId on BetFilter input type
  • Field matchMonth on Bet type is removed

▸ 2025-11-21

What's Changing?

  • Argument matchDate added to MatchesOrderBy input type. This argument allows to sort matches by match date.

▸ 2025-11-05

What's Changing?

HrefReplaced type added to the GoLink type. This type is used to retrieve the href of the link with replaced tracking parameters (when available).

Example Queries

query MyQuery {
    goLink(filter: {id: "1"}) {
        id
        href
        hrefReplaced(filter: {bookieIds: [2]}) {
            href
            affiliateId
            applicationId
            entityId
            entityType
            country
            countrySubdivisionCode
        }
    }
}

Result

{
  "data": {
    "goLink": {
      "id": "1",
      "href": "https://www.test.com/open-account?###affiliate_params###",
      "hrefReplaced": [
        {
          "href": "https://www.test.com/open-account?affiliate=case123",
          "affiliateId": "affiliate=case123",
          "applicationId": 1,
          "entityId": 2,
          "entityType": 'bookie',
          "country": null,
          "countrySubdivisionCode": null
        },
        {
          "href": "https://www.test.com/open-account?affiliate=case456",
          "affiliateId": "affiliate=case456",
          "applicationId": 1,
          "entityId": 2,
          "entityType": 'bookie',
          "country": "AT",
          "countrySubdivisionCode": null
        }
      ]
    }
  }
}

▸ 2025-11-03

What's Changing?

  • Field roundMarker on Round type now returns an array

▸ 2025-10-21

What's Changing?

  • Added root queries round and rounds
  • New RoundFilter and RoundsFilter are added
  • Old RoundFilter type renamed to the CompetitionRoundFilter
  • New arguments ids, seasonIds and currentMatchDays are added to the CompetitionRoundFilter with the same functionality as the old arguments
  • Old arguments id, seasonId and currentMatchDay in CompetitionRoundFilter will be deprecated
  • Argument ids is required without seasonIds on CompetitionRoundFilter
  • Matches can be filter based on the roundIds
  • MatchDay argument in Matches filter are also considering group_matchday
  • TeamPerson relation added to the Person type
  • New arguments added to the PersonsFilter

Remove Notice

The old arguments will be removed on November 18, 2025. After this date, queries using the deprecated arguments will no longer be supported.

Example Queries

Old Query (Deprecated)

query OldQuery($filter: RoundFilter!) {
    competitions {
        data {
            rounds(filter: $filter) {
                data {
                    id
                }
            }
        }
    }
}
{
"filter": {
    "id": ["1"],
    "currentMatchDay": [10],
    "seasonId": [10]
    }
}

New Query (Recommended)

query NewQuery($filter: CompetitionRoundFilter!) {
    competitions {
        data {
            rounds(filter: $filter) {
                data {
                    id
                }
            }
        }
    }
}
{
"filter": {
    "ids": ["1"],
    "currentMatchDays": [10],
    "seasonIds": [10]
    }
}

▸ 2025-10-13

What's Changing?

SerachId field is now available for application groups, channels, markets, persons, and sports. The SearchIdResult type is extended to support the new types.

▸ 2025-09-22

What's Changing?

  • The field differenceName will be replaced by differenceType in the Standing type.
  • The field differenceName is now nullable.

Remove Notice

The old field will be removed on October 27, 2025. After this date, queries using the deprecated types will no longer be supported.

Example Queries

Old Query (Deprecated)

query OldQuery {
    standings {
        data {
            id
            differenceName
        }
    }
}

New Query (Recommended)

query NewQuery {
    standings {
        data {
            id
            differenceType
        }
    }
}

▸ 2025-09-19

What's Changing?

The goLinks filters now use soft filtering. Soft Filtering means that if, for example, you filter by Country AT, you will get back both all AT goLinks and all globally available goLinks without a country restriction. Previously, globally defined goLinks were excluded when filtering by a specific country. The same behaviour also applies to the other mentioned soft filters.

The soft filter arguments are:

  • countries
  • countrySubdivisionCodes
  • languages
  • platforms
  • devices

▸ 2025-09-10

What's Changing?

The country argument in these filters is renamed to countries.

  • BetsFilter
  • MatchEntityBetsFilter

Remove Notice

The old argument will be removed on October 27, 2025. After this date, queries using the deprecated argument will no longer be supported.

Example Queries

Old Query (Deprecated)

query OldQuery {
  matches {
    data {
      id
      bets(filter: {
        bookieIds: 10, 
        country: [AT, DE] # Deprecated
        }) {
        data {
          id
        }
      }
    }
  }
}

New Query (Recommended)

query NewQuery {
  matches {
    data {
      id
      bets(filter: {
        bookieIds: 10, 
        countries: [AT, DE]
        }) {
        data {
          id
        }
      }
    }
  }
}

▸ 2025-09-04

What's Changing?

  • The competitionCollectionId argument in the MatchesFilter is replaced by competitionCollectionIds and now accepts arrays.

Remove Notice

The old argument will be removed on October 27, 2025. After this date, queries using the deprecated argument will no longer be supported.

Example Queries

Old Query (Deprecated)

query OldQuery {
    matches(filter: {competitionCollectionId: 2}) {
        data {
            id
            competitionId
        }
    }
}

New Query (Recommended)

query NewQuery {
    matches(filter: {competitionCollectionIds: [2]}) {
        data {
            id
            competitionId
        }
    }
}

▸ 2025-08-21

What's Changing?

  • Introduced the new goLink(s) root query and field type
  • Moving deepLinks filter to the goLinks
  • New type selection argument for the goLinks filter
  • Deprecating the deepLinks field in the bookie type
  • Deprecating some fields in the DeepLink type
  • Removing isFiltersFallbackActive from bookie.deepLink filter

Remove Notice

The deprecated fileds will be removed on October 27, 2025. After this date, queries using the deprecated fields will no longer be supported.

Example Queries

Old Query (Deprecated)

query OldQeury {
    bookies {
        data {
            id
            deepLinks(filter: {country: AT}) { #deprecated
                id #deprecated
                countries #deprecated
                urlPattern #deprecated
                isFillingBetSlip
                glue
            }
        }
    }
}

New Query (Recommended)

query NewQuery {
    bookies {
        data {
            id
            goLinks(filter: {countries: AT, types: [DEEP_LINK, MULTI_DEEP_LINK]}) {
                data {
                    id # same as deepLink id
                    countries # same as deepLink countries
                    href # same as deepLink urlPattern
                    deepLink {
                        isFillingBetSlip
                        glue
                    }
                }
            }
        }
    }
}