It might be worth having a look into the publishing queue. This is the piece that keeps track of every change made in Sitecore and is used by the "Incremental Publish" option.
There is even an API to use:
IdList queue = Sitecore.Publishing.PublishManager.GetPublishQueue(startDate, ToDate, Context.CurrentDatabase)
IdList queue = Sitecore.Publishing.PublishManager.GetPublishQueue(startDate, ToDate, Context.CurrentDatabase)
The publish queue will give you a list of the IDs of items which have had a change made during the period provided in the parameters.