@sportsdatabase/sdk
v0.0.2
Published
Official TypeScript SDK for SportsDatabase.io
Maintainers
Readme
SportsDatabase TypeScript SDK
Official TypeScript client for SportsDatabase.io, providing typed access to leagues, teams, events, schedules, scores, and more with first-class pagination helpers and error handling.
Installation
npm install @sportsdatabase/sdk
# or
yarn add @sportsdatabase/sdkQuick Start
import { SportsDatabaseClient } from '@sportsdatabase/sdk';
const client = new SportsDatabaseClient({
apiKey: process.env.SPORTSDB_API_KEY!,
baseUrl: 'https://api.sportsdatabase.io/v1'
});
const games = await client.events.getByDate({ sport: 'soccer', date: '2025-05-01' });
console.log(games.data.map((event) => `${event.homeTeamId} vs ${event.awayTeamId}`));ELI5: Getting Started Fast
- Install the package – run
npm install @sportsdatabase/sdk. - Grab your API key – copy it from the SportsDatabase portal.
- Create the client – drop this snippet into your app:
import { SportsDatabaseClient } from '@sportsdatabase/sdk'; const client = new SportsDatabaseClient({ apiKey: 'YOUR_KEY' }); - Make a call – try
client.leagues.list({ sportSlug: 'soccer' })and log thedata. - Handle pagination – if
meta.nextCursorexists, pass it back incursorto fetch the next page (or useclient.events.iterateto do it for you). - Watch rate limits – every response includes
meta.rateLimitandmeta.requestId, so log them when debugging. - Avoid surprises – wrap calls in
try/catchand check forApiError,RateLimitError, orNetworkErrorto show friendly messages.
If you can run node sample.js and see JSON printed, you’re good to explore deeper endpoints.
Configuration
| Option | Type | Default | Description |
|-------------------|----------|-----------------------------------|----------------------------------------------------|
| apiKey | string | required | API key from the SportsDatabase portal |
| baseUrl | string | https://api.sportsdatabase.io/v1| Override for staging/self-hosted deployments |
| timeoutMs | number | 10_000 | Request timeout in milliseconds |
| maxRetries | number | 2 | Automatic retries for 429/5xx responses |
| userAgentSuffix | string | '' | Extra identifier appended to SDK user-agent |
Endpoints Overview
client.sports(coming soon) — list available sports.client.leagues.list({ sportSlug, status })client.teams.list({ leagueId, season })client.events.list({ sport, league, date, status })client.events.iterate(...)— async iterator over paginated events.client.schedules.teamNext({ teamId }),client.schedules.iterateLeagueSeason(...)client.scores.getByEvent(eventId)— latest score snapshot.
Each method returns a typed response with data and meta (including rate-limit headers and request ID).
Pagination Helpers
Use client.events.iterate() or the exported helpers:
import { iterateItems } from '@sportsdatabase/sdk';
const iterator = iterateItems(client.events.list.bind(client.events), {
initialParams: { sport: 'basketball', limit: 50 }
});
for await (const event of iterator) {
// consume pages transparently
}Error Handling
Errors extend SportsDatabaseError and include:
ApiError— non-2xx responses withstatus,code,details.RateLimitError— 429 responses withresetAt.NetworkError— network failures after retry attempts.
try {
await client.events.getById('evt_123');
} catch (error) {
if (error instanceof RateLimitError) {
console.log(`Retry after ${error.resetAt}`);
}
}Examples
| Script | Description |
|--------------------------|-------------------------------------|
| examples/get_today_events.ts | Fetches today's soccer events |
| examples/list_leagues.ts | Lists active leagues for a sport |
| examples/smoke_test.ts | Integration smoke script |
Run via tsx/ts-node or compile with tsc.
Development
npm install
npm run lint
npm run testCI runs linting, type-checking, and tests via GitHub Actions (.github/workflows/ci.yml).
Versioning
This SDK follows semantic versioning and mirrors major/minor releases of the public API:
MAJORversion only changes when the API introduces breaking changes that require SDK adjustments.MINORbumps ship new endpoints or fields that are backward-compatible.PATCHreleases contain bug fixes or documentation updates.
Publish from a clean tree after running npm run lint, npm run test, and npm run build, then npm publish --access public.
License
MIT © SportsDatabase.io
