> ## Documentation Index
> Fetch the complete documentation index at: https://docs.judit.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Judit Miner — Overview

> Discover and recover judicial assets (judgement bonds, sentence executions) at scale. Miner pairs structural filters with Judit's full base to surface opportunities across millions of lawsuits.

export const MinerAnimation = () => <iframe sandbox="allow-scripts" scrolling="no" style={{
  width: '100%',
  height: '540px',
  border: 'none',
  borderRadius: '12px',
  display: 'block',
  margin: '20px 0'
}} srcDoc={`<!doctype html><html><head><meta charset="utf-8"><style>*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:#090c0d}canvas{display:block;width:100%;height:100%}</style></head><body><canvas id="c"></canvas><script>(function(){
var A='#4FD1C5',J='#1FC16B',GO='#EAB308',D='#8B5CF6',M='#7A8599';
var BG='#090c0d',TXT='#e5e7eb',NF='#111827',PT='#0a1020';
var TOTAL=43.0;
var XP={app:0.11,miner:0.50,base:0.88};
var NW=90,NH=42;
var FLOWS=[
  {id:'count',title:'① Count — free, synchronous',sub:'Estimate volume before purchasing',col:GO,ts:1,te:13,act:['app','miner','base'],steps:[
    {fr:'app',to:'miner',label:'POST /requests/count',note:'{filters: court, amount, type}',col:A,ts:1.5,te:2.3,yp:0.35},
    {fr:'miner',to:'base',label:'query datalake',note:'',col:D,ts:2.8,te:3.6,yp:0.50},
    {fr:'base',to:'miner',label:'total_lawsuits',note:'',col:D,ts:4.1,te:4.9,yp:0.65},
    {fr:'miner',to:'app',label:'{total, cost_estimate}',note:'synchronous response — no credit cost',col:GO,ts:5.4,te:6.2,yp:0.80}]},
  {id:'create',title:'② Create — credits charged',sub:'Triggers the real query and deducts credits',col:A,ts:15,te:27,act:['app','miner','base'],steps:[
    {fr:'app',to:'miner',label:'POST /requests/create',note:'{filters, responses_limit}',col:A,ts:15.5,te:16.3,yp:0.35},
    {fr:'miner',to:'app',label:'{request_id, status:pending}',note:'cost in credits charged now',col:GO,ts:16.8,te:17.6,yp:0.50},
    {fr:'miner',to:'base',label:'materializes lawsuits',note:'asynchronous processing',col:D,ts:18.8,te:19.6,yp:0.68}]},
  {id:'collect',title:'③ Poll + Collect',sub:'Track status and paginate results',col:J,ts:29,te:42,act:['app','miner','base'],steps:[
    {fr:'app',to:'miner',label:'GET /requests/{id}',note:'polling until completed',col:A,ts:29.5,te:30.3,yp:0.32},
    {fr:'miner',to:'app',label:'status: completed',note:'',col:J,ts:30.8,te:31.6,yp:0.46},
    {fr:'app',to:'miner',label:'GET /responses',note:'request_id=...',col:A,ts:32.1,te:32.9,yp:0.62},
    {fr:'miner',to:'app',label:'paginated list',note:'up to 100 lawsuits per page',col:J,ts:33.4,te:34.2,yp:0.78}]}
];
var NODES=[{id:'app',label:'Your App',col:A},{id:'miner',label:'Miner API',col:GO},{id:'base',label:'Judit Base',col:D}];
var cv=document.getElementById('c');
function setup(){var dpr=Math.min(window.devicePixelRatio||1,2),r=cv.getBoundingClientRect(),W=r.width||window.innerWidth,H=r.height||window.innerHeight;cv.width=Math.max(1,W*dpr);cv.height=Math.max(1,H*dpr);var ctx=cv.getContext('2d');ctx.setTransform(dpr,0,0,dpr,0,0);return{ctx:ctx,w:W,h:H};}
function ease(t){return t<0.5?2*t*t:1-Math.pow(-2*t+2,2)/2;}
function rr(ctx,x,y,w,h,r){ctx.beginPath();ctx.moveTo(x+r,y);ctx.arcTo(x+w,y,x+w,y+h,r);ctx.arcTo(x+w,y+h,x,y+h,r);ctx.arcTo(x,y+h,x,y,r);ctx.arcTo(x,y,x+w,y,r);ctx.closePath();}
function gx(n,w){return n==='app'?w*XP.app:n==='miner'?w*XP.miner:w*XP.base;}
function eg(fr,to,w){var fx=gx(fr,w),tx=gx(to,w),d=tx>fx?1:-1;return{x1:fx+d*NW/2,x2:tx-d*NW/2,d:d};}
function dPkt(ctx,x,y,lbl,col){var pw=Math.max(36,lbl.length*6+14),ph=20;ctx.save();ctx.shadowColor=col;ctx.shadowBlur=18;rr(ctx,x-pw/2,y-ph/2,pw,ph,5);ctx.fillStyle=col;ctx.fill();ctx.shadowBlur=0;ctx.fillStyle=PT;ctx.font='bold 9px monospace';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(lbl,x,y+0.5);ctx.restore();}
function draw(ctx,w,h,t){
  var ct=t%TOTAL;
  ctx.fillStyle=BG;ctx.fillRect(0,0,w,h);
  var fl=null;for(var i=0;i<FLOWS.length;i++){if(ct>=FLOWS[i].ts&&ct<FLOWS[i].te){fl=FLOWS[i];break;}}
  var nodeY=h*0.21;
  for(var i=0;i<NODES.length;i++){var n=NODES[i],lx=gx(n.id,w);ctx.save();ctx.strokeStyle=n.col;ctx.globalAlpha=0.35;ctx.lineWidth=1;ctx.setLineDash([4,7]);ctx.beginPath();ctx.moveTo(lx,nodeY+NH/2);ctx.lineTo(lx,h*0.93);ctx.stroke();ctx.restore();}
  if(fl){ctx.save();ctx.fillStyle=fl.col;ctx.font='bold 13px Inter,system-ui,sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(fl.title,w/2,h*0.055);ctx.fillStyle=M;ctx.font='10.5px Inter,system-ui,sans-serif';ctx.fillText(fl.sub,w/2,h*0.118);ctx.restore();}
  if(fl){for(var si=0;si<fl.steps.length;si++){var s=fl.steps[si],sy=h*s.yp,e=eg(s.fr,s.to,w),x1=e.x1,x2=e.x2,d=e.d,clx=(x1+x2)/2;var state=ct<s.ts?'pre':ct>s.te?'done':'live',alpha=state==='pre'?0.10:state==='done'?0.55:1.0;ctx.save();ctx.globalAlpha=alpha;ctx.strokeStyle=s.col;ctx.lineWidth=1.5;ctx.setLineDash([]);ctx.beginPath();ctx.moveTo(x1,sy);ctx.lineTo(x2,sy);ctx.stroke();ctx.fillStyle=s.col;ctx.beginPath();ctx.moveTo(x2,sy);ctx.lineTo(x2-d*7,sy-4);ctx.lineTo(x2-d*7,sy+4);ctx.closePath();ctx.fill();ctx.fillStyle=TXT;ctx.font='bold 10px monospace';ctx.textAlign='center';ctx.textBaseline='bottom';ctx.fillText(s.label,clx,sy-4);if(s.note){ctx.fillStyle=M;ctx.font='9px monospace';ctx.fillText(s.note,clx,sy-16);}ctx.restore();if(state==='live'){var p=ease((ct-s.ts)/(s.te-s.ts));dPkt(ctx,x1+(x2-x1)*p,sy+14,s.label,s.col);}}}
  for(var i=0;i<NODES.length;i++){var nd=NODES[i],px=gx(nd.id,w),ia=!fl||(fl.act.indexOf(nd.id)>=0);ctx.save();ctx.globalAlpha=ia?1:0.18;if(ia){ctx.shadowColor=nd.col;ctx.shadowBlur=14;}rr(ctx,px-NW/2,nodeY-NH/2,NW,NH,8);ctx.fillStyle=NF;ctx.fill();ctx.shadowBlur=0;ctx.strokeStyle=ia?nd.col:'rgba(255,255,255,0.10)';ctx.lineWidth=ia?1.8:1;ctx.stroke();ctx.fillStyle=ia?nd.col:M;ctx.font='bold 11px Inter,system-ui,sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(nd.label,px,nodeY);ctx.restore();}
  for(var f=0;f<FLOWS.length;f++){var ia=fl&&fl.id===FLOWS[f].id;ctx.save();ctx.beginPath();ctx.arc(w/2+(f-1)*24,h*0.962,ia?5:3,0,Math.PI*2);ctx.fillStyle=ia?FLOWS[f].col:'rgba(255,255,255,0.18)';ctx.fill();ctx.restore();}
}
var dim,t0;
function loop(){var t=(performance.now()-t0)/1000;draw(dim.ctx,dim.w,dim.h,t);requestAnimationFrame(loop);}
window.addEventListener('load',function(){dim=setup();t0=performance.now();loop();});
window.addEventListener('resize',function(){dim=setup();});
cv.addEventListener('click',function(e){var r=cv.getBoundingClientRect(),cx=e.clientX-r.left,cy=e.clientY-r.top;for(var f=0;f<FLOWS.length;f++){var dx=cx-(dim.w/2+(f-(FLOWS.length-1)/2)*24),dy=cy-dim.h*0.962;if(dx*dx+dy*dy<=144){t0=performance.now()-FLOWS[f].ts*1000;break;}}});
cv.addEventListener('mousemove',function(e){var r=cv.getBoundingClientRect(),cx=e.clientX-r.left,cy=e.clientY-r.top,over=false;for(var f=0;f<FLOWS.length;f++){var dx=cx-(dim.w/2+(f-(FLOWS.length-1)/2)*24),dy=cy-dim.h*0.962;if(dx*dx+dy*dy<=144){over=true;break;}}cv.style.cursor=over?'pointer':'default';});
})()</script></body></html>`} />;

