Freshdesk API only returns 300 tickets: how to get every matching ticket
A search that should match thousands of tickets stops at 300, and the plain ticket list seems to show only the last month. Both are documented limits of the Freshdesk API. This guide sets out what the reference says, how to slice a query so that nothing is missed, how to check you got them all, and a free app for the case where you want to change those tickets rather than read them.
The two limits, from the API reference
Freshdesk's API reference says the following.
- Filter tickets (
/api/v2/search/tickets) returns 30 tickets per page, the page number starts at 1 and should not exceed 10. That is 300 tickets for one query. The query string can have up to 512 characters, the total count is returned with the results, archived tickets are not in the results, and recent updates take a few minutes to be indexed. - List all tickets (
/api/v2/tickets) returns by default only tickets created within the past 30 days. For older ones you use theupdated_sincefilter. The default page size is 30 and the maximum is 100, and a maximum of 300 pages (30000 tickets) will be returned. Eachincludeoption costs 2 additional credits.
How to get past the search cap
- Slice by date. The query syntax accepts
:>and:<with date fields, joined with AND, so you can run one query per window, for example created_at between two dates, and add up the windows. The supported-fields table lists date fields as YYYY-MM-DD, so plan on a day as the smallest window. - Add another field. If one day alone still returns 300, combine the date with another documented field, such as status or priority, and run one query per value.
- Remove the overlap. Windows that touch at a boundary can return the same ticket twice. Collect ticket IDs in a set, not a list.
- Check the count. Each response carries the total for its query. If the IDs you collected for a window do not add up to that total, the window is still too wide.
The list endpoint as an alternative
For reading, updated_since with per_page=100 gives you up to 300 pages of 100 within one call chain, which is far more than the search route, and you filter on your side. The ceiling is still 30000 tickets for one query, so a very large helpdesk needs the same slicing, this time by updated_since windows.
Mind the rate limit
The reference says limits apply per account, not per agent or IP address, that every response includes X-Ratelimit-Total, X-Ratelimit-Remaining and X-Ratelimit-Used-CurrentRequest, that Retry-After appears only once the limit is reached, and that even invalid requests count. Thirty tickets per search call means a large pull is many calls, and your other integrations spend from the same budget, so pace the script by the remaining-calls header.
If the goal is to change those tickets
Reading is only half of it when you want to set a field on all of them. Our guide how to bulk update more than 300 Freshdesk tickets covers the update side. To export the conversations instead, see how to export Freshdesk tickets with their full conversations.
Option: Saved Bulk Actions (free)
Saved Bulk Actions is a Freshdesk app for agents and administrators who need to change a field across more tickets than the search screen can return. It does the slicing above for you:
- Enumeration beyond the cap. It splits the date range into smaller ranges until each one fits under the search limit, removes tickets that appear at a range boundary, and reports any range it cannot split further instead of quietly returning a short list.
- Preview and dry run. A read-only preview returns how many tickets match, and reports a partial count with resume points when a run is only partly enumerated. A dry run shows the current and proposed value for sampled tickets and writes nothing.
- Verified updates. Updates go in bounded batches through the Freshdesk bulk-update endpoint, paced by the rate-limit headers your account returns, and each ticket is checked individually afterwards. An audit CSV lists the ticket, the previous value, the new value, the outcome and a timestamp.
Good to know. It changes fields; it is not an export tool. It needs your Freshdesk subdomain and an API key from an agent who may update the tickets, and the fields you write must be writable through the API in your account. It is newly listed and has no public installation count or review history yet.
Disclosure. Atesen Software, which publishes this guide, makes Saved Bulk Actions. The slicing above works without it.
Price. Saved Bulk Actions is free, and any Freshdesk account can install it from its Freshworks Marketplace listing.
Install free from the Freshworks Marketplace About Saved Bulk Actions
Which route fits
- Reading a few hundred tickets: one search, with the date and a second field.
- Reading thousands: windows by date, a set of IDs and a count check.
- Changing a field on thousands: the app above, or the script described in the guide linked earlier.
- More than 30 on a page in the ticket list: see can you bulk update more than 30 Freshdesk tickets at once.
Atesen Software is independent. Freshdesk is a trademark of Freshworks Inc., and this page is not affiliated with, sponsored or endorsed by Freshworks. Saved Bulk Actions is an independent app that Freshworks listed on its Marketplace after review. The Freshdesk API reference was checked on 22 October 2026; limits can change.
Questions about this guide: support@atesensoftware.com.