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(`Season: ${results.seasonName}`);
console.log(`Track: ${results.track.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(
seriesId: number,
seasonYear: number,
seasonQuarter: number,
weekNum?: number
) {
const results = await iracing.results.searchSeries({
seriesId,
seasonYear,
seasonQuarter,
raceWeekNum: weekNum,
officialOnly: true
});
return {
rows: results.data.chunkInfo.rows,
chunkFiles: results.data.chunkInfo.chunkFileNames,
baseDownloadUrl: results.data.chunkInfo.baseDownloadUrl,
};
}
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
};
}