What this is
There is no national directory of judges. Each state publishes its own bench, in its own format, at its own address: some as a JSON feed, some as a stack of PDFs, some only as a county-by-county walk of a hundred separate pages. This tool reads those sources, normalises what they say into one shape, and gives every row a link back to the page it was read from.
0 of the 0 rows are judges of a state court, which is the set AIJ invites from. The rest sit on city-funded municipal benches and are kept, labelled, and filtered out by default on the directory tab.
0 rows carry a phone number and 0 carry the date their current term ends. Those two vary a great deal by state, and the cards below say which.
Where each state comes from
0 of 51 configured states have been scraped. Click a state to open the directory filtered to it.
Configured but not scraped yet. Run npm run scrape -- AL.
Configured but not scraped yet. Run npm run scrape -- AK.
Configured but not scraped yet. Run npm run scrape -- AZ.
Configured but not scraped yet. Run npm run scrape -- AR.
Configured but not scraped yet. Run npm run scrape -- CA.
Configured but not scraped yet. Run npm run scrape -- CO.
Configured but not scraped yet. Run npm run scrape -- CT.
Configured but not scraped yet. Run npm run scrape -- DE.
Configured but not scraped yet. Run npm run scrape -- DC.
Configured but not scraped yet. Run npm run scrape -- FL.
Configured but not scraped yet. Run npm run scrape -- GA.
Configured but not scraped yet. Run npm run scrape -- HI.
Configured but not scraped yet. Run npm run scrape -- ID.
Configured but not scraped yet. Run npm run scrape -- IL.
Configured but not scraped yet. Run npm run scrape -- IN.
Configured but not scraped yet. Run npm run scrape -- IA.
Configured but not scraped yet. Run npm run scrape -- KS.
Configured but not scraped yet. Run npm run scrape -- KY.
Configured but not scraped yet. Run npm run scrape -- LA.
Configured but not scraped yet. Run npm run scrape -- ME.
Configured but not scraped yet. Run npm run scrape -- MD.
Configured but not scraped yet. Run npm run scrape -- MA.
Configured but not scraped yet. Run npm run scrape -- MI.
Configured but not scraped yet. Run npm run scrape -- MN.
Configured but not scraped yet. Run npm run scrape -- MS.
Configured but not scraped yet. Run npm run scrape -- MO.
Configured but not scraped yet. Run npm run scrape -- MT.
Configured but not scraped yet. Run npm run scrape -- NE.
Configured but not scraped yet. Run npm run scrape -- NV.
Configured but not scraped yet. Run npm run scrape -- NH.
Configured but not scraped yet. Run npm run scrape -- NJ.
Configured but not scraped yet. Run npm run scrape -- NM.
Configured but not scraped yet. Run npm run scrape -- NY.
Configured but not scraped yet. Run npm run scrape -- NC.
Configured but not scraped yet. Run npm run scrape -- ND.
Configured but not scraped yet. Run npm run scrape -- OH.
Configured but not scraped yet. Run npm run scrape -- OK.
Configured but not scraped yet. Run npm run scrape -- OR.
Configured but not scraped yet. Run npm run scrape -- PA.
Configured but not scraped yet. Run npm run scrape -- RI.
Configured but not scraped yet. Run npm run scrape -- SC.
Configured but not scraped yet. Run npm run scrape -- SD.
Configured but not scraped yet. Run npm run scrape -- TN.
Configured but not scraped yet. Run npm run scrape -- TX.
Configured but not scraped yet. Run npm run scrape -- UT.
Configured but not scraped yet. Run npm run scrape -- VT.
Configured but not scraped yet. Run npm run scrape -- VA.
Configured but not scraped yet. Run npm run scrape -- WA.
Configured but not scraped yet. Run npm run scrape -- WV.
Configured but not scraped yet. Run npm run scrape -- WI.
Configured but not scraped yet. Run npm run scrape -- WY.
The problem
For the tax lien tool, nearly everything came from one place: Delta Computer Systems hosts most of Mississippi’s delinquent property records, so a single scraper walked a single site. Judges are not like that. There is no national register, no federal clearing house, and no two states publish their bench the same way. What each state does publish is an official directory of its own courts, and that is the only kind of source this tool reads: no aggregators, no people-search sites, no scraping of search results.
The reason for that rule is the thing you asked for: no invented data. Every field in this tool can be traced to a page a court published, and every row carries the link. If a row is wrong, it is wrong because the court’s own directory is out of date, which is a thing you can check, argue with, and correct.
What was tried, per state
Every jurisdiction needed its own technique, and the account below is written per state by the scraper that read it, so what you are reading is the note the parser author left, not a summary of it. In the order the states were added, which is roughly the order of how much work each one took.
What could not be read at all
Six state judiciaries answer an automated request with a challenge page rather than with their directory: Kansas, Minnesota, Missouri, Nevada, New York and Tennessee. That is a control their operators turned on deliberately, and working around it would be circumventing an access control rather than reading a public record, so those states are simply not in this tool.
Two more are absent for a different reason, and it is not a technical one: California and Florida publish no statewide roster at all. The bench is left to fifty-eight county superior courts and twenty judicial circuits respectively, each with its own site and its own way of printing a judge. Those are parsers still to be written rather than sources that cannot be read, which is the same position Arizona was in until its fifteen counties were read one at a time.
Eleven other states answered 403 to a request naming this tool and 200 to the identical request naming a browser. That is a web application firewall rejecting an unfamiliar string, not a publisher declining to serve us: the pages are public and every one of those hosts allows all crawlers in its robots.txt. Those requests now carry a browser User-Agent and a From: header naming our contact address, which is the field the HTTP specification defines for it.
How a judge is classified
Every state names its courts differently, and the names actively mislead across state lines. Ohio’s trial court of general jurisdiction is the Court of Common Pleas; Michigan’s is the Circuit Court; Texas’s and Louisiana’s are both called District Courts, but a Texas District Court sits above its County Court at Law while a Michigan District Court sits below its Circuit Court. Sorting a spreadsheet on the court’s name puts a Michigan district judge next to a Texas district judge as if they were the same bench.
So every judge carries three things that mean the same in all fifty states:
Court level
- Supreme: A state's highest court. AIJ has said these justices rarely attend, so they get their own filter rather than being mixed into the appellate bench.
- Appellate: Courts of Appeals and Courts of Appeal, plus Texas's Court of Criminal Appeals, which is final for criminal matters but a nine-judge appellate bench.
- General trial: The main trial bench: Common Pleas in Ohio, Circuit in Michigan, District in Texas and Louisiana.
- Limited trial: Benches capped by subject matter or dollar amount: county courts, Michigan's district and probate courts, Louisiana's city and parish courts, justices of the peace.
Court system
- State judiciary: Created by the state constitution or the legislature and part of the state court system. This is the set AIJ invites from.
- City / municipal: Created by a city charter or ordinance and funded by the city. Ohio's municipal courts are the exception and are counted as state courts here, because they are creatures of the Revised Code and the Supreme Court of Ohio lists them in its own judicial directory.
- Federal administrative: A federal administrative tribunal rather than a court: the U.S. Merit Systems Protection Board, whose administrative judges hear federal-employee appeals. Set only by that collection and never inferred from a court name, so it can never be confused with a state bench, and nothing here is counted as a state judge.
Divisions
What the bench actually hears: probate, juvenile, domestic relations, family, criminal, civil. These are tags rather than a level of their own, because a probate judge in Ohio is a Common Pleas judge sitting in the probate division, while in Michigan the Probate Court is a court of its own. The tag says what they hear without lying about where they sit.
The classification is a per-state table of rules, not one shared guess, because a shared “District Court means general jurisdiction” rule would be right for two of these states and wrong for a third, and that is exactly the kind of error that stays invisible in eighteen thousand rows. Where no rule matches, the row is left unclassified and shows as such rather than being filed under a bench it might not belong to.
What is still missing
- Email addresses, in most states. Washington and South Carolina publish a judge’s email openly and those are in the export. Most states publish none at all. Georgia is the awkward case: it publishes an email only for the judges who opted in, and the opt-in flag is not readable from the public feed even though the address is, so no Georgia email is exported. Honoring an opt-out that cannot be read means publishing none of them.
- Term expiry, nearly everywhere. Ohio publishes it for every judge and Michigan for its Court of Appeals. Almost no other state prints it in its directory at all; it would have to come from each state’s election results, which is a different source and a different tool.
- Judicial circuit for county-level benches. The column is filled where the state numbers the bench: Texas judicial districts, New Jersey vicinages, Illinois circuits, Pennsylvania judicial districts, West Virginia circuits. A county court has no circuit and the cell is left blank rather than filled with the county’s name twice over.
- Six states behind a challenge page. Kansas, Minnesota, Missouri, Nevada, New York and Tennessee serve an automated request a bot challenge instead of their directory. Solving it would be circumventing an access control, so those states are absent rather than guessed at.
- Two states with no statewide roster. California and Florida leave the bench to fifty-eight county superior courts and twenty judicial circuits, each publishing its own judges its own way. Those are parsers still to be written rather than sources that cannot be read. Arizona was the third and is now in, read county by county; Hawai‘i was thought to publish no roster at all and in fact publishes a plain HTML table per court, which is where its judges come from.
- The states not yet written. Each one is its own source and its own parser, and the home page names which are loaded and which are not.
Checking the work
Every row in the table and every row in the CSV carries a SOURCE URL pointing at the page or document it was read from, and an ADDRESS BASIS saying whether the address was published for that court or joined on from the courthouse. Open any row on the directory tab and the source link is in the third column.
One kind of row has no such link, and says so where the link would be. AIJ’s own correspondence workbook holds judges the state’s directory does not list. Alabama’s tab has about fifty of them, and those judges are in the sheet rather than left out of it, built from the workbook’s own columns and marked Workbook on the row, in SOURCE, and under Row source in the filters. The workbook is also where the STATUS column comes from: which judges have already had a letter and when. No court publishes that, and nothing else in this tool could.
And one kind of row has an address its source link will not show you. AIJ’s conference registration list, the judges who have actually come to a conference, fills the DATES ATTENDED column, and on those judges it also replaces the mailing address, city, zip, phone and email with what the judge wrote on their own registration form. A court website lists the address of a courthouse; a judge filling in a form writes the address they want mail at. For a mail merge those are different things and the judge’s answer is the better one, so ADDRESS BASIS reads The judge’s own registration form and DATA NOTES keeps whatever the court published. The judiciary stays the authority on who is on the bench; the judge is the authority on where to reach them.
There is also a verifier: npm run verify takes a random sample of rows, re-fetches the source each one claims to come from, and reports any whose name or address is no longer found there. It is the check against a parser that has silently drifted, because a scraper that is wrong is usually wrong quietly.