5DollarFootballAPI Leagues API

Competitions and their seasons, plus a whole season of fixtures.

OpenAPI Specification

5dollarfootballapi-leagues-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 5DollarFootballAPI — Football Data Leagues API
  version: 1.0.0
  summary: 'Football (soccer) data: live scores, fixtures, standings, corner and card statistics, and odds.'
  description: 'The 5DollarFootballAPI is a read-only REST API. Every response is JSON with a top-level "success" flag. All timestamps are UTC (ISO-8601). The base URL is https://api.5dollarfootballapi.com/v1.


    Authenticate every request with your API key in an Authorization header: `Authorization: Bearer fb_live_your_key`. You can also send it as `X-API-Key`. Get a key by creating a free account — no card required. Keys are shown once; store them securely and never embed them in public client-side code.


    Each plan has a per-minute rate window — short parallel bursts are fine as long as the minute total holds, and there are no daily caps or monthly pools. Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` for the current window. When you exceed the limit you get HTTP 429 with a `Retry-After` header — back off and retry.


    List endpoints accept `page` (default 1) and `per_page` (default 50, max 100), and return a `pagination` object: `{ page, per_page, count, has_more }`. Keep requesting the next page while `has_more` is true. The underlying set can change between two page requests (a match kicks off or finishes); for the volatile live view, request `status=live` with a large `per_page` (up to 500) so a single page holds everything.


    Errors return `{ "success": 0, "error": { ... } }` with an HTTP status. The error object has a machine-readable `type` and `code`, a human `message`, an optional `param`, a `doc_url`, and a `request_id` to quote in support. We never return a silent `200` with empty data for a missing resource — you get a proper 404.'
  termsOfService: https://5dollarfootballapi.com/terms
  contact:
    name: 5DollarFootballAPI support
    url: https://5dollarfootballapi.com/contact
    email: contact@5dollarfootballapi.com
servers:
- url: https://api.5dollarfootballapi.com/v1
  description: Production
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: leagues
  description: Competitions and their seasons, plus a whole season of fixtures.
paths:
  /leagues:
    get:
      operationId: leagues
      summary: List leagues
      description: Competitions, filterable by popularity, country or search.
      tags:
      - leagues
      parameters:
      - name: popular
        in: query
        required: false
        description: Set to 1 for popular leagues only.
        schema:
          type: boolean
      - name: country
        in: query
        required: false
        description: Filter by country id.
        schema:
          type: integer
      - name: search
        in: query
        required: false
        description: Match on league name.
        schema:
          type: string
      - name: esports
        in: query
        required: false
        description: true | false. Defaults to false (real football only); true returns the curated list of active esoccer (e-football) competitions instead.
        schema:
          type: boolean
      - name: lang
        in: query
        required: false
        description: Localize team & league names (21 languages besides English, e.g. zh-cn, ja, es, de, pt). Missing translations fall back to English.
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Pagination.
        schema:
          type: integer
      - name: per_page
        in: query
        required: false
        description: Pagination.
        schema:
          type: integer
      responses:
        '200':
          description: Success
          headers:
            X-RateLimit-Limit:
              description: Requests allowed in the current window.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current window.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Unix timestamp when the window resets.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessEnvelope'
              example:
                success: 1
                data:
                - id: 39
                  name: Premier League
                  short_name: EPL
                  country_id: 14
                  is_popular: true
                  has_standings: true
                - id: 61
                  name: La Liga
                  short_name: LL
                  country_id: 26
                  is_popular: true
                  has_standings: true
                pagination:
                  page: 1
                  per_page: 50
                  count: 2
                  has_more: true
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: The resource is outside your plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      externalDocs:
        description: Endpoint reference
        url: https://5dollarfootballapi.com/docs/leagues
  /leagues/{id}:
    get:
      operationId: league
      summary: Get a league
      description: A single competition, with its seasons newest first — the valid ?season= values for /v1/leagues/{id}/fixtures and /v1/standings. Exactly one season is marked current.
      tags:
      - leagues
      parameters:
      - name: id
        in: path
        required: true
        description: League id.
        schema:
          type: integer
      - name: lang
        in: query
        required: false
        description: Localize the league name (21 languages, English fallback).
        schema:
          type: string
      responses:
        '200':
          description: Success
          headers:
            X-RateLimit-Limit:
              description: Requests allowed in the current window.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current window.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Unix timestamp when the window resets.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessEnvelope'
              example:
                success: 1
                data:
                  id: 39
                  name: Premier League
                  short_name: EPL
                  country_id: 14
                  is_popular: true
                  has_standings: true
                  seasons:
                  - season: 26/27
                    current: true
                  - season: 25/26
                    current: false
                  - season: 24/25
                    current: false
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: The resource is outside your plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: No such resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      externalDocs:
        description: Endpoint reference
        url: https://5dollarfootballapi.com/docs/league
  /leagues/{id}/fixtures:
    get:
      operationId: leagueFixtures
      summary: League fixtures
      description: A full season of one league's fixtures and results — the bulk entry point for historical data and backtesting. Defaults to the newest season that has fixtures; pass ?season for a specific one. Supports the same include, status and lang options as /v1/fixtures.
      tags:
      - leagues
      parameters:
      - name: id
        in: path
        required: true
        description: League id.
        schema:
          type: integer
      - name: season
        in: query
        required: false
        description: A season as listed for the league, e.g. 2026 or 26/27. Defaults to the newest season that has fixtures.
        schema:
          type: integer
      - name: start_time
        in: query
        required: false
        description: Narrow the season to a [start_time, end_time) kickoff window — unix seconds, UTC, start inclusive, end exclusive, no span limit. Handy for slicing historical data.
        schema:
          type: integer
      - name: end_time
        in: query
        required: false
        description: Narrow the season to a [start_time, end_time) kickoff window — unix seconds, UTC, start inclusive, end exclusive, no span limit. Handy for slicing historical data.
        schema:
          type: integer
      - name: status
        in: query
        required: false
        description: all | scheduled | live | finished. Defaults to all.
        schema:
          type: string
      - name: include
        in: query
        required: false
        description: Comma list of odds | events | stats — same as /v1/fixtures. Caps per_page at 50.
        schema:
          type: string
      - name: lang
        in: query
        required: false
        description: Localize team & league names (21 languages, English fallback).
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Pagination (per_page max 100; 50 with include). Fixtures are ordered by kickoff, oldest first.
        schema:
          type: integer
      - name: per_page
        in: query
        required: false
        description: Pagination (per_page max 100; 50 with include). Fixtures are ordered by kickoff, oldest first.
        schema:
          type: integer
      responses:
        '200':
          description: Success
          headers:
            X-RateLimit-Limit:
              description: Requests allowed in the current window.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current window.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Unix timestamp when the window resets.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessEnvelope'
              example:
                success: 1
                data:
                - id: 197412300
                  league:
                    id: 39
                    name: Premier League
                  teams:
                    home:
                      id: 2618
                      name: Arsenal
                    away:
                      id: 2611
                      name: Chelsea
                  kickoff_utc: '2026-08-15T16:30:00+00:00'
                  kickoff_ts: 1786811400
                  status: scheduled
                  goals:
                    home: null
                    away: null
                  corners:
                    home: null
                    away: null
                  cards:
                    home:
                      yellow: null
                      red: null
                    away:
                      yellow: null
                      red: null
                pagination:
                  page: 1
                  per_page: 50
                  count: 1
                  has_more: true
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: The resource is outside your plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: No such resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      externalDocs:
        description: Endpoint reference
        url: https://5dollarfootballapi.com/docs/league-fixtures
components:
  schemas:
    SuccessEnvelope:
      type: object
      description: Every successful response. `data` is the endpoint payload — see the example on each operation. List endpoints add `pagination`.
      required:
      - success
      - data
      properties:
        success:
          type: integer
          const: 1
        data:
          description: 'Endpoint payload: an object, or an array of objects on list endpoints.'
          oneOf:
          - type: object
          - type: array
            items:
              type: object
        pagination:
          $ref: '#/components/schemas/Pagination'
    Pagination:
      type: object
      description: Returned by list endpoints. Keep requesting pages while `has_more` is true.
      properties:
        page:
          type: integer
        per_page:
          type: integer
        count:
          type: integer
          description: Rows on this page.
        has_more:
          type: boolean
    ErrorEnvelope:
      type: object
      description: Every error response. The status code and `error.code` identify the failure; `message` is for humans.
      required:
      - success
      - error
      properties:
        success:
          type: integer
          const: 0
        error:
          type: object
          required:
          - type
          - code
          - message
          properties:
            type:
              type: string
              description: Error family, e.g. authentication_error.
            code:
              type: string
              description: Machine-readable code, e.g. missing_api_key.
            message:
              type: string
            param:
              type:
              - string
              - 'null'
              description: The parameter at fault, when one applies.
            doc_url:
              type: string
            request_id:
              type: string
              description: Quote this in support requests.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Send your key as `Authorization: Bearer <key>`.'
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: Alternative to the Authorization header.
externalDocs:
  description: Full documentation
  url: https://5dollarfootballapi.com/docs