F1 / MLB / NHL / Bundesliga Scores — $0.001/result
Pricing
from $1.00 / 1,000 events
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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:
| Competition | Source | What it is |
|---|---|---|
| Formula 1 | Jolpica | The community successor to Ergast, the open F1 results API that ran for over a decade |
| MLB | MLB StatsAPI | Major League Baseball's own public endpoint |
| NHL | NHL API | The NHL's own public endpoint |
| Bundesliga | OpenLigaDB | A 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.
| Field | Type | Default | What it does |
|---|---|---|---|
competitions | array of strings | ["f1", "bundesliga", "mlb"] | Which to read: f1, bundesliga, mlb, nhl. Names work too — "Formula 1" |
season | string | current | Season year, e.g. 2026. Applies to F1 and the Bundesliga |
date | string | current | YYYY-MM-DD. Applies to MLB and the NHL |
team | string | — | Keep only events involving a matching team or driver |
completedOnly | boolean | false | Drop 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.
| Field | Type | Description |
|---|---|---|
competition | string | f1 | mlb | nhl | bundesliga |
competitionLabel | string | Formatted for display |
sport | string | motorsport, baseball, ice hockey, football |
source | string | Which public API this row came from |
eventId | string | Stable identifier |
name | string | Away @ Home, or the race name |
season | string | Season the event belongs to |
round | number | null | Round number, where the competition has one |
startsAt | string | ISO 8601 |
status | string | Scheduled, Final, or the source's own wording |
completed | boolean | Whether the event has finished |
homeTeam / awayTeam | string | Empty for Formula 1 |
homeScore / awayScore | number | null | Null before an event finishes |
winner | string | null | Team, driver, or draw |
winnerTeam | string | Winning constructor — Formula 1 only |
venue / venueCity / venueCountry | string | As published |
url | string | More information, where the source gives a link |
fetchedAt | string | When 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
datedoes 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.