Skip to main content
Search for legal sources by topic, find similar cases, and conduct deep research with multiple query variations.

Find cases

Search for legal sources including cases, statutes, and regulations from authoritative databases.
Endpoint
POST /legal/v1/find
const result = await client.legal.find({
  query: 'qualified immunity excessive force police',
  jurisdiction: 'us-federal',
  numResults: 10
});

console.log(`Found ${result.found} candidates`);

for (const candidate of result.candidates) {
  console.log(`${candidate.title}`);
  console.log(`  ${candidate.url}`);
  console.log(`  ${candidate.snippet.slice(0, 100)}...`);
}

Parameters

ParameterTypeDescription
querystringSearch query (3-1,000 characters)
jurisdictionstringOptional jurisdiction ID (e.g., us-federal, california)
numResultsnumberResults to return (1-25, default 10)

Response

{
  "query": "qualified immunity excessive force police",
  "jurisdiction": "us-federal",
  "found": 10,
  "candidates": [
    {
      "url": "https://www.courtlistener.com/opinion/...",
      "title": "Harlow v. Fitzgerald, 457 U.S. 800 (1982)",
      "snippet": "Government officials performing discretionary functions are shielded from liability...",
      "source": "courtlistener.com",
      "publishedDate": "1982-06-24"
    }
  ],
  "hint": "IMPORTANT: Use legal.verify() on each candidate before citing."
}
Always verify before citing. Search results are candidates, not verified sources. Use legal.verify() to confirm each citation exists in the database before your user cites it.

Find similar cases

Given a legal document URL, find semantically similar sources. Useful for expanding research or finding citing cases.
Endpoint
POST /legal/v1/similar
const result = await client.legal.similar({
  url: 'https://www.courtlistener.com/opinion/118365/bush-v-gore/',
  numResults: 10
});

console.log(`Found ${result.found} similar sources`);

for (const source of result.similarSources) {
  console.log(`${source.title}`);
  console.log(`  ${source.url}`);
}

Parameters

ParameterTypeDescription
urlstringURL of the source document
jurisdictionstringOptional jurisdiction filter
numResultsnumberResults to return (1-25, default 10)
startPublishedDatestringOnly include sources after this date (ISO format)

Response

{
  "sourceUrl": "https://www.courtlistener.com/opinion/118365/bush-v-gore/",
  "jurisdiction": "all",
  "found": 10,
  "similarSources": [
    {
      "url": "https://www.courtlistener.com/opinion/...",
      "title": "Reynolds v. Sims, 377 U.S. 533 (1964)",
      "snippet": "The Equal Protection Clause requires substantially equal legislative representation...",
      "source": "courtlistener.com",
      "publishedDate": "1964-06-15"
    }
  ]
}

Deep research

Conduct comprehensive research with multiple query variations. Uses advanced search to find sources across different phrasings of the legal issue.
Endpoint
POST /legal/v1/research
const result = await client.legal.research({
  query: 'employment discrimination disparate impact',
  additionalQueries: [
    'Title VII disparate impact theory',
    'Griggs v Duke Power significance',
    'statistical evidence employment discrimination'
  ],
  jurisdiction: 'us-federal',
  numResults: 15
});

console.log(`Deep search found ${result.found} sources`);

for (const candidate of result.candidates) {
  console.log(`${candidate.title}`);
  
  // Deep search includes highlighted passages
  if (candidate.highlights?.length > 0) {
    console.log(`  Key passage: "${candidate.highlights[0]}"`);
  }
}

Parameters

ParameterTypeDescription
querystringPrimary search query
additionalQueriesstring[]Up to 5 alternative phrasings
jurisdictionstringOptional jurisdiction filter
numResultsnumberResults to return (1-25, default 10)

Response

{
  "query": "employment discrimination disparate impact",
  "additionalQueries": ["Title VII disparate impact theory", "..."],
  "jurisdiction": "us-federal",
  "searchType": "deep",
  "found": 15,
  "candidates": [
    {
      "url": "https://www.courtlistener.com/opinion/...",
      "title": "Griggs v. Duke Power Co., 401 U.S. 424 (1971)",
      "snippet": "The Act proscribes not only overt discrimination but also practices...",
      "highlights": [
        "Congress directed the thrust of the Act to the consequences of employment practices",
        "The touchstone is business necessity"
      ],
      "source": "courtlistener.com",
      "publishedDate": "1971-03-08"
    }
  ]
}

When to use deep research

ScenarioUse
Quick case lookuplegal.find()
Thorough brief researchlegal.research() with query variations
Finding all related caseslegal.similar() from a key case

Common patterns

Research workflow

async function researchTopic(topic: string, jurisdiction?: string) {
  // 1. Deep search with variations
  const research = await client.legal.research({
    query: topic,
    additionalQueries: generateVariations(topic),
    jurisdiction,
    numResults: 20
  });
  
  // 2. Verify top candidates
  const verified = [];
  for (const candidate of research.candidates.slice(0, 10)) {
    const result = await client.legal.verify({ text: candidate.title });
    if (result.summary.verified > 0) {
      verified.push({
        ...candidate,
        verification: result.citations[0]
      });
    }
  }
  
  // 3. Find similar cases to the best result
  if (verified.length > 0) {
    const similar = await client.legal.similar({
      url: verified[0].url,
      numResults: 5
    });
    return { primary: verified, related: similar.similarSources };
  }
  
  return { primary: verified, related: [] };
}

Build a case timeline

async function buildTimeline(seedCase: string) {
  // Find the seed case
  const search = await client.legal.find({ query: seedCase, numResults: 1 });
  const seedUrl = search.candidates[0].url;
  
  // Find similar cases across time
  const similar = await client.legal.similar({
    url: seedUrl,
    numResults: 25
  });
  
  // Sort by date
  return similar.similarSources
    .filter(s => s.publishedDate)
    .sort((a, b) => new Date(a.publishedDate) - new Date(b.publishedDate));
}

Jurisdiction-specific research

// Research across multiple jurisdictions
async function multiJurisdictionSearch(query: string) {
  const jurisdictions = ['us-federal', 'california', 'new-york', 'texas'];
  
  const results = await Promise.all(
    jurisdictions.map(j => 
      client.legal.find({ query, jurisdiction: j, numResults: 5 })
    )
  );
  
  return jurisdictions.map((j, i) => ({
    jurisdiction: j,
    cases: results[i].candidates
  }));
}

Supported sources

Search covers authoritative legal databases:
SourceContent
CourtListener~10M court opinions
Cornell LawStatutes, regulations, legal encyclopedias
Supreme CourtAll SCOTUS opinions
govinfo.govFederal Register, CFR, USC
State courtsVia regional reporters