UNPKG

betfair-exchange-api

Version:

A TypeScript client for the Betfair Exchange API

114 lines (113 loc) 6.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const betfair_api_client_1 = require("./betfair-api-client"); async function main() { try { // Initialize the client with your application key const client = new betfair_api_client_1.BetfairClient('YOUR_APP_KEY'); // Authenticate (choose one method) // Interactive login await client.authenticateInteractive('username', 'password'); // OR Non-interactive login (certificate based) // await client.authenticateNonInteractive('username', 'password', 'path/to/certificate.crt', 'path/to/private.key'); // Example 1: List event types (sports) console.log('Fetching available sports...'); const eventTypes = await client.betting.listEventTypes({}); console.log(`Found ${eventTypes.length} event types:`); eventTypes.forEach(et => { console.log(`${et.eventType.name} (ID: ${et.eventType.id}) - ${et.marketCount} markets`); }); // Example 2: List soccer events for today const now = new Date(); const tomorrow = new Date(); tomorrow.setDate(now.getDate() + 1); const soccerFilter = { eventTypeIds: ['1'], // 1 = Soccer marketStartTime: { from: now.toISOString(), to: tomorrow.toISOString() } }; console.log('\nFetching soccer events for today...'); const events = await client.betting.listEvents(soccerFilter); console.log(`Found ${events.length} soccer events`); if (events.length > 0) { // Example 3: Get markets for the first event const firstEvent = events[0]; console.log(`\nFetching markets for event: ${firstEvent.event.name}`); const marketFilter = { eventIds: [firstEvent.event.id] }; const markets = await client.betting.listMarketCatalogue(marketFilter, ['MARKET_DESCRIPTION', 'RUNNER_DESCRIPTION'], undefined, 10); console.log(`Found ${markets.length} markets for this event:`); markets.forEach(market => { console.log(`- ${market.marketName} (${market.marketId})`); if (market.runners) { console.log(' Selections:'); market.runners.forEach(runner => { console.log(` - ${runner.runnerName} (${runner.selectionId})`); }); } }); // Example 4: Get market prices if (markets.length > 0) { const firstMarket = markets[0]; console.log(`\nFetching prices for market: ${firstMarket.marketName}`); const priceProjection = { priceData: [betfair_api_client_1.PriceData.EX_BEST_OFFERS], virtualise: true }; const marketBooks = await client.betting.listMarketBook([firstMarket.marketId], priceProjection, betfair_api_client_1.OrderProjection.EXECUTABLE); if (marketBooks.length > 0) { const marketBook = marketBooks[0]; console.log(`Market status: ${marketBook.status}`); console.log(`Total matched: ${marketBook.totalMatched}`); console.log('Runners:'); marketBook.runners.forEach(runner => { console.log(`- Runner ${runner.selectionId}:`); if (runner.ex && runner.ex.availableToBack && runner.ex.availableToBack.length > 0) { console.log(' Best available to back:'); runner.ex.availableToBack.forEach(offer => { console.log(` - Price: ${offer.price}, Size: ${offer.size}`); }); } if (runner.ex && runner.ex.availableToLay && runner.ex.availableToLay.length > 0) { console.log(' Best available to lay:'); runner.ex.availableToLay.forEach(offer => { console.log(` - Price: ${offer.price}, Size: ${offer.size}`); }); } }); } } } // Example 5: Get account details console.log('\nFetching account details...'); const accountDetails = await client.accounts.getAccountDetails(); console.log(`Account holder: ${accountDetails.firstName} ${accountDetails.lastName}`); console.log(`Currency: ${accountDetails.currencyCode}`); console.log(`Points balance: ${accountDetails.pointsBalance}`); // Example 6: Get account funds console.log('\nFetching account funds...'); const accountFunds = await client.accounts.getAccountFunds(); console.log(`Available to bet: ${accountFunds.availableToBetBalance}`); console.log(`Current exposure: ${accountFunds.exposure}`); // Example 7: Heartbeat (automatic bet cancellation on disconnection) console.log('\nSetting up heartbeat...'); const heartbeatResult = await client.heartbeat.heartbeat(60); // 60 second timeout console.log(`Heartbeat set up with ${heartbeatResult.actualTimeoutSeconds} second timeout`); console.log(`Initial action performed: ${heartbeatResult.actionPerformed}`); // Keep alive (extend session) console.log('\nSending keep alive request...'); const keepAliveResult = await client.keepAlive(); console.log(`Keep alive result: ${keepAliveResult ? 'SUCCESS' : 'FAILED'}`); // Logout console.log('\nLogging out...'); const logoutResult = await client.logout(); console.log(`Logout result: ${logoutResult ? 'SUCCESS' : 'FAILED'}`); } catch (error) { console.error('Error:', error.message); } } main();