Need to pull your Zendesk data out? Whether you're generating a report, backing up your history, migrating to a new platform, or just trying to answer a leadership question with actual numbers — you have several ways to do it. They're not all equal.
This guide covers every export method Zendesk offers, what each one actually gives you (and what it silently leaves out), and when to reach for a migration tool instead.
What You Can — and Can't — Export from Zendesk
Before you click anything, it's worth knowing what Zendesk's export system covers. There are four data types you can export:
- **Tickets** — ticket fields, status, assignee, requester, tags, dates
- **Users** — agent and end-user records
- **Organizations** — org names, domains, custom fields
What's noticeably absent from standard exports:
- Ticket comments and conversation history — the actual replies and internal notes are not included in the CSV view export
- Attachments — files attached to tickets are not bundled in any native export
- Ticket satisfaction text comments — while the raw "Good" or "Bad" satisfaction score rating is included as metadata in bulk ticket exports, the actual written text feedback left by the customer is completely stripped out
- Real-time chat transcripts — separate product, separate export path
- Custom object data — only available via API
Knowing these gaps upfront saves a lot of time. If you need conversation history, the standard export won't help — and we'll cover your options later in this guide.
Method 1 — Export Zendesk Tickets from a View (CSV)
The fastest and most accessible export method. It works without any special account configuration, and any agent with the right permissions can run it.
Step-by-step instructions
- Log in to your Zendesk account.
- In the left sidebar, click the **Views** icon (the grid of horizontal lines).
- Select the view containing the tickets you want to export. If you don't have a custom view set up, use one of the built-in views like *All unsolved tickets*.
- Go to the top-right corner of the view page. Note: If you have any active, temporary search filters applied to the view, the export button will be completely hidden. Clear all active filters first. Depending on your version, click Export CSV or click the Actions dropdown menu and select Export as CSV.
- Confirm the CSV export. Zendesk processes the file and sends a download link to the email address on your account.
- Open the email and download the ZIP file containing your CSV.
What's included in the CSV file
The exported CSV includes the column fields visible in your view, plus standard fields:
| Field | Included |
|---|---|
| Ticket ID | ✓ |
| Subject | ✓ |
| Requester name & email | ✓ |
| Assignee name | ✓ |
| Status | ✓ |
| Priority | ✓ |
| Created date / Last updated | ✓ |
| Tags | ✓ |
| Custom ticket fields | ✓ (if in view) |
| Ticket comments / replies | ✗ |
| Attachments | ✗ |
| Internal notes | ✗ |
The 1,000-ticket cap — and how to work around it
This is the most common point of frustration: Zendesk truncates view exports at 1,000 tickets. If your view contains more records, the export silently stops at 1,000 with no warning or error message.
To work around this:
- Create multiple filtered views with date ranges that each contain fewer than 1,000 tickets, then export each view separately.
- Use the full bulk export (Method 2) instead — it has no per-export ticket limit.
- Use the Zendesk API (Method 4) for programmatic access to all records.
Method 2 — Full Bulk Data Export (CSV)
The full data export gives you a complete repository of your core data without ticket count limits. It's the right method when you need a complete backup or are preparing for a migration.
How to enable data exports (Account Owner required)
By default, full data exports are disabled for security. The Account Owner does not need to contact support, but they must explicitly enable it by going to Admin Center → Account → Security → Data export. From there, you must specify approved email domains that are allowed to receive the exported files. Once configured, any admin can request an export to an approved email address.
Step-by-step: request your full ticket export
- In Zendesk, click the Admin Center icon (grid icon).
- Navigate to Account → Security → Data export.
- Scroll to the CSV export section.
- Set a date range if you want to limit the scope, or leave it blank to pull all historical records.
- Click Export.
- Zendesk processes the export in the background and emails a ZIP folder containing your CSV file to your approved email address.
Step-by-step: export users and organizations
Because the native bulk data export tool restricts CSV files exclusively to ticket records, extracting a clean spreadsheet of your customer and organization directories requires a programmatic API script:
- Generate an API token by navigating to Admin Center → Apps and integrations → APIs → Zendesk API.
- Ensure Token Access is toggled on, then click Add API Token to generate a secure credential.
- Use a programmatic script (like Python) to make requests to the /api/v2/users.json or /api/v2/organizations.json endpoints.
- Configure your code loop to parse through your active user and organization directories, pull their custom attributes, and write them directly into a local .csv file format on your machine.
Format and Method Guide
| Format / Method | Best for | Notes |
|---|---|---|
| CSV (Native Bulk Tool) | Spreadsheet analysis, BI tools | Easier to open in Excel/Google Sheets; natively restricted strictly to core ticket data and metadata. Users and Organizations are completely unavailable via the native bulk CSV path. |
| API (Python / Code Scripts) | Custom spreadsheet structures, total user/org data control | The ultimate workaround for customer lists. Using the API allows you to bypass native file blocks entirely, safely paginate through your global user or company databases, and write those raw data profiles straight to a local CSV file. |
How long does a Zendesk export take?
- Small accounts (< 10,000 tickets): typically a few minutes
- Medium accounts (10,000 – 500,000 tickets): 30 minutes to a few hours
- Large accounts (> 1,000,000 tickets): can take up to 24 hours; exported in 31-day increments automatically
Method 3 — Export Zendesk Knowledge Base / Guide Data to CSV
The methods above cover ticket, user, and organization data. Zendesk Guide (your knowledge base) is a separate content type and requires a different approach.
Using the built-in Help Center export
Zendesk does not offer a native one-click export button for Guide articles or categories within the standard admin dashboard. While the **Manage Articles** view allows you to select multiple articles to update their settings (like bulk-changing labels or authors), it cannot download or export their contents. For a complete Guide export to CSV, a Python API script is the most reliable approach.
Exporting Guide data with a Python script
For a complete Guide export to CSV, a Python script using the Zendesk Help Center API is the most reliable approach. Here's a minimal working example:
Prerequisites:
- Python 3 installed
- `requests` library: run `pip install requests`
- Your Zendesk subdomain, admin email, and API token
import requests
import csv
SUBDOMAIN = "your-subdomain"
EMAIL = "your-email@example.com"
API_TOKEN = "your-api-token"
url = f"https://{SUBDOMAIN}.zendesk.com/api/v2/help_center/articles.json"
auth = (f"{EMAIL}/token", API_TOKEN)
articles = []
while url:
response = requests.get(url, auth=auth)
data = response.json()
articles.extend(data["articles"])
url = data.get("next_page")
with open("zendesk_guide_export.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["id", "title", "body", "section_id", "created_at", "updated_at"])
writer.writeheader()
for article in articles:
writer.writerow({
"id": article["id"],
"title": article["title"],
"body": article.get("body", ""),
"section_id": article.get("section_id", ""),
"created_at": article["created_at"],
"updated_at": article["updated_at"],
})
print(f"Exported {len(articles)} articles to zendesk_guide_export.csv")
The script walks automatically through all articles page-by-page. Run it, and you'll get a clean CSV with article IDs, titles, raw body content (HTML), section assignments, and timestamps.
Troubleshooting:
- **Syntax/Terminal errors** — make sure you're running Python 3 (`python3` not `python` on some operating systems)
- **Character encoding issues** — the `encoding="utf-8"` parameter in the script handles most cases styling formats; if you see broken HTML tags or garbled text in Excel, use Excel's Data → Choose **Text/CSV** menu and explicitly select UTF-8 format on file import.
- **Missing restricted articles** — internal agent only/restricted articles require admin-level API credentials; check that your API token belongs to an active admin account with permissions to view all Guide segments.
Prefer not to write code? Help Desk Migration handles Zendesk Guide exports automatically — articles, categories, sections, and attachments — as part of a full migration.
All 4 Export Methods Compared
| Method 1: View CSV | Method 2: Bulk Export | Method 3: Guide Export | Method 4: API | |
|---|---|---|---|---|
| Ticket limit | 1,000 | Unlimited | N/A | Unlimited |
| Includes comments | ✗ | ✗ | N/A | ✓ |
| Includes attachments | ✗ | ✗ | ✓ (via HDM) | ✓ |
| Knowledge base | ✗ | ✗ | ✓ | ✓ |
| Users / Orgs | ✗ | ✓ | ✗ | ✓ |
| Formats | CSV | JSON, CSV, XML | CSV | JSON |
| Requires admin | No | Yes (to enable) | No (API token) | No (API token) |
| Setup effort | Low | Low | Medium (Python) | High (code) |
| Best for | Quick spot checks | Full backups | KB archive | Dev pipelines / migration |
To natively extract conversation streams (the actual text inside messages and internal notes) in bulk, you must query the Incremental Ticket Events endpoint rather than the basic ticket wrapper endpoint. This stream returns specific conversation parameters when you apply the include=comment_events side-load parameter:
GET https://{subdomain}.zendesk.com/api/v2/incremental/ticket_events.json?start_time=1763550000&include=comment_events
Replace `start_time=0` with a Unix timestamp to pull only records updated after that time — useful for daily incremental syncs.
Authentication: Use basic auth with `{email}/token` as the username and your API token as the password, or OAuth if you've set that up.
Pagination: Incremental endpoints utilize stream markers. For time-based tracking, you must capture the end_time integer string from the JSON response payload and insert it as the new start_time on your subsequent API request. Repeat this loop continuously until the payload's end_of_stream boolean property reads true.
Building a custom export pipeline takes engineering time. If the goal is moving data to a new platform, Help Desk Migration automates the same outcome with zero code and maps fields automatically.
How to Export Zendesk Ticket Comments and Conversations
This is the question most guides skip — and it's the one that bites teams most often.
The problem: The standard CSV view export and the full bulk export both omit ticket comments. You get the ticket envelope (status, assignee, dates, tags) but not the actual conversation — the replies, internal notes, and context that make tickets useful as records.
Why comments are missing from the standard export
Zendesk's CSV export was designed for reporting and analysis, not for full data portability. The assumption is that you'll continue using Zendesk, so you don't need the conversation body as a portable file.
How to get comments via the API
Using the Tickets API with side-loading:
GET https://{subdomain}.zendesk.com/api/v2/tickets/{ticket_id}/comments.json
This returns all public replies, private internal notes, and system events for a ticket in chronological order, including the author and timestamp of each comment.
For bulk export of comments across all tickets, use the incremental export endpoint with `include=comment_events` as shown in Method 4.
The tradeoff: pulling comments for a large account through the API takes time and requires writing code to stitch tickets to their comments and output a coherent structure.
When a migration tool is the faster option
If you need comments because you're switching platforms, there's a faster path. Help Desk Migration migrates full conversation history — public replies, internal notes, and file attachments — directly to your new help desk, with automatic field mapping and no CSV intermediary.
What HDM migrates from Zendesk:
- Tickets with full conversation history (public + private)
- Attachments
- Users and organizations
- Knowledge base articles (Guide)
- Custom fields and tags
Moving to a new platform? — no credit card required, takes about 20 minutes to set up.
All Export Methods Compared
| Method 1: View CSV | Method 2: Bulk Export | Method 3: Guide Export | Method 4: API | |
|---|---|---|---|---|
| Ticket limit | 1,000 | Unlimited | N/A | Unlimited |
| Includes comments | ✗ | ✗ | N/A | ✓ |
| Includes attachments | ✗ | ✗ | ✓ (via HDM) | ✓ |
| Knowledge base | ✗ | ✗ | ✓ | ✓ |
| Users / Orgs | ✗ | ✓ | ✗ | ✓ |
| Formats | CSV | JSON, CSV, XML | CSV | JSON |
| Requires admin | No | Yes (to enable) | No (API token) | No (API token) |
| Setup effort | Low | Low | Medium (Python) | High (code) |
| Best for | Quick spot checks | Full backups | KB archive | Dev pipelines / migration |
Troubleshooting Common Zendesk Export Errors
Export email never arrived
- Check your spam folder first
- Make sure the email address on your Zendesk account is accessible
- For bulk exports, large accounts can take up to 24 hours — wait before re-requesting
- Re-requesting a new export while one is processing can cause queue conflicts; cancel the pending request first from the Reports tab
- Keep in mind that once an export is requested, it cannot be canceled or modified in the UI. Re-requesting multiple extractions in a short window can clog your server queue; it is best to allow the system to finish processing the initial request.
Download link expired
Zendesk export download links expire after a set period (typically 3 days for bulk exports, shorter for view exports). If your link is expired, return to **Admin Center → Reports → Export** and re-request the file.
Syntax errors in the downloaded file
Most common with JSON exports. Zendesk exports NDJSON (newline-delimited JSON) — each line is a separate JSON object, not a standard JSON array. Tools that expect a `[...]` array will throw a parse error.
Fix: wrap the file in a JSON array or convert with a simple script:
Character encoding issues
If special characters (accents, non-Latin scripts, em dashes) appear garbled in Excel:
- Don't double-click the CSV to open it
- In Excel, go to **Data → From Text/CSV**
- Select the file and choose **UTF-8** as the encoding in the import wizard
Missing internal (restricted) articles in Guide export
The Python script or API call needs admin-level credentials to access internal articles. If your API token belongs to an agent account, internal articles are filtered out silently. Switch to an admin email/token pair.
## When Manual Exports Aren't Enough — Moving to a New Platform
Manual exports work well for backups, reports, and one-off data pulls. They break down when the goal is actually moving to a different platform.
The problems stack up:
- Comments and conversation history require the API, not a UI export
- Importing a raw JSON or CSV into a new help desk requires field mapping — rarely a 1:1 match
- Attachments stay in Zendesk's storage, not in your export file
- Large accounts take hours or days to export and then hours more to import
- Incremental updates between export start and migration completion create data gaps
This is what migration-specific tooling is built for.
How Help Desk Migration handles full Zendesk data transfer
Help Desk Migration connects directly to Zendesk via API and to your destination platform, and moves data without a CSV intermediary:
- **Connect Zendesk** — enter your subdomain and API token
- **Connect your destination** — Freshdesk, Jira Service Management, HubSpot, Intercom, or 60+ others
- **Map your fields** — the wizard shows you source and destination fields side by side; custom fields included
- **Run a Demo Migration** — migrates a sample of 20 tickets so you can verify the output before committing
- **Run the full migration** — HDM handles pagination, rate limiting, attachments, and conversation history automatically
- **Delta migration** — run a final sync after the main migration to capture tickets updated during the window
What moves:
- Tickets with full conversation history (public + private notes)
- Ticket attachments
- Users and organizations
- Knowledge base articles with structure (categories, sections)
- Custom fields and tags
— 20 minutes to set up, no credit card required.
Frequently Asked Questions
Need to move your entire Zendesk account to a new platform? See exactly what migrates before committing to the full run.