Integrate any sports data
provider in days, not months.
One API. One schema. Every provider. Stop building plumbing — start building product.
Now accepting launch partners.
Works with feeds from
The problem
The sports data
integration tax.
Every team building on sports data pays it. Few talk about it.
Greenfield per provider
Opta delivers XML over SFTP. SportRadar uses JSON push. Genius Sports has a proprietary WebSocket protocol. Different schemas, different entity models, different delivery mechanisms.
Zero redundancy
When your single provider goes down during a Premier League matchday, your platform goes dark. Building a redundant integration means doubling your data layer complexity.
150K+ entity mappings
The same player has a different ID in every system. Your team maintains a mapping table across 30+ sports. Every transfer window, it breaks.
The solution
One integration.
Every provider.
Connect once. We handle the rest.
Features
Everything you need to build
on sports data.
Enterprise capabilities. Zero infrastructure burden.
Automatic Failover
Configure failover per sport: when your primary drops, the secondary takes over. Your app never knows.
Entity Resolution
One canonical ID for every player, team, and competition — regardless of source.
7hG2kMsL
Real-time & Streaming
Every entity is subscribable. GraphQL subscriptions, Kafka Connect, or webhooks — pick your delivery method.
Developer Experience
Power users query GraphQL directly. Everyone else uses auto-generated typed clients. Full autocomplete, subscription lifecycle handled.
query GetMatch($id: ID!) {
match(id: $id) {
status
homeClub { name score }
awayClub { name score }
events(last: 5) {
type
minute
player { name }
confidence
}
activeFeed { provider status }
}
}
Provider Marketplace
Browse, enable, and swap providers per sport. Add cricket coverage in 5 minutes, not 5 months.
Data Quality Scoring
Cross-provider comparison on every data point. Confidence scores. Alerts when providers disagree.
How it works
Live in production
in an afternoon.
Not months of integration work. Connect, validate, deploy.
Connect and configure
Add your provider credentials. Relay detects the feed format, resolves entities, and starts ingesting.
$ relay provider add opta --credentials $OPTA_KEY
✓ Feed detected: Opta F9 (XML/SFTP)
✓ Ingesting: 14,847 entities resolved
✓ Failover: SportRadar set as secondary
$ relay provider status
opta ● active 8,291 players 1,204 teams
sportradar ● standby failover ready
Validate data quality
Review entity mappings, check cross-provider confidence scores, and verify data before going live.
$ relay entities validate --sport football
┌─────────────┬──────────┬────────────┐
│ Entity │ Mapped │ Confidence │
├─────────────┼──────────┼────────────┤
│ Players │ 8,291 │ 99.2% │
│ Teams │ 1,204 │ 99.8% │
│ Competitions│ 312 │ 98.4% │
└─────────────┴──────────┴────────────┘
12 entities flagged for manual review
Go live with failover
Configure failover thresholds, subscribe to real-time events, and deploy. Relay switches providers automatically.
const relay = new Relay({
apiKey: process.env.RELAY_KEY,
failover: { threshold: "5s", alert: true },
});
relay.match.subscribe("epl-gw38", {
onEvent: (e) => broadcast(e),
onFailover: (from, to) =>
log("switched " + from + " -> " + to),
});
Infrastructure
Enterprise-grade
from day one.
Built for the teams that need to bring this to a security review.
Stop rebuilding sports
data pipelines.
We're selecting 4 launch partners. You bring your provider feeds and honest feedback — we build the adapters to your spec and give you a direct line to engineering.
Tell us what providers you use, what sports you cover, and what you're building.
Running a league? Looking for fan engagement?
Explore FanScore Platform— fan engagement for leagues