XooCode(){

SportsTeam

SportsTeam is a SportsOrganization subtype (extending Organization) for teams of athletes: basketball teams, football clubs, cricket sides, esports teams. It has 3 properties of its own (athlete, coach, gender) plus sport inherited from SportsOrganization. Google uses it for the sports knowledge panel, team schedules, and results.

The type hierarchy is Thing → Organization → SportsOrganization → SportsTeam. This means SportsTeam inherits all Organization properties: name, url, logo, address, member, foundingDate, sameAs. It does NOT inherit from LocalBusiness or Place (a team is an organization, not a venue).

Full example of schema.org/SportsTeam json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/SportsTeam
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@id": "https://dunmoredynamos.com#team",
  "@type": "SportsTeam",
  "name": "Dunmore Dynamos",
  "description": "Community basketball team representing Dunmore in the Lackawanna County League. Founded 2018. Home games at The Thunderdome.",
  "url": "https://dunmoredynamos.com",
  "logo": "https://dunmoredynamos.com/images/logo.png",
  "sport": "Basketball",
  "gender": "https://schema.org/Male",
  "foundingDate": "2018",
  "coach": {
    "@type": "Person",
    "name": "Marcus Webb",
    "url": "https://dunmoredynamos.com/staff/marcus-webb"
  },
  "athlete": [
    {
      "@type": "Person",
      "name": "Devon Carter",
      "url": "https://dunmoredynamos.com/roster/devon-carter"
    },
    {
      "@type": "Person",
      "name": "Jamal Torres",
      "url": "https://dunmoredynamos.com/roster/jamal-torres"
    }
  ],
  "location": {
    "@type": "StadiumOrArena",
    "name": "The Thunderdome",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Dunmore",
      "addressRegion": "PA"
    }
  },
  "sponsor": {
    "@id": "https://xoocode.com#organization"
  },
  "memberOf": {
    "@type": "SportsOrganization",
    "name": "Lackawanna County Basketball League"
  }
}
</script>

athlete and coach

athlete takes a Person object (or array) representing current players. coach takes a Person object for coaching staff. Google reads these for the team's knowledge panel roster. Include at least the name on each Person. Adding url or sameAs (Wikipedia, team profile page) helps Google match the person to an existing knowledge graph entity.

sport

sport (inherited from SportsOrganization) is a text string or URL describing the sport: "Basketball", "Football", "Cricket". Google uses this for sport-filtered searches and to categorize the team in the knowledge panel. Use the common English name of the sport.

gender

gender on SportsTeam indicates whether the team is male, female, or mixed. It accepts GenderType values (https://schema.org/Male, https://schema.org/Female) or the text string "Mixed". This is different from gender on Person, where it describes an individual.

SportsTeam vs SportsActivityLocation

A SportsActivityLocation is a place (gym, stadium, pool). A SportsTeam is an organization (a group of athletes). The Dunmore Dynamos are a SportsTeam. The stadium they play in is a SportsActivityLocation (specifically a StadiumOrArena). Do not use one for the other.

Minimal valid version

The smallest markup that still produces a valid SportsTeam entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/SportsTeam (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SportsTeam",
  "name": "Dunmore Dynamos",
  "sport": "Basketball"
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common SportsTeam mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Using SportsActivityLocation for a team

    Wrong
    "@type": "SportsActivityLocation" for a basketball team
    Right
    "@type": "SportsTeam" for teams; SportsActivityLocation for venues

    SportsTeam is an Organization (a group of athletes). SportsActivityLocation is a Place (a gym, stadium, or field). The team plays AT the location. These are fundamentally different entities in the knowledge graph.

  2. 02

    Missing sport property

    Wrong
    SportsTeam with name and athlete list but no sport
    Right
    "sport": "Basketball"

    sport (inherited from SportsOrganization) tells Google what sport the team plays. Without it, Google has to infer the sport from the team name or other signals. This is the primary categorization property for sports knowledge panels.

  3. 03

    athlete as a plain string array

    Wrong
    "athlete": ["Devon Carter", "Jamal Torres"]
    Right
    "athlete": [{ "@type": "Person", "name": "Devon Carter", "url": "..." }]

    athlete expects Person objects, not plain strings. Person objects let Google match athletes to existing knowledge graph entities (especially important for professional athletes with Wikipedia pages or social profiles).

  4. 04

    gender as free text

    Wrong
    "gender": "Men's team"
    Right
    "gender": "https://schema.org/Male" or "gender": "Mixed"

    gender on SportsTeam accepts GenderType enum values (Male, Female as schema.org URLs) or the text string "Mixed". Free text like "Men's team" is not a recognized value and will not be parsed for gender-filtered sports searches.

About the example data

The Dunmore Dynamos are a fictional community basketball team based in Dunmore. They play at The Thunderdome and are sponsored by Xoo Code Inc. The sponsor property references Xoo Code via @id.

Comments

Loading comments...

Leave a comment