Track Information
Track Information
Section titled “Track Information”Examples for working with track data and assets.
Track Database
Section titled “Track Database”Get All Tracks
Section titled “Get All Tracks”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 getAllTracks() { const tracks = await iracing.track.get();
// Group by category const roadCourses = tracks.filter(t => t.categoryId === 2); const ovals = tracks.filter(t => t.categoryId === 1);
console.log(`Total tracks: ${tracks.length}`); console.log(`Road courses: ${roadCourses.length}`); console.log(`Ovals: ${ovals.length}`);
// List configurations tracks.forEach(track => { console.log(`\n${track.trackName}:`); track.configs.forEach(config => { console.log(` - ${config.configName} (${config.trackLength} ${config.lengthUnit})`); }); });
return tracks;}Track Assets
Section titled “Track Assets”async function getTrackAssets() { const assets = await iracing.track.assets();
// Map assets by track ID const assetMap = new Map();
Object.entries(assets).forEach(([trackId, asset]) => { assetMap.set(parseInt(trackId), { logo: asset.logo, map: asset.trackMap, mapLayers: asset.trackMapLayers, folder: asset.folder, images: { small: asset.smallImage, large: asset.largeImage } }); });
return assetMap;}Finding Tracks
Section titled “Finding Tracks”Search by Name
Section titled “Search by Name”async function findTrackByName(searchName: string) { const tracks = await iracing.track.get();
const matches = tracks.filter(track => track.trackName.toLowerCase().includes(searchName.toLowerCase()) );
matches.forEach(track => { console.log(`${track.trackName} (ID: ${track.trackId})`); console.log(` Location: ${track.location}`); console.log(` Configurations: ${track.configs.length}`); });
return matches;}
// Search for Spaconst spaTracks = await findTrackByName('spa');Get Track Details
Section titled “Get Track Details”async function getTrackDetails(trackId: number) { const [tracks, assets] = await Promise.all([ iracing.track.get(), iracing.track.assets() ]);
const track = tracks.find(t => t.trackId === trackId); const trackAssets = assets[trackId];
if (!track) { throw new Error(`Track ${trackId} not found`); }
return { info: track, assets: trackAssets, configurations: track.configs.map(config => ({ name: config.configName, length: `${config.trackLength} ${config.lengthUnit}`, turns: config.corners, banking: config.banking, pitStalls: config.pitStalls })) };}See Also
Section titled “See Also”- Track Service - Full API reference for tracks
- Car Service - Car data and assets
- Series Service - Series and schedule information