There is not an easy way to accomplish what you’re asking.
It is possible to get contacts via the API or even to trigger webhooks from a HubSpot workflow. An individual contact will include the contact properties and list memberships. I would encourage you to read this doc to understand what is contained within the JSON of an individual Contact: https://developers.hubspot.com/docs/methods/contacts/contacts-overview. If you wanted to go the route of sending a webhook from a workflow, read about that here: https://knowledge.hubspot.com/articles/kcs_article/workflows/how-do-i-use-webhooks-with-hubspot-workflows
This will not contain all page views, engagements and email touch points. Email touch points can be accessed via the Email Events API. The overview is here: https://developers.hubspot.com/docs/methods/email/email_events_overview , there are other various endpoints available, see the sidebar of the Email Events API
Further, engagement data can be gathered here: https://developers.hubspot.com/docs/methods/engagements/get_associated_engagements
The easiest option will be to grab the Contact JSON and recreate the contact based on the properties included, it just won’t contain the engagements, emails and page views.