We want to reduce our database with people that we consider inactive, but we don't want to lose their actvity log history.
Is there a way to do this - or even a third party option?
AFAIK, No. Marketo owns activity logging and they archive using their own methods, such as 90 days with some activities.
You can export activity log history and store it elsewhere. This can't be done from Marketo interface though, only through API.
It isn't just about how to bulk-move activity logs offline (as Paul mentions, it's simple to extract activities using the API).
The other question is what purpose those offline archives are going to serve if the lead is going to be deleted and purged. You won't be able to import the activities as-is if the person is re-added.
When we extract the Activity Log, it's typically for either (a) analytics or (b) compliance (in industries in which purging logs is frowned-upon or illegal), not for preserving arbitrary activity data for safekeeping. If you want to preserve some record of the lead's activities, I recommend instead you run some smart lists and append aggregate activity data to custom fields (things like InterestingPagesViewedCount). (Unfortunately, it's a lot easier to maintain such fields using triggers than after the fact.) Then those lead-level values would be available for reimport later.
Retrieving data ...