Last modified: August 22, 2025
Use the exports API to export records and property data from your HubSpot account, retrieve a URL to download an export file, or see the status of an export. Within HubSpot, you can also export records or view a log of past exports in your account.

Start an export

To start an export, make a POST request to /crm/v3/exports/export/async. Your request body should specify information such as the file format, the object and properties you want to export, and the type of export you’re completing (e.g., exporting an object view or a list). You can also filter the property data to be exported based on specific operators. For both view and list exports, you can include the following fields in your request:
ParameterDescription
exportTypeThe type of export, either VIEW (exports a view from an object index page) or LIST (exports a list).
formatThe file format. Options include XLSX, CSV, or XLS.
exportNameThe name of the export.
languageThe language of the export file. Options include DE, EN, ES, FI, FR, IT, JA, NL, PL, PT, or SV. Learn more about supported languages.
objectTypeThe name or ID of the object you’re exporting. For standard objects, you can use the object’s name (e.g., CONTACT), but for custom objects, you must use the objectTypeId value. You can retrieve this value by making a GET request to /crm/v3/schemas.
associatedObjectTypeThe names or IDs of associated objects to include in the export. You can export up to four associated objects per request. For associated objects, the export will contain the associated record IDs of that object. If you export only one associated object or set the includePrimaryDisplayPropertyForAssociatedObjects field to true, the records’ primary display property values will also be exported (e.g., name for companies).
objectPropertiesA list of the properties you want included in your export. By default, property names and values are shown as the human-readable labels, but you can request internal names and values using the exportInternalValuesOptions parameter.
includePrimaryDisplayPropertyForAssociatedObjectsInclude this field with the value true to export the primary display property values for all associated records (e.g., name for companies). If you’re only exporting one associated object (indicated by the associatedObjectType field), this is set to true by default. If you’re exporting more than one associated object, the value is set to false by default.
includeLabeledAssociationsInclude this field with the value true to export association labels to describe the relationship between associated records.
exportInternalValuesOptionsInclude this array to export the internal values for property names and/or property values. In the array, include NAMES to export internal names of properties (shown as column headers) and/or VALUES to export internal property values (e.g., numerical values for custom pipeline stages or timestamps instead of human-readable dates).
overrideAssociatedObjectsPerDefinitionPerRowLimitInclude this field with the value true to override the default 1,000 association per row limit.

Export a view

If you’re exporting an index page view, your exportType value should be VIEW, and you can include the following field to filter and sort the records you’re exporting:
ParameterDescription
publicCrmSearchRequestIndicates which data should be exported based on certain property values and search queries. You can include the following within the object:
filters: the properties and property values to filter records by.
sorts: the sort order of a property’s values, either ascending, ASC, or descending, DES.
query: a string to search the records’ values for.
For example, to export a view of contacts and associated company records, filtered by the email property and with the internal values of property names and values, your request would look like the following:
///Example request body
{
"exportType": "VIEW",
"exportName": "All contacts",
"format": "xlsx",
"language": "DE",
"objectType": "CONTACT",
"exportInternalValuesOptions": ["NAMES", "VALUES"],
"objectProperties": ["email", "firstname", "lastname"],
"associatedObjectType": "COMPANY",
"publicCrmSearchRequest": {
"filters": [
{
"value": "hello@test.com",
"propertyName": "email",
"operator": "EQ"
}
],
"query": "hello",
"sorts": [
{
"propertyName": "email",
"order": "ASC"
}
]
}
}

Export a list

If you’re exporting a list, your exportType value should be LIST, but you also need to specify the list you’re exporting with the following field:
ParameterDescription
listIdThe ILS List ID of the list to export. You can find the ILS List ID value via the list details in HubSpot. Navigate to Contacts > Lists, hover over the list in the table, then click Details. In the right panel, click Copy List ID next to the ILS List ID value. Contact lists have two different ID values, but you must use the ILS List ID value in your request.
For example, to export a list with the contacts’ emails, your request may look like the following:
///Example request body
{
"exportType": "LIST",
"listId": 1234567,
"exportName": "Marketing email contacts",
"format": "xlsx",
"language": "EN",
"objectType": "CONTACT",
"objectProperties": ["email"]
}

Retrieve exports

When you successfully complete an export, the export’s id will be returned in the response. To retrieve an export from your HubSpot account, make a GET request to /crm/v3/exports/export/async/tasks/{exportId}/status. When retrieving exports, the status of the export will also be returned. Possible statuses include COMPLETE, PENDING, PROCESSING, or CANCELED. For exports with a COMPLETE status, a URL is returned that you can use to download the exported file. The download URL will expire five minutes after the completed request. Once expired, you can perform another GET request to generate a new unique URL.

Please note:

Prior to expiration, an export’s download URL can be accessed without any additional authorization. To protect your data, proceed with caution when sharing a URL or integrating with HubSpot via this API.

Limits

The following limits apply:
  • You can complete up to thirty exports within a rolling 24 hour window, and one export at a time. Additional exports will be queued until the previous export is completed.
  • If you’re completing a large export, you may receive multiple files delivered in a zip file. This will occur for CSV or XLSX files with more than 1,000,000 rows and XLS files with more than 65,535 rows. CSV files are also automatically zipped if the file is greater than 2MB, even if the file has less than 1,000,000 rows.
  • By default, the number of associations per row is limited to 1,000 associations. If you want to override this limit, include the overrideAssociatedObjectsPerDefinitionPerRowLimit field with the value true.