betfair-exchange-api
Version:
A TypeScript client for the Betfair Exchange API
114 lines (113 loc) • 6.03 kB
JavaScript
;
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();