<Note>
  **Public beta.** Miner is a new Judit product in open beta. The endpoints and pricing model documented here are stable, but small adjustments may happen during this phase. We recommend pinning the contract version and following [docs.judit.io/en/resource/changelog](/en/resource/changelog).
</Note>

<Warning>
  **Miner API usage pricing is not included in the JUDIT Miner Platform license.** API consumption is billed **separately, in credits**, per the [Credits & billing](/en/miner/credits) tiers. Confirm the active tiers for your account with the commercial team before running production queries.
</Warning>

**Judit Miner** is a product dedicated to **discovering judicial assets at scale**: paid or in-payment **judgement bonds** (`judgement-bond`) and **sentence executions** with recovery potential (`sentence-execution`). Instead of going lawsuit by lawsuit, you define a set of filters (courts, amount range, natures, tags) and Judit identifies every lawsuit that fits — automatically excluding the ones your company has already retrieved.

> 🤖 Base host: `https://miner.production.judit.io`. Authentication via the `api-key` header (same key used across Judit products, with `miner_enabled` granted). Pricing is **credit-based** — every `find` is priced by tier before processing.

## What Miner does

<CardGroup cols={2}>
  <Card title="Find judgement bonds" icon="scale-balanced">
    Identify federal, state and municipal judgement bonds by budget year, nature (alimentary/common) and court. Ideal for credit-rights funds and recovery practices.
  </Card>

  <Card title="Map sentence executions" icon="gavel">
    Detect executions with signs of approved calculation, possible bond or already-issued bond. Ideal for sourcing credit-rights portfolios.
  </Card>

  <Card title="Amount range filters" icon="coins">
    Slice by free min/max or pre-defined tiers (`0-100k`, `100k-250k`, `250k-500k`, `500k-750k`, `750k-1.5M`, `1.5M+`).
  </Card>

  <Card title="No repeats across queries" icon="filter-circle-xmark">
    `count` automatically excludes lawsuits your company has already retrieved — you only pay for what you haven't seen.
  </Card>
</CardGroup>

## How it works

Miner follows a 3-step flow: **estimate** → **purchase** → **paginate**.

<MinerAnimation />

```mermaid theme={null}
sequenceDiagram
    participant Client
    participant Miner as Miner API
    participant Datalake as Judit base

    Client->>Miner: POST /requests/count (filters)
    Miner->>Datalake: Counts matching lawsuits
    Miner-->>Client: total_lawsuits + request_id (count)

    Note over Client: Decide if it's worth it<br/>(volume × estimated cost)

    Client->>Miner: POST /requests/create (filters + responses_limit)
    Miner-->>Client: request_id + status: pending + cost (credits)

    Note over Miner,Datalake: Async processing

    Miner->>Datalake: Materializes lawsuits
    Client->>Miner: GET /requests/{request_id} (poll)
    Miner-->>Client: status: completed

    Client->>Miner: GET /responses?request_id=...
    Miner-->>Client: Paginated lawsuit list
```

| Step               | Endpoint                        | Purpose                                                                              |
| ------------------ | ------------------------------- | ------------------------------------------------------------------------------------ |
| **1. Count**       | `POST /requests/count`          | Know how many lawsuits match your filters, **no credit cost**. Synchronous response. |
| **2. Create find** | `POST /requests/create`         | Trigger the real query. Returns `cost` (credits charged) and `status: pending`.      |
| **3. Track**       | `GET /requests/{request_id}`    | Poll until `status: completed`.                                                      |
| **4. Collect**     | `GET /responses?request_id=...` | List the returned lawsuits, paginated (up to 100 per page).                          |

## Who it's for

<CardGroup cols={2}>
  <Card title="Credit-rights funds" icon="building-columns">
    Mass sourcing of judgement bonds and judicial credits — with fine-grained filters by amount and court.
  </Card>

  <Card title="Recovery law firms" icon="briefcase">
    Identify executions with signs of approved calculation or imminent bond for proactive outreach.
  </Card>

  <Card title="Banks and fintechs" icon="chart-line">
    Curate baskets of judicial assets for portfolio analysis and securitization.
  </Card>

  <Card title="Marketplace platforms" icon="store">
    Feed bond-marketplace listings with always-fresh inventory.
  </Card>
</CardGroup>

## What's not in Miner

* **Lawsuit lookup by CNJ** → use [Lawsuit Query](/en/requests/requests) (async Requests) or [Hot Storage](/en/cache-judit/hotstorage) (sync).
* **Continuous tracking of movements** → use [Tracking](/en/tracking/tracking).
* **Registration data (individuals/companies)** → use [`/entities`](/en/registration-data/registration-data).

Miner focuses on **asset discovery** based on lawsuit attributes. For any other case, the corresponding products remain available and bill normally.

## Next steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="bolt" href="/en/miner/quickstart">
    Run your first query in under 10 minutes.
  </Card>

  <Card title="Concepts" icon="book" href="/en/miner/concepts">
    Understand `kind`, `natures`, `tags`, amount tiers and combination rules.
  </Card>

  <Card title="Credits & billing" icon="coins" href="/en/miner/credits">
    How `cost` is computed, price tiers and handling of billing errors.
  </Card>

  <Card title="Supported courts" icon="building-columns" href="/en/miner/tribunals">
    Full list of IDs and acronyms for the `tribunals` filter.
  </Card>
</CardGroup>
