Short answer
Use search for filtered sets (200 per page, 10,000 per query, five requests per second). Use the basic list endpoint, paging with after, to walk through an object. Use batch read when you already have IDs or unique values. Use webhooks to learn about changes instead of re-reading. Add propertiesWithHistory when you need past values.
1. Quick map
- Filtered list: search. Limits in search API limits.
- Everything: GET list with
afterpaging. - Specific records: batch read by ID or unique property.
- History: propertiesWithHistory.
- Live changes: webhooks.
2. SQL-style queries
HubSpot's HubSQL is covered in HubSQL.
3. Budget
All of these count against rate limits, so pick the one that needs the fewest calls.