Skip to main content
Search and the changes feed return pages with a cursor. Batch retrieve and the jurisdictions list return everything in one response. For a worked loop, see the Pagination guide.

Search envelope

A page can be short, or empty, while has_more is true. Stop only when has_more is false.

Changes feed envelope

Cursor rules

  • A cursor is bound to the filters and sort of the request that produced it. Send the same filters and sort with the cursor; only limit, include and include_total may change. Otherwise: 400 cursor-mismatch.
  • A cursor that is damaged, or signed with a retired key, gets 400 invalid-cursor. A cursor longer than 6,000 characters gets 400 invalid-request with the code query-too-long.
  • On the feed, since is accepted only on a request without cursor.
  • Cursors are opaque. Do not parse or build them.
  • There is no snapshot: records that change while you page can appear twice or be passed. Upsert by id.

Page sizes

A limit above the maximum is a 400, not a silent cap.

Totals

include_total=true on search adds total to the first page and repeats it on later pages: "total": null means counting did not finish in time; the page is still complete.

Ordering

Search results follow sort (default -application_date), with ties broken by jurisdiction and id. Records without a usable date for the sort field come last in both directions. The feed is ordered by publication time, then jurisdiction and id.