bond_search, muni_search, agency_search and securities_search) return results one page at a time. Each response includes a next_cursor. Send it back as cursor to get the next page.
Paging through results
- Search as usual.
limitsets the page size:
total number of matching bonds, and the cursor for the next page:
- Send the same request again with
cursoradded:
- Repeat until
next_cursorisnull.
cursor and limit may change between pages. If a filter or sort changes, the cursor is rejected. Cursors don’t expire, but an API update can occasionally invalidate them.
Order
Results are ordered bysort, then by ISIN (and asset class on securities_search). Each page starts right after the last bond of the previous page, so no bond is skipped or repeated.
- Bonds with no value for a sort field come last, whether it sorts ascending or descending.
- A
muni_searchbyissuer_namelists the bonds of the closest matching issuers first. Issuers are matched on the first page, and later pages reuse that match.
Total
total is the number of bonds matching the filters. It is counted on the first page, and later pages repeat it. A limit of 0 returns only total, with next_cursor set to null.
Errors
An unusablecursor returns 422 Unprocessable Entity. The error points to /cursor (or /offset), and its detail gives the cause:
Moving from offset
offset is deprecated and will be removed on April 2, 2027. It gets slower the further you page, because each request skips every result before it. A cursor starts right after the previous page, so later pages are no slower than the first.
Responses to offset requests carry Deprecation, Sunset (the removal date) and Link (this page) headers. They also include a next_cursor, so you can switch midway: send it as cursor and leave out offset from then on.