For Agents
Kick off asynchronous CRM exports of contacts, deals, companies, tickets, or custom objects to XLSX or CSV and poll for completion via /crm/v3/exports.
Use for: I need to export every contact created in 2026 to a CSV for a data warehouse load, Start a deal export filtered to closed-won opportunities last quarter, Check the status of an export task I started earlier, List all properties on a saved view export so I know what columns to expect
Not supported: Does not transform data, run scheduled syncs, or push results to external systems — use for kicking off async HubSpot exports and retrieving the resulting file only.
The HubSpot CRM Exports API kicks off asynchronous bulk exports of CRM data — contacts, companies, deals, tickets, custom objects, or saved views — and returns the resulting file as XLSX or CSV. It exposes one endpoint to start an export task and a second to poll its status, which is the right pattern for pulling tens or hundreds of thousands of records without paginating the search API. Exports respect HubSpot property selection and filter criteria, so agents can specify exactly which columns and which records to include.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the CRM Exports, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with CRM Exports API.
Start an asynchronous export task with POST /crm/v3/exports/export/async
Poll an export task's status and download URL via GET /crm/v3/exports/export/async/tasks/{taskId}/status
Export a saved CRM view rather than building filter criteria inline
Choose property columns explicitly so the export contains only the fields a downstream system needs
Export custom objects as well as standard contact, company, deal, and ticket data
Patterns agents use CRM Exports API for, with concrete tasks.
★ Data Warehouse Loads
Export full or filtered CRM tables on a schedule (nightly, weekly) to land them in a data warehouse like Snowflake or BigQuery. The async export endpoint accepts a list of properties and filter groups so the resulting file matches the warehouse schema, and the status endpoint returns a signed download URL once HubSpot finishes preparing the file. This is the recommended path for moving large slices of CRM data — search-based pagination is too slow above a few thousand records.
Start a contact export with type CONTACT, format CSV, and filterGroups limiting createdate to 2026, then poll GET /crm/v3/exports/export/async/tasks/{taskId}/status until status is COMPLETE.
Stakeholder Spreadsheet Pulls
Generate ad-hoc XLSX exports of saved views for stakeholders who need a snapshot rather than live data — for example, exec teams reviewing the quarterly pipeline. The export endpoint can target a saved view ID directly, so analysts do not have to rebuild filters in API calls. Status polling typically completes within a minute for views under 50,000 records.
Start an export with type DEAL, format XLSX, and the saved view ID for 'Q2 Pipeline', then return the download URL once status is COMPLETE.
Compliance Data Pulls
Run a one-time export of all contacts matching a compliance request (for example, a GDPR data subject request limited to one email address) so the records can be reviewed and redacted offline. The async pattern keeps the call non-blocking, and HubSpot's exported file includes every selected property and history. Pair with HubSpot's privacy delete endpoints once review is complete.
Start an export filtered to contact email equals 'subject@example.com' with all properties selected, poll until COMPLETE, and return the download URL.
Agent-Driven Bulk Pulls via Jentic
An AI analyst building a one-off report needs every deal closed last quarter as a CSV. Through Jentic the agent searches for the start-export operation, executes it with the right filter, then chains the status poll until the file is ready. The whole flow uses Jentic-managed credentials and returns the structured download URL for the next step.
Use Jentic to search 'start a HubSpot async export', execute POST /crm/v3/exports/export/async with type DEAL and filter dealstage equals closedwon, then chain the status poll until COMPLETE.
2 endpoints — the hubspot crm exports api kicks off asynchronous bulk exports of crm data — contacts, companies, deals, tickets, custom objects, or saved views — and returns the resulting file as xlsx or csv.
METHOD
PATH
DESCRIPTION
/crm/v3/exports/export/async
Start an asynchronous export task
/crm/v3/exports/export/async/tasks/{taskId}/status
Poll an export task and retrieve the download URL when complete
/crm/v3/exports/export/async
Start an asynchronous export task
/crm/v3/exports/export/async/tasks/{taskId}/status
Poll an export task and retrieve the download URL when complete
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth tokens and private app keys are stored encrypted in the Jentic vault. Agents receive a scoped execution token — the raw HubSpot credential is injected at call time and never enters the agent's context.
Intent-based discovery
Agents search Jentic by intent (e.g., 'start a HubSpot export') and Jentic returns the POST /crm/v3/exports/export/async operation with its input schema, so the agent calls the right endpoint without browsing HubSpot docs.
Time to first call
Direct HubSpot integration: 2-3 days for OAuth scopes, status polling, and file download handling. Through Jentic: under 1 hour — search, load, execute.
Alternatives and complements available in the Jentic catalogue.
Specific to using CRM Exports API through Jentic.
What authentication does the HubSpot CRM Exports API use?
Exports accepts OAuth 2.0 access tokens with the relevant object read scopes (e.g., crm.objects.contacts.read for contact exports) and HubSpot private app API keys passed in the private-app header. Through Jentic the credential lives in the MAXsystem vault and is injected at execution time so it never enters the agent's context.
Can I export custom objects with this API?
Yes. Pass the custom object's fully-qualified type or object type ID in the export request alongside the properties array, and HubSpot will produce the file in the same way as a standard object export. Use the Properties API to discover available property names first.
What are the rate limits for the HubSpot CRM Exports API?
Each export task counts as a single API call, so request rate is rarely the constraint — HubSpot caps the number of concurrent export jobs per account and the per-export row count instead. Poll the status endpoint at a reasonable interval (every 10-30 seconds) rather than tight loops.
How do I run an export through Jentic?
Run jentic.search('start a HubSpot async export'), load the schema for POST /crm/v3/exports/export/async, and execute it with the export type, format, and filter criteria. Then chain GET /crm/v3/exports/export/async/tasks/{taskId}/status until status is COMPLETE to retrieve the download URL.
Is the resulting file delivered synchronously?
No. The start endpoint returns a task ID immediately and the file is prepared asynchronously. Poll the status endpoint until status is COMPLETE — the response then includes a temporary download URL. Large exports can take several minutes.
Can I export based on a saved view rather than ad-hoc filters?
Yes. Pass the publicCrmSearchRequest with a savedViewId on POST /crm/v3/exports/export/async to mirror exactly what a user sees in a saved CRM view. This avoids rebuilding the same filter logic in API calls.
GET STARTED