Brazilian lawsuit search by CPF: how to query court cases across 10 states
By TrackJud
Practical guide to searching lawsuits by CPF across Brazilian courts. State coverage, real costs, time, LGPD compliance, and how to automate high-volume queries. Updated April 2026.
TL;DR: Lawsuit search by CPF is the lookup of court cases linked to a Brazilian taxpayer ID across courts. Manually: 30min-2h per CPF across 5 courts. Via API: <60 seconds. Vigilant covers 12 judicial sources across 10 states (ESAJ + PJe), both instances, starting at R$ 0.10 per court. No authorization from the subject is needed (LGPD art. 7 §4 — manifestly public data). 2-day cache for free repeat queries. This guide covers: what it is, use cases, real costs, manual vs automated, state coverage, returned data, and 8 FAQs.
Searching for lawsuits by CPF is one of the most common — and most repetitive — activities in Brazilian legal and commercial operations. Lawyers, credit analysts, compliance teams, legal correspondents, and procurement departments do this dozens of times per week.
The problem: there is no single portal that consolidates all courts. Each state runs its own system — ESAJ, PJe, EPROC, Tucujuris, Projudi, ClickJud — and you need to access each one separately. There are more than 40 judicial systems in production in Brazil according to the CJF, with different interfaces, different captchas, and different data formats. (To understand the differences between the two largest systems, see ESAJ vs PJE: differences, coverage, and how to query both.)
What is a lawsuit search by CPF
It’s the search for all court cases linked to a given CPF across one or more courts. The query returns:
- Active and archived cases where that CPF appears as a party
- Person’s role in the case (plaintiff, defendant, lawyer, interested third party)
- Case details: class, subject, movements, case value
- Cases in both instances (trial — 1st degree, and appellate — 2nd degree)
- Standardized CNJ number (NNNNNNN-DD.YYYY.J.TR.OOOO) — the universal case identifier
Every case in Brazil has a CNJ number defined by CNJ Resolution 65/2008. To decode any CNJ number and understand the court, year, instance, and branch, use our free CNJ number decoder. To validate CPFs before querying, use the CPF validator.
Use cases — 6 reasons to search by CPF
| Use case | Who does it | Typical frequency | Commercial destination |
|---|---|---|---|
| Background check on new clients | Lawyers, firms | Per new client | Law firms |
| Due diligence before granting credit | Fintechs, banks, bureaus | Daily, high volume | Fintechs & bureaus |
| KYC/KYB for regulatory onboarding | Compliance teams | On demand | Compliance & KYC |
| Portfolio monitoring | Firms, consultancies | Weekly or monthly | Law firms |
| Supplier due diligence | Procurement, HR, legal | Quarterly | Labor audits |
| Counterparty due diligence (M&A) | M&A boutiques, Big 4 | Per deal | M&A & due diligence |
The manual search challenge — time math
To search cases for a CPF manually, you need to access each court’s website individually, enter the document, solve the captcha, navigate results, record the information, and repeat for the next court.
| CPFs | Courts | Total queries (×2 instances) | Estimated time | Via API |
|---|---|---|---|---|
| 1 | 5 | 10 | 30min-2h | <60s |
| 1 | 10 | 20 | 2-4h | <60s |
| 10 | 5 | 100 | 2-4 days | ~5min |
| 50 | 10 | 1,000 | 2-4 weeks | ~30min |
| 200 | 10 | 4,000 | Infeasible manually | ~2h |
Real case — firm with 200 active clients
A corporate law firm with 200 active clients did quarterly monitoring. Manual flow: dedicated paralegal, 3-5 days per quarter (200 CPFs × 5 courts × 2 instances = 2,000 searches).
After automating via API:
- Time: 3-5 days → 45 minutes processing + 2h analysis
- Errors: 8-12% → 0%
- Cost: R$ 2,500/quarter (paralegal hours) → R$ 200/quarter
- Frequency: quarterly → weekly (low marginal cost enables more frequent monitoring)
Details on automation for law firms in the post How to automate lawsuit search at a firm.
Available coverage — 10 states, 12 judicial sources
| State | Court | System | Instances |
|---|---|---|---|
| São Paulo | TJSP | ESAJ | Trial + Appeals |
| Bahia | TJBA | ESAJ | Trial + Appeals |
| Ceará | TJCE | ESAJ | Trial + Appeals |
| Acre | TJAC | ESAJ | Trial + Appeals |
| Alagoas | TJAL | ESAJ | Trial + Appeals |
| Amazonas | TJAM | ESAJ | Trial + Appeals |
| Mato Grosso do Sul | TJMS | ESAJ | Trial + Appeals |
| Minas Gerais | TJMG | PJe | Trial + Appeals |
| Pernambuco | TJPE | PJe | Trial + Appeals |
| Federal District | TJDFT | PJe | Trial + Appeals |
| Maranhão | TJMA | PJe | Trial + Appeals |
| Amapá | TJAP | PJe | Trial + Appeals |
Full coverage with per-court status at /en/courts/.
Automated vs manual — direct comparison
| Aspect | Manual | Vigilant (API) |
|---|---|---|
| Time (1 CPF, 5 courts) | 30min-2h | < 60 seconds |
| Data format | Varies per court | Standardized JSON |
| Instances covered | Depends on operator remembering | Both automatically |
| Captchas | Solved manually | Solved automatically |
| Human errors | 8-12% | 0% (validation + retry) |
| Cost (5 courts) | R$ 15-30 (professional’s hour) | R$ 0.50 (5 credits) |
| Scalability | Linear | Constant up to 500K+ queries/month |
| Audit log | No | Yes (automatic per-query trail) |
| Cache | No | 2 days (repeat = free) |
Data returned per query
For each case found, the API returns standardized JSON:
- CNJ case number (national standard)
- Case class (e.g., Common Civil Procedure, Tax Execution)
- Current status (Active, Archived, Suspended)
- Parties (plaintiff, defendant, lawyers with bar number)
- Chronological movements
- Subjects (CNJ topic classification)
- Jurisdiction (chamber, district)
- Case value (when available)
- Instance (trial or appellate)
- Original case URL on the source portal
All in the same format regardless of source court. For the full API spec, developer docs at /en/developers/ have examples in cURL, Python, Node.js, and Go.
LGPD and CPF queries — legal basis
Querying court cases by CPF using public court data has clear legal basis under LGPD (Law 13,709/2018):
- Art. 7, §4 — dispenses consent for data “made manifestly public by the subject”
- Art. 7, IX — “legitimate interests of the controller or a third party”
- Art. 7, VI — “regular exercise of rights in judicial proceedings”
Cases under judicial secrecy (family, child welfare, certain criminal cases) are not accessed. The API returns only publicly available data.
More on LGPD applied to court data in KYC beyond credit scores.
Cost optimization tips
Choose the right courts: you don’t need to search all 12 for every case. If you know which states the subject operates in, search only those.
Leverage the 2-day cache: data queried in the last 2 days is served instantly at no extra cost.
Use batch for volume: the API accepts batch queries. For bulk imports, prepare a file with 1 CPF per line.
Start with Tier 1 KYC: for generic onboarding, 1-3 home-state courts is sufficient as screening.
Pricing
| Scenario | Queries | Cost |
|---|---|---|
| 1 CPF in 1 court | 1 | R$ 0.10 |
| 1 CPF in 5 courts | 5 | R$ 0.50 |
| 1 CPF in 12 courts (full coverage) | 12 | R$ 1.20 |
| 50 CPFs in 5 courts | 250 | R$ 25.00 |
| 200 CPFs in 10 courts | 2,000 | R$ 200.00 |
No subscription. No contract. No minimum. Credits never expire. Failed courts get automatic refunds. 2-day cache for free repeats. Full pricing at /en/pricing/.
Glossary
| Term | Definition |
|---|---|
| CPF | Cadastro de Pessoa Física — Brazilian individual taxpayer ID (11 digits) |
| CNPJ | Cadastro Nacional da Pessoa Jurídica — Brazilian company ID (14 digits) |
| CNJ number | Unique case ID, format NNNNNNN-DD.YYYY.J.TR.OOOO |
| ESAJ | Justice Automation System (Softplan) — used by 7 state courts |
| PJe | Electronic Judicial Process (CNJ) — used by 13+ state courts and TRFs |
| Trial instance | 1st degree — where the case begins |
| Appellate instance | 2nd degree — appeals court |
| Captcha | Visual challenge that prevents automated queries without API |
| Judicial secrecy | Cases with restricted access (family, child welfare, etc) |
| Cache | Temporary storage — result reused at no cost when the same query is repeated |
Conclusion
Lawsuit search by CPF is the most basic and most important operation in the Brazilian court data universe. It’s the entry point for due diligence, KYC, monitoring, supplier auditing, and any judicial risk verification.
The operation is simple — but scaling manually is impossible. 200 CPFs across 10 courts = 4,000 queries = weeks of work. Via API = 2 hours + R$ 200. The decision to automate isn’t technical — it’s financial.
If you’re starting: create a free account, get 5 credits, search 1 CPF across 5 courts and see the data returned. No code, no contract. From there, scale as ROI confirms.
5 free credits on signup, no credit card. Start now.
Frequently asked questions
Not for public data. Court cases available via public lookup on court portals are manifestly public data under LGPD (Law 13,709/2018, art. 7, §4), dispensing consent. You can freely query for legitimate purposes: due diligence, KYC, compliance, risk management, defense in litigation. What you CANNOT do is use the data for unauthorized prospecting, direct marketing without legal basis, or data resale. Maintain a per-query audit trail (who queried, when, for what) to demonstrate legitimate purpose if challenged by ANPD.
Not necessarily. It can mean 3 things: (1) the person truly has no cases in the courts searched — good sign; (2) the person has cases in courts NOT covered by the search — that's why it matters to search the right courts for the subject's region of operation; (3) the person has cases under judicial secrecy (family, child welfare, certain criminal cases) — these don't appear in public lookup. Zero results is a positive signal, but not absolute certainty. To mitigate risk (2), expand court coverage.
Depends on the court. Some courts (ESAJ, for example) accept queries by both CPF and CNPJ. Others (PJe in some TRFs) only accept case numbers. Vigilant normalizes this: you send a document (CPF or CNPJ) and the API resolves which format the court accepts. For CNPJ, the query returns cases where the company is a party (plaintiff or defendant), including labor claims from former employees — especially useful for supplier auditing (see [Súmula 331 and labor liability](/en/blog/brazilian-labor-liability-supplier-audit/)).
The CNJ number is the unique identifier of every Brazilian court case, formatted as NNNNNNN-DD.YYYY.J.TR.OOOO. It encodes: sequential number, check digits (mod-97), filing year, judicial branch (8 = state, 5 = labor, 4 = federal), court (26 = TJSP, 06 = TJAL), and originating chamber. It's been mandatory and nationally standardized since CNJ Resolution 65/2008. To decode any CNJ number, use our [free CNJ decoder](/en/tools/cnj-decoder/). To validate CPFs before querying, use the [CPF validator](/en/tools/cpf-validator/).
Manually: 30 minutes to 2 hours. Includes opening 5 portals, typing the CPF, solving captchas, navigating results, copying data, repeating for appellate instance (if remembered). Via API: under 60 seconds. The API queries all 5 courts in parallel, solves captchas automatically, covers both instances, and returns standardized JSON. The difference multiplies with volume: 50 CPFs across 10 courts manually = 2-4 weeks. Via API = 30 minutes of processing.
R$ 0.10 per query, per court. One CPF searched across 5 courts costs R$ 0.50. No subscription, no contract, no minimum. Automatic 2-day cache: if you query the same CPF in the same court within 48h, the second query is free. If a court doesn't respond (downtime), the credit is refunded automatically. For high volume (e.g., 200 CPFs × 10 courts = 2,000 queries), cost is R$ 200 — compare with a paralegal doing the same manually (~4 weeks of full-time work). Pricing at [/en/pricing/](/en/pricing/).
Not yet. Vigilant covers 12 judicial sources across 10 Brazilian states today, including the largest: TJSP (25% of all cases), TJMG, TJRJ, TJDFT, TJBA, TJCE, TJPE, TJMA, TJAP, TJAC, TJAM, TJAL. Full coverage with per-court status at [/en/courts/](/en/courts/). For courts outside coverage, manual lookup on the court's official portal is the alternative. Most companies operate with a hybrid approach: 90%+ automated for covered courts, the rest manual as needed.
Depends on use case. For M&A due diligence: compile into the red flags report with risk classification (see [judicial due diligence](/en/blog/due-diligence-brazilian-entities/)). For fintech KYC: feed the decision engine as an additional feature (see [judicial KYC](/en/blog/kyc-brazilian-court-data/)). For law firms: populate the client record in case management software (see [how to automate lawsuit search](/en/blog/automate-lawsuit-search-law-firm/)). For compliance: provision contingencies per CPC 25. For all: maintain audit trail with date/time/result of each query as evidence of diligence.
Related articles
Apr 14, 2026
ESAJ vs PJE: differences, state coverage and how to query both
How ESAJ and PJE differ, which Brazilian states use each, how to access them, and the only way to query all 24 courts with a single API call. Updated April 2026.
Jun 02, 2026
How to automate lawsuit search at a law firm
Practical guide to automating per-CPF lawsuit lookup in a Brazilian law firm. 3 real paths (API integration, no-code, spreadsheet), real cost comparisons, and what the Bar Association and LGPD say. Updated April 2026.
May 05, 2026
Judicial due diligence on Brazilian entities: the practical guide from M&A to credit
Complete guide to judicial due diligence in Brazil in 2026: when to do it, what to check, real costs (manual vs API), LGPD/OAB legal coverage, and an actionable checklist. Updated April 2026.