Yes, a WebCore app that monitors when “thermostatOperatingState” changes to “heating”, and then back to “idle” or “fan only” would do the trick.
So long as you understand that, dependent upon the thermostat and the SmartThings DTH that you use, you could be off by a few seconds, a minute or even 5-15 minutes. This due to any delays in reporting to the Thermostat’s Cloud, and the polling delay from the SmartThings cloud/DTH to the thermostat Cloud. Once you know your polling frequency delay, you can just add in a fudge-factor (ie., if the polling frequency is 60 seconds, on average your app will be off by 30 seconds - so just add 30 seconds to the time calculated when the operating state returns to “idle”).
This gets a little trickier with multi-stage heat (usually gas, but could be done with oil as well). For this, you’ll need a thermostat that is actually controlling the Stage 1 to Stage 2 transition, and you’ll need a DTH that reports the various stages. My DTH for Ecobee thermostats does report this (as equipmentOperatingState), not sure if there are any other DTHs that do.
Heat pumps will also be a bit harder, since they will typically use electricity to pump heat into the house, but the can use aux heating if the baseline isn’t sufficient. Usually this is just more electricity, but I supposed there could be a gas backep. Again, my Ecobee DTH will tell you if using AuxHeat/Emergency Heat (in equipmentOperatingState).
If you’re interested in using Ecobee thermostats with SmartThings, you can find my DTH and supporting Suite here: [RELEASE] Free Ecobee Suite, Version 1.2.*