Skip to main content
Search federal court dockets or retrieve a specific docket with optional filing entries. Covers all federal district and appellate courts. Use legal.listCourts() to resolve court slugs for filtering.

Search dockets

Endpoint
POST /legal/v1/docket
const results = await client.legal.docket({
  type: 'search',
  query: 'Apple v. Samsung',
  court: 'cand',                // Northern District of California
  dateFiledAfter: '2020-01-01',
  limit: 10,
});

console.log(`Found ${results.found} dockets`);

for (const docket of results.dockets) {
  console.log(`${docket.caseName} (${docket.docketNumber})`);
  console.log(`  Court: ${docket.court}`);
  console.log(`  Filed: ${docket.dateFiled}`);
}

Look up a docket

Retrieve a specific docket by ID.
const docket = await client.legal.docket({
  type: 'lookup',
  docketId: '4214664',
});

console.log(`${docket.docket.caseName}`);
console.log(`Court: ${docket.docket.court}`);
console.log(`Assigned to: ${docket.docket.assignedTo}`);
console.log(`Filed: ${docket.docket.dateFiled}`);

Live PACER fetch

For dockets not yet in the RECAP archive, you can trigger a live fetch from PACER. This purchases fresh docket data using CaseMark’s PACER account and ingests it into the RECAP archive.
Live PACER fetches incur PACER fees of up to 3.00perdocketsheetplusa3.00 per docket sheet** plus a **0.05 service fee. You must pass acknowledgePacerFees: true to confirm you accept these charges.
const docket = await client.legal.docket({
  type: 'lookup',
  docketId: '4214664',
  live: true,
  acknowledgePacerFees: true,
});

console.log(`Fetched: ${docket.docket.caseName}`);
console.log(`PACER fees: up to $${docket.pacerFees.maxPacerCost} + $${docket.pacerFees.serviceFee} service fee`);
console.log(`Fetch took ${docket.pacerFees.fetchDurationMs}ms`);

How it works

  1. The endpoint first tries to fetch the docket from the free RECAP archive
  2. If live: true, it triggers a live PACER purchase to fetch fresh docket data
  3. CaseMark’s PACER account is used — you don’t need your own PACER credentials
  4. The fetch typically takes 5-30 seconds depending on docket size
  5. Once fetched, the docket is added to the RECAP archive and freely available for future lookups

Cost and guardrails

ItemCost
Service fee$0.05 per request
PACER feeUp to $3.00 per docket sheet (PACER’s cap)
Maximum total$3.05 per fetch
Additional guardrails:
  • Daily spend cap: $25/day per organization (resets at midnight UTC)
  • Fee acknowledgment required: Requests without acknowledgePacerFees: true return 400
  • Free tier users: The standard $10 free credit limit applies — live fetches count toward it

Live fetch response

When live: true, the response includes a pacerFees object:
{
  "type": "lookup",
  "live": true,
  "docket": { ... },
  "pacerFees": {
    "serviceFee": 0.05,
    "maxPacerCost": 3.00,
    "currency": "USD",
    "fetchDurationMs": 12500
  }
}

Resolve court IDs

Court slugs like cand, nysd, ca9 identify specific courts. Use legal.listCourts() to search for the correct slug to pass as the court parameter in legal.docket().
Endpoint
POST /legal/v1/courts
const courts = await client.legal.listCourts({
  query: 'northern district california',
  jurisdiction: 'FD',  // Federal District
});

for (const court of courts.courts) {
  console.log(`${court.name}${court.id}`);
  // "U.S. District Court for the Northern District of California → cand"
}

Jurisdiction codes

CodeJurisdiction
FFederal (all)
FDFederal District
FBFederal Bankruptcy
FAFederal Appellate
FSFederal Special (e.g. Tax Court)
SState (all)
SAState Appellate
SSState Supreme

Parameters

ParameterTypeRequiredDescription
type'search'YesSearch mode
querystringYesCase name or party name (2-500 chars)
courtstringNoCourt slug (e.g. cand, ca9). Use legal.listCourts() to find slugs.
dateFiledAfterstringNoLower bound filing date (YYYY-MM-DD)
dateFiledBeforestringNoUpper bound filing date (YYYY-MM-DD)
limitintegerNoPage size (1-100, default 25)
offsetintegerNoPagination offset (default 0)

Docket lookup

ParameterTypeRequiredDescription
type'lookup'YesLookup mode
docketIdstringYesDocket ID
includeEntriesbooleanNoInclude docket entries/filings (default false). Coming soon — currently returns 501. Accepted for forward compatibility.
livebooleanNoTrigger live PACER fetch (default false)
acknowledgePacerFeesbooleanNoRequired when live: true — confirms PACER fee acceptance
limitintegerNoEntries page size (1-100, default 25)
offsetintegerNoEntries pagination offset (default 0)

Courts lookup

ParameterTypeRequiredDescription
querystringNoSearch court name (min 2 chars)
jurisdictionstringNoFilter by jurisdiction code
inUseOnlybooleanNoOnly courts with docket data (default true)
limitintegerNoPage size (1-100, default 50)
offsetintegerNoPagination offset (default 0)

Response fields

Docket object

FieldTypeDescription
idstringDocket ID
caseNamestringFull case name
docketNumberstringCourt docket number (e.g. 5:11-cv-01846)
courtstringFull court name
courtIdstringCourt slug
dateFiledstringFiling date
dateTerminatedstring | nullTermination date
causestring | nullCause of action (e.g. 35 U.S.C. 271 Patent Infringement)
natureOfSuitstring | nullNature of suit classification
partiesstring[]Party names
assignedTostring | nullAssigned judge
urlstringDocket detail URL
pacerCaseIdstring | nullPACER case ID

Docket entry (coming soon)

Docket entry listing (includeEntries: true) is coming soon. The response schema below describes the planned format. The parameter is accepted today for forward compatibility but currently returns a 501 status.
FieldTypeDescription
entryNumberintegerFiling number on the docket
datestringFiling date
descriptionstringDocket text (e.g. “COMPLAINT filed by Apple Inc.”)
documentsarrayAttached documents

Document (coming soon)

FieldTypeDescription
idstringDocument ID
documentNumberstringDocument number
attachmentNumberinteger | nullAttachment number (null for main document)
descriptionstringDocument description
pdfUrlstring | nullPDF download URL (if available in RECAP)
pageCountinteger | nullNumber of pages
isAvailablebooleantrue = free via RECAP archive, false = requires PACER

Pricing

MethodPrice
legal.docket()Free
legal.listCourts()Free

Data source

All docket data comes from CourtListener’s RECAP archive, which aggregates federal court filings contributed by the RECAP browser extension. Coverage includes:
  • All federal district courts
  • All federal appellate courts
  • Federal bankruptcy courts
  • Specialty courts (Tax Court, Court of Federal Claims, etc.)
RECAP coverage varies by court and case. High-profile cases and active litigation tend to have the most complete filing histories.