San Francisco Giants schedule & live scores API

Get San Francisco Giants fixtures, live scores, odds and results as JSON from Realtime Sports API. The team id is 26 in baseball/mlb; filter the MLB events, live and schedule endpoints by it. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

Team id
26
Abbreviation
SF
Home venue
n/a
2026 season
164 games · record 65-97-2

Upcoming San Francisco Giants games

No games are scheduled for this period.

Times are US Eastern; refreshed hourly. Full San Francisco Giants schedule with JSON/CSV download

Recent San Francisco Giants results

Recent San Francisco Giants results
DateAwayHomeTime / ResultVenue
Sun, Sep 27Los Angeles DodgersSan Francisco Giants5 - 1 FinalOracle Park · San Francisco, California
Sat, Sep 26Los Angeles DodgersSan Francisco Giants4 - 3 FinalOracle Park · San Francisco, California
Fri, Sep 25Los Angeles DodgersSan Francisco Giants2 - 0 FinalOracle Park · San Francisco, California
Wed, Sep 23Minnesota TwinsSan Francisco Giants4 - 2 FinalOracle Park · San Francisco, California
Tue, Sep 22Minnesota TwinsSan Francisco Giants3 - 2 FinalOracle Park · San Francisco, California

Live example: team detail

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/baseball/leagues/mlb/teams/26"

Response captured from live data at 2026-10-07 15:36 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key. Captured hourly; logos trimmed to one.

Response

{
  "success": true,
  "data": {
    "id": "26",
    "uid": "s:1~l:10~t:26",
    "slug": "san-francisco-giants",
    "location": "San Francisco",
    "name": "Giants",
    "abbreviation": "SF",
    "displayName": "San Francisco Giants",
    "shortDisplayName": "Giants",
    "color": "000000",
    "alternateColor": "fd5a1e",
    "league": {},
    "venue": null,
    "isActive": true,
    "isAllStar": false,
    "logos": [
      {
        "href": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR4NWF9AUlxGEEtHFFQR",
        "width": 500,
        "height": 500,
        "alt": "",
        "rel": [
          "full",
          "default"
        ],
        "lastUpdated": "2024-07-01T17:48Z"
      },
      "... 15 more"
    ]
  }
}

Get San Francisco Giants scores in code

The events endpoint returns the whole MLB scoreboard, so keep the games where either team id is 26.

curl + jq

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/baseball/leagues/mlb/teams/26"

# This team's games in the current scoreboard (filter by team id 26)
curl -s -H "Authorization: Bearer $RSA_API_KEY" "https://www.realtimesportsapi.com/api/v1/sports/baseball/leagues/mlb/events" \
  | jq '.data[] | select(.homeTeam.id == "26" or .awayTeam.id == "26") | {name, date, status: .status.detail, home: .homeTeam.score, away: .awayTeam.score}'

JavaScript (fetch)

const TEAM_ID = "26"; // San Francisco Giants
const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/baseball/leagues/mlb/events", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { data } = await res.json();
const games = data.filter((e) => e.homeTeam.id === TEAM_ID || e.awayTeam.id === TEAM_ID);
for (const g of games) {
  console.log(g.shortName, g.status.detail, `${g.awayTeam.score}-${g.homeTeam.score}`);
}

Python (requests)

import os, requests

TEAM_ID = "26"  # San Francisco Giants
res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/baseball/leagues/mlb/events",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
for g in res.json()["data"]:
    if TEAM_ID in (g["homeTeam"]["id"], g["awayTeam"]["id"]):
        print(g["shortName"], g["status"]["detail"], g["awayTeam"]["score"], g["homeTeam"]["score"])

MCP prompt (Claude, Cursor, ChatGPT)

Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_schedule with sport "baseball" and league "mlb" for the next 14 days and list the San Francisco Giants games (team id 26) with dates and opponents; then call get_live_events and tell me if they are playing now.

Connect the hosted MCP server first: setup guide.

More endpoints for this team: /sports/baseball/leagues/mlb/teams/26/roster, /sports/baseball/leagues/mlb/injuries?team=26, /sports/baseball/leagues/mlb/news?team=26. Step-by-step builds: guides.

FAQ

How do I get live San Francisco Giants scores in JSON?
Call GET https://www.realtimesportsapi.com/api/v1/sports/baseball/leagues/mlb/events/live with a free API key and keep the games where homeTeam.id or awayTeam.id is "26". The live endpoint returns the score, period, clock and status for games in progress. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.
Is there a free San Francisco Giants API?
Yes. The Free plan of Realtime Sports API is $0 with 1,000 calls in the first 30 days, then 125 calls per month, no card. The same key covers every MLB team and the other leagues.
What is the San Francisco Giants team id?
"26" in league "mlb" (sport "baseball"). Use it with /sports/baseball/leagues/mlb/teams/26 for team details and /sports/baseball/leagues/mlb/teams/26/roster for the roster, and to filter events by homeTeam.id or awayTeam.id.
What was the last San Francisco Giants result?
Los Angeles Dodgers 5, San Francisco Giants 1 on Sun, Sep 27. No upcoming games were listed when this page was generated.
Does the API include San Francisco Giants betting odds?
Yes, for upcoming MLB games that have a line: GET /sports/baseball/leagues/mlb/events/{eventId}/odds returns the spread, moneyline and total from a single source book, and /odds/history returns line moves. It is not a multi-book comparison feed.
Can I get San Francisco Giants score alerts pushed to me?
Yes, on paid plans: register a webhook for event.score_change and event.final filtered to league "mlb", then keep deliveries where data.homeTeam.id or data.awayTeam.id is "26" (webhooks filter by league, not team). WebSocket works the same way.

All MLB team APIs · MLB API · Free MLB scoreboard widget