Skip to content

Race Results

Examples for working with race results and session data.

import { IRacingDataClient } from 'iracing-data-client';
const iracing = new IRacingDataClient({
auth: {
type: 'password-limited',
clientId: process.env.IRACING_CLIENT_ID!,
clientSecret: process.env.IRACING_CLIENT_SECRET!,
username: process.env.IRACING_USERNAME!,
password: process.env.IRACING_PASSWORD!,
},
});
async function getSessionResults(subsessionId: number) {
const results = await iracing.results.get({ subsessionId });
console.log(`Session: ${results.sessionName}`);
console.log(`Track: ${results.trackName}`);
console.log(`Series: ${results.seriesName}`);
// Process each session (practice, qualify, race)
results.sessionResults.forEach(session => {
console.log(`\n${session.simsessionTypeName}:`);
session.results.forEach(result => {
console.log(` P${result.finishPosition}: ${result.displayName}`);
console.log(` Laps: ${result.lapsComplete}`);
console.log(` Incidents: ${result.incidents}`);
});
});
return results;
}
async function searchSeriesResults(seasonId: number, weekNum?: number) {
const results = await iracing.results.searchSeries({
seasonId,
raceWeekNum: weekNum,
official: true
});
return results.map(session => ({
sessionId: session.subsessionId,
startTime: session.startTime,
trackName: session.trackName,
strengthOfField: session.strengthOfField,
winnerName: session.winnerName,
winnerTime: session.winnerLapsComplete
}));
}
async function getLapData(subsessionId: number, custId?: number) {
const lapData = await iracing.results.lapData({
subsessionId,
simsessionNumber: 0, // 0 = Race session
custId // Optional: filter by driver
});
// Analyze lap times
const laps = lapData.lapData;
const fastestLap = Math.min(...laps.map(l => l.lapTime));
const averageLap = laps.reduce((sum, l) => sum + l.lapTime, 0) / laps.length;
console.log(`Total laps: ${laps.length}`);
console.log(`Fastest lap: ${(fastestLap / 10000).toFixed(3)}s`);
console.log(`Average lap: ${(averageLap / 10000).toFixed(3)}s`);
return {
laps,
fastestLap,
averageLap
};
}