Filtering HubSpot contacts by lead status using API - getting unwanted results

I’m trying to fetch contacts from HubSpot where the lead status field equals “Open” but I’m having trouble with the API call. When I make the request, it’s returning contacts with all lead statuses instead of just the ones I want.

I’m using the contacts API endpoint with parameters for count and properties, and trying to filter by the lead status field. However, the response includes contacts with “Closed” status too, which is not what I need.

Has anyone successfully filtered contacts by lead status using the HubSpot API? What’s the correct way to structure the request parameters to get only contacts with a specific lead status value?

Had this exact issue a few months ago - drove me nuts for hours! You’re probably hitting the wrong endpoint or your filter’s messed up. Don’t use the basic contacts endpoint for filtering. Switch to POST /crm/v3/objects/contacts/search with filterGroups in the request body. Set propertyName to your lead status field, operator to EQ, and value to Open. Here’s what got me: make sure you’re using the internal property name for lead status, not what shows up in the UI. The basic contacts endpoint is garbage for filtering custom properties, so you’ll get everything no matter what status you specify.

Had the same issue with HubSpot’s API last year. You’re probably mixing up the search endpoint with the regular contacts one. Most people try adding filter parameters to the GET contacts endpoint, but that doesn’t filter properly. Use the search functionality instead - send a POST request to the search endpoint with proper JSON in the body. Also check that your lead status field name matches exactly what HubSpot wants. Sometimes there are underscores or different naming that aren’t obvious from the UI. The search endpoint handles custom property filtering way better than trying to add query parameters to the basic contacts endpoint.