{
  "openapi": "3.0.1",
  "info": {
    "title": "CourtListener Litigation Party & Counsel Scraper",
    "description": "Scrape litigation parties and their counsel from CourtListener RECAP: one row per party, with law firms, attorneys, judge and case. Export to CSV, JSON, Excel or XML.",
    "version": "0.2",
    "x-build-id": "mZRzcQwIx5UAm0Ety"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~courtlistener-party-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-courtlistener-party-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/parseforge~courtlistener-party-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-courtlistener-party-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/parseforge~courtlistener-party-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-courtlistener-party-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "partyKeywords": {
            "title": "Party names",
            "type": "array",
            "description": "Names of litigants to look for, for example \"Eli Lilly and Company\" or \"Novo Nordisk\". Several names are matched as OR inside one search. Words are matched, so a surname or a brand alone works. Leave empty to browse every party in the filtered set.",
            "items": {
              "type": "string"
            }
          },
          "attorneyKeywords": {
            "title": "Attorney names",
            "type": "array",
            "description": "Names of attorneys of record, for example \"David I Horowitz\". Several names are matched as OR. Combined with the other name filters using AND, so an attorney plus a firm returns only the cases where both appear.",
            "items": {
              "type": "string"
            }
          },
          "lawFirmKeywords": {
            "title": "Law firm names",
            "type": "array",
            "description": "Names of law firms as PACER records them, for example \"Kirkland and Ellis LLP\" or \"Latham & Watkins LLP\". Several firms are matched as OR. This is the fastest way to pull a firm's entire federal client list.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. One item is one party, so a docket with six litigants produces six rows. Leave empty on a paid plan for 100 rows."
          },
          "suitCategories": {
            "title": "Nature of suit category",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick whole JS-44 groups instead of memorising codes. Each category expands to its nature-of-suit codes and is searched in turn. Leave empty to take parties from every case type.",
            "items": {
              "type": "string",
              "enum": [
                "contract",
                "real-property",
                "torts",
                "personal-property",
                "bankruptcy",
                "civil-rights",
                "prisoner-petitions",
                "forfeiture-penalty",
                "labor",
                "intellectual-property",
                "social-security",
                "federal-tax",
                "immigration",
                "other-statutes"
              ],
              "enumTitles": [
                "Contract (110-196)",
                "Real property (210-290)",
                "Torts, personal injury (310-368)",
                "Personal property (370-385)",
                "Bankruptcy appeals (422-423)",
                "Civil rights (440-448)",
                "Prisoner petitions (463-560)",
                "Forfeiture and penalty (625-690)",
                "Labor (710-791)",
                "Intellectual property (820-880)",
                "Social security (861-865)",
                "Federal tax suits (870-871)",
                "Immigration (462-465)",
                "Other statutes (375-950)"
              ]
            }
          },
          "natureOfSuitCodes": {
            "title": "Nature of suit codes",
            "type": "array",
            "description": "Exact JS-44 codes, for example 830 for patent, 850 for securities or 442 for employment discrimination. Each code is searched separately and the results are merged, with the row budget split between them. Combines with the categories above.",
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "Full-text query across the case caption, parties and counsel. Supports quoted phrases and AND/OR/NOT. Leave empty to browse with the filters alone."
          },
          "cause": {
            "title": "Cause of action",
            "type": "string",
            "description": "The statute the complaint is brought under, as PACER writes it, for example \"28:1332 Diversity\" or \"42:1983\". Words are matched, so \"civil rights\" works too."
          },
          "court": {
            "title": "Court ID",
            "type": "string",
            "description": "Restrict to one court by its CourtListener ID, for example cand, nysd, txed or ilnd. Space-separate several IDs to match any of them."
          },
          "caseName": {
            "title": "Case name",
            "type": "string",
            "description": "Match words in the case caption, for example \"smith\" or \"united states\"."
          },
          "docketNumber": {
            "title": "Docket number",
            "type": "string",
            "description": "Exact docket number, for example 1:20-cv-03590. Use it to pull the full party and counsel list of one case."
          },
          "filedAfter": {
            "title": "Filed on or after",
            "type": "string",
            "description": "Earliest filing date, as MM/DD/YYYY or YYYY-MM-DD."
          },
          "filedBefore": {
            "title": "Filed on or before",
            "type": "string",
            "description": "Latest filing date, as MM/DD/YYYY or YYYY-MM-DD."
          },
          "requireCounsel": {
            "title": "Represented parties only",
            "type": "boolean",
            "description": "Keep only dockets where PACER recorded at least one law firm. On by default: without it the unfiltered feed is dominated by bankruptcy petition stubs that carry a single unrepresented debtor. 2.8 million dockets in the archive pass this filter.",
            "default": true
          },
          "caseTypes": {
            "title": "Case types",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only parties from these kinds of case. The type is read from the PACER docket number and the bankruptcy chapter. Leave empty to take every type.",
            "items": {
              "type": "string",
              "enum": [
                "Civil",
                "Criminal",
                "Bankruptcy",
                "Bankruptcy adversary"
              ],
              "enumTitles": [
                "Civil (cv, md, ml, mc)",
                "Criminal (cr, mj, po, pr)",
                "Bankruptcy petitions",
                "Bankruptcy adversary proceedings"
              ]
            }
          },
          "orderBy": {
            "title": "Sort order",
            "enum": [
              "dateFiled desc",
              "dateFiled asc",
              "score desc"
            ],
            "type": "string",
            "description": "How to order the dockets before their parties are expanded. Relevance only means anything when a search query or a name filter is set. Oldest first returns the highest field coverage: measured 2026-09-08, party IDs land on 20 of 20 dockets against 19 of 20 for newest first.",
            "default": "dateFiled desc"
          },
          "courtListenerKey": {
            "title": "CourtListener API key (optional)",
            "type": "string",
            "description": "A free CourtListener API key (Profile > API on courtlistener.com) lifts the anonymous throttle and makes long runs faster. Leave empty to run anonymously."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: the CourtListener API is open. Turn it on for long anonymous runs so each request gets a fresh exit IP and its own throttle allowance. Not used when an API key is supplied.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}