finds.dev← search

// the find

facetoe/zenpy

★ 369 · Python · GPL-3.0 · updated Aug 2026

Python wrapper for the Zendesk API

Zenpy is a Python client for Zendesk's Support, Chat and Help Center APIs that maps API resources to Python objects. It suits scripts and integrations that read or write Zendesk data and would rather not hand-build requests and parse JSON.

- Linked records load lazily, so `ticket.requester.name` only hits the API when that attribute is touched, and results are cached on the client. That is the right default for scripts that walk large sets of tickets.

- `search_export` gets past the Search API's 1000-result cap by calling the export endpoint. The README links to Zendesk's limits and release notes instead of hand-waving the constraint.

- Pagination is explicit. `cursor_pagination=` is opt-in, and the README warns that offset pagination has been capped at 100 pages since August 2023.

- The test suite replays recorded Betamax cassettes from `tests/test_api/betamax`, so it runs without live Zendesk credentials. The cassettes are checked in, which makes test runs reproducible.

- The README still says Python 2 and 3 are supported. Python 2 has been dead for years, so that line signals the docs have not been audited. The Travis CI badge points at travis-ci.org, which no longer serves public builds, even though the repo now has a GitHub Actions workflow.

- Lazy loading and caching make call counts hard to predict. A loop that touches `ticket.requester`, `ticket.assignee` and `ticket.organization` can fire several requests per ticket, and nothing in the calling code shows it. Callers have to read the Contributors Guide wiki to learn what is cached.

- Coverage is lopsided. Nearly every README example is ticketing, and the Chat and Help Center sections are thin by comparison. Anyone building on those APIs will be reading source.

- Cassette tests show the wrapper matched Zendesk's responses at the time each cassette was recorded, not that it matches the live API today. Schema drift can slip past a green suite until someone re-records.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →