Can I fetch linked contact details from a HubSpot Deal record in one API request?

I’m building an integration with HubSpot’s CRM API and need help with performance optimization. Currently I have a Deal ID like 42856913847 and I want to get both the deal information and the contact details that are linked to it.

My current approach:

First, I call the deals endpoint with associations:

GET https://api.hubapi.com/crm/v4/objects/deals/42856913847?associations=contacts

This returns something like:

{
  "id": "42856913847",
  "properties": {
    "amount": "5000",
    "dealname": "Enterprise Package",
    "dealstage": "presentationscheduled",
    "createdate": "2025-05-15T10:30:22.156Z",
    "pipeline": "sales"
  },
  "associations": {
    "contacts": {
      "results": [
        {
          "id": "251847963742",
          "type": "deal_to_contact"
        }
      ]
    }
  }
}

The issue I’m facing:

To get contact information like name and email, I have to make another request:

GET https://api.hubapi.com/crm/v4/objects/contacts/251847963742?properties=firstname,lastname,email

This creates performance problems when deals have multiple contacts because each one needs a separate API call.

What I’m looking for:

Is there a way to get deal data AND contact properties in one single request? Something that would return both the deal info and expanded contact details without needing multiple HTTP calls?

I’ve tried looking through the documentation but couldn’t find any parameter that lets me expand associated objects with their properties included.

HubSpot’s API doesn’t support fetching associated object properties in one call. You’re stuck with that two-step process.

This is where automation platforms really shine though. Instead of writing custom code for multiple API calls, batch requests, and rate limiting, you can set it up visually.

I’ve done similar integrations pulling deal data with associated contacts. The platform automatically handles sequential API calls, manages rate limits, and combines everything into clean output.

Set up a workflow that:

  • Takes your Deal ID as input
  • Fetches the deal with associations
  • Loops through each contact ID
  • Makes parallel contact requests
  • Combines everything into one response

It handles errors gracefully too. One contact request fails? Doesn’t break the whole process.

Way more maintainable than custom code managing multiple HTTP calls, especially when HubSpot’s rate limits kick in.

Check out Latenode for API orchestration: https://latenode.com

unfortunatly hubspot dosnt let you expand assoc object properties in single requests. your approach is right, but you can speed things up with their batch api - hit multiple contacts at once instead of going one by one. makes a huge difference when you’re dealing with lots of contacts per deal.

Hit the same wall building a reporting dashboard for deals with contact info. The API just doesn’t do nested expansion for associated objects - period. Here’s what actually worked: batch requests plus caching. Pull your deal associations first, then cache the contact data so you’re not hammering the API for the same contacts over and over. Super helpful when multiple deals share contacts. Pro tip: when you’re grabbing contact properties, get everything upfront - firstname, lastname, email, company, phone, lifecycle stage, whatever. Don’t just grab the basics and come back later when you realize you need more data. Yeah, there’s a performance hit, but proper batching and caching keeps things smooth even with messy deal-contact relationships.