I thought I could create a workflow that triggers on a new note, and sets the note body to a custom field in the company record, but the workflow doesn't seem to support getting the note body as token.
Currently, there isn't a way to fitler engagements based on the engagement type and the best way here is to page through the response and implement a filter logic on your system to grab only the 'Notes' engagement type.
Get most recent note from a company record (association API & engagements)
Thanks @WendyGoh, just voted on that idea. My first test returned hundreds of engagements. Your suggested approach would mean I would have to make an API call for each engagement to test if it's a note and the date/time. I'm afraid this would cause us to well exceed our API limits as each company would require hundreds of API calls.
If exceeding API limits is your team concern, you may want to check out our revised API usage guidelines: API Usage Guidelines | HubSpot API in which we increase the API limits for all customers.