F1 / MLB / NHL / Bundesliga Scores — $0.001/result avatar

F1 / MLB / NHL / Bundesliga Scores — $0.001/result

Pricing

from $1.00 / 1,000 events

Go to Apify Store
F1 / MLB / NHL / Bundesliga Scores — $0.001/result

F1 / MLB / NHL / Bundesliga Scores — $0.001/result

You pay only for results actually returned. Nothing found, nothing charged. Fixtures, live status and final results for Formula 1, MLB, the NHL and the Bundesliga. Reads openly published APIs — Jolpica, MLB StatsAPI, the NHL API and OpenLigaDB — with no key and no browser.

Pricing

from $1.00 / 1,000 events

Rating

0.0

(0)

Developer

Shun Furu

Shun Furu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Sports Scores & Fixtures — F1, MLB, NHL, Bundesliga

Fixtures, live status and final results, read from openly published APIs. No key, no browser, no HTML parsing.

Input: ["f1", "mlb", "nhl", "bundesliga"]
Output: one row per event — teams or drivers, score, status, venue, kick-off time

Where the data comes from

This Actor does not scrape anybody's website. Each competition is read from a source that deliberately publishes its data for anyone to use, without a key:

CompetitionSourceWhat it is
Formula 1JolpicaThe community successor to Ergast, the open F1 results API that ran for over a decade
MLBMLB StatsAPIMajor League Baseball's own public endpoint
NHLNHL APIThe NHL's own public endpoint
BundesligaOpenLigaDBA community project publishing German football as open data

Every row carries a source field, so you can always see which API a given fact came from and check it yourself.

One source deliberately left out

ESPN's scoreboard endpoint would have added a dozen more leagues. It answers 200 to a request from curl, and 403 to a request whose user agent honestly says what the client is.

Finding a string that gets through would be working around a refusal, so this Actor does not use ESPN at all. Fewer competitions, and no argument about whether it should be reading them.

Input

Every field is optional. Run it with the defaults and it works.

FieldTypeDefaultWhat it does
competitionsarray of strings["f1", "bundesliga", "mlb"]Which to read: f1, bundesliga, mlb, nhl. Names work too — "Formula 1"
seasonstringcurrentSeason year, e.g. 2026. Applies to F1 and the Bundesliga
datestringcurrentYYYY-MM-DD. Applies to MLB and the NHL
teamstringKeep only events involving a matching team or driver
completedOnlybooleanfalseDrop scheduled events, keeping only final results

Examples

Every finished race of the current F1 season:

{ "competitions": ["f1"], "completedOnly": true }

Yesterday's baseball, one particular team:

{ "competitions": ["mlb"], "date": "2026-08-21", "team": "Yankees" }

A full Bundesliga season, fixtures and results together:

{ "competitions": ["bundesliga"], "season": "2026" }

Output

One flat row per event. The same fields are used for every sport, so results from a race weekend and a baseball game sit in the same table without any post-processing.

FieldTypeDescription
competitionstringf1 | mlb | nhl | bundesliga
competitionLabelstringFormatted for display
sportstringmotorsport, baseball, ice hockey, football
sourcestringWhich public API this row came from
eventIdstringStable identifier
namestringAway @ Home, or the race name
seasonstringSeason the event belongs to
roundnumber | nullRound number, where the competition has one
startsAtstringISO 8601
statusstringScheduled, Final, or the source's own wording
completedbooleanWhether the event has finished
homeTeam / awayTeamstringEmpty for Formula 1
homeScore / awayScorenumber | nullNull before an event finishes
winnerstring | nullTeam, driver, or draw
winnerTeamstringWinning constructor — Formula 1 only
venue / venueCity / venueCountrystringAs published
urlstringMore information, where the source gives a link
fetchedAtstringWhen the row was produced

A SUMMARY record is written to the key-value store: which competitions were read, how many rows each produced, and any that could not be reached.

Pricing

Price
Starting a run$0.00001 — one US cent per 1,000 runs
Each event returned$0.001 — $1 per 1,000 events

Events that do not match your filters produce no rows, and errors are written to the log and to SUMMARY rather than to the dataset — so a run that finds nothing costs nothing.

Typical uses

  • Fantasy and prediction tools — a schedule and a result feed without a paid data contract.
  • Dashboards and bots — post final scores as they land.
  • Analysis — pull a whole season in one run and work on it offline.
  • AI agents — flat JSON, no key to manage, sensible defaults that work on the first call.

Notes on data and compliance

  • Only public, unauthenticated endpoints are used. Nothing behind a login is touched.
  • Fixtures and results are public facts about public events. No personal data is collected.
  • No bot protection is bypassed and no rate limits are circumvented; the Actor backs off on 429.
  • Sources that decline programmatic access are not used, rather than worked around.

Limitations — stated up front

  • Four competitions, for the reason given above. If a competition you need has an openly published API, open an issue and it can be added — that is the only bar it has to clear.
  • Formula 1 rows carry the race winner and constructor, not a full classification.
  • The Bundesliga endpoint returns a whole season at once, so date does not apply to it.
  • Live in-progress scores are as fresh as the source publishes them; there is no separate low-latency feed.

Not affiliated

This is an independent tool. It is not affiliated with, endorsed by, or sponsored by Formula 1, Major League Baseball, the National Hockey League, the Deutsche Fußball Liga, or any of the organisations whose published data it reads. All names and trademarks belong to their respective owners.