If you set MarketDataFilterData.fields to EX_MARKET_DEF then betfair exchange market streaming service will return only market definition changes.
In my video I show how Bfexplorer BOT SDK is used in simple application for gathering different kind of race data, including betfair horse prices 5 minutes before race start, betfair start prices, and finally race results.
Without using betfair market streaming service the app should either use race status service to find out when a race is turned at in-play to update betfair SP, or just query market data in reasonable time period.
The betfair market streaming service allows setting MarketFilter eventTypeIds, and many other filter criteria, what means that your app could be notified whenever betfair adds a new market to monitored eventTypeIds.
The question is how frequently such filter setting queries data on betfair side?