# LegalHarvest — All-in-One U.S. Legal Research (`valor-investigations/legalharvest`) Actor

Search court records, case law, statutes, legislation, corporate filings, and federal regulations across 6+ free legal databases in one actor.

- **URL**: https://apify.com/valor-investigations/legalharvest.md
- **Developed by:** [Valor Investigates](https://apify.com/valor-investigations) (community)
- **Categories:** AI, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 4.00 out of 5 stars

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

### What LegalHarvest Does

LegalHarvest is a multi-source U.S. legal research API packaged as an Apify Actor. It searches public legal, regulatory, corporate, and federal spending sources from one normalized input and returns structured JSON that is ready for Apify datasets, API workflows, AI agents, and MCP-style tool use.

Use it when you want one lightweight actor for legal research discovery instead of wiring together separate calls to CourtListener, GovInfo, Congress.gov, Federal Register, eCFR, SEC EDGAR, USAspending, Open States, U.S. Code lookups, Oregon Revised Statutes lookups, and the new search-backed multi-state statute lookup layer.

### Update

April 17, 2026: LegalHarvest now ships a new `state_statutes` source for non-Oregon state statute discovery. Oregon ORS remains the official direct adapter, while the new multi-state layer adds search-backed public-code lookup for citation-style queries such as `California Penal Code 187`, `Florida Statutes 119.07`, `ORC 2903.02`, `MCL 15.231`, `RCW 42.56.070`, `NCGS 132-1`, and `Texas Penal Code 19.02`. Exact section citations now use official California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington statute backends when possible. This is the first 50-state foundation release, and broader state-by-state quality work is still in progress.

State coverage note: Oregon Revised Statutes remains the direct official state-statute adapter. LegalHarvest now also includes official exact-section adapters for California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington, plus a search-backed public state-statute lookup foundation for other non-Oregon states. More official state adapters are planned ASAP. State bill searches are available through Open States when a jurisdiction is supplied and Open States quota is available.

LegalHarvest is best for fast public-record discovery, citation lookups, compliance research, legislative monitoring, investigative research, and RAG/AI data collection. It is not legal advice, a citator, PACER access, Google Scholar access, or a paid proprietary legal database. Always verify important results against the linked official source.

### Features

- Search across case law, dockets, federal legislation, federal statutes, Oregon state statutes, search-backed multi-state statutes, regulations, corporate filings, and federal spending from a single input.
- Auto-route exact citations such as `ORS 192.431`, `42 U.S.C. 1983`, `45 CFR 164.512`, and `119 HR 1` to the most relevant official source.
- Return normalized records with common fields like title, citation, source, jurisdiction, date, status, URL, matched terms, and optional raw payloads.
- Keep compute costs low by using HTTP-based source adapters rather than headless browsers.
- Produce Apify dataset rows and a `RUN_SUMMARY` key-value-store record for monitoring and automation.
- Work well with Apify API, scheduled runs, webhooks, dataset exports, and AI-agent/MCP workflows.
- Preserve CourtListener privacy signals when a result is flagged as blocked from public search-engine indexing.

### Public Sources Covered

| Source | Coverage | Key required? |
| --- | --- | --- |
| [CourtListener](https://www.courtlistener.com/) | Case law and docket discovery | No, token recommended for higher volume |
| [GovInfo](https://www.govinfo.gov/) | U.S. Reports and official federal documents | Optional `API_DATA_GOV_KEY` recommended |
| [Congress.gov](https://api.congress.gov/) | Federal bills and bill summaries | Optional `API_DATA_GOV_KEY` recommended |
| [Federal Register](https://www.federalregister.gov/developers) | Rules, proposed rules, notices, and executive materials | No |
| [eCFR](https://www.ecfr.gov/developers/documentation/api/v1) | Code of Federal Regulations citation lookups | No |
| [U.S. Code](https://uscode.house.gov/) | U.S. Code citation lookups | No |
| [Oregon Revised Statutes](https://www.oregonlegislature.gov/bills_laws/ors/ors.html) | Oregon state statute lookups from the official legislature source | No |
| [California Legislative Information](https://leginfo.legislature.ca.gov/) | Official California statute lookup for exact California code citations such as `California Penal Code 187` | No |
| [Florida Statutes](https://www.leg.state.fl.us/statutes/) | Official Florida statute lookup for exact Florida citations such as `Florida Statutes 119.07` | No |
| [Michigan Legislature](https://www.legislature.mi.gov/Laws/MCL) | Official Michigan Compiled Laws lookup for exact citations such as `MCL 15.231` | No |
| [North Carolina General Assembly](https://www.ncleg.gov/Laws/GeneralStatutesTOC) | Official North Carolina statute lookup for exact citations such as `NCGS 132-1` | No |
| [Ohio Laws](https://codes.ohio.gov/ohio-revised-code) | Official Ohio Revised Code lookup for exact citations such as `ORC 2903.02` | No |
| [Texas Constitution and Statutes](https://statutes.capitol.texas.gov/) | Official Texas statute lookup for exact Texas code citations such as `Texas Penal Code 19.02` | No |
| [Washington Legislature](https://app.leg.wa.gov/RCW/) | Official Revised Code of Washington lookup for exact citations such as `RCW 42.56.070` | No |
| Public state-code search layer | Search-backed non-Oregon state statute lookup across indexed public code hosts such as Justia and FindLaw; best on citation-style queries | No |
| [Open States](https://docs.openstates.org/api-v3/) | State bill search across Open States jurisdictions, especially with a jurisdiction filter | Yes, `OPENSTATES_API_KEY` or `openstates_api_key` |
| [SEC EDGAR](https://www.sec.gov/search-filings/edgar-application-programming-interfaces) | Public company filings | No, but a descriptive User-Agent is used |
| [USAspending.gov](https://api.usaspending.gov/docs/endpoints) | Federal recipient spending search | No |

### Input

The main input is a search query plus an optional search mode. Leave `sources` empty unless you want to force a specific source adapter.

For state statutes, Oregon ORS remains the direct official adapter. California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington exact section citations now also use official state backends. Other non-Oregon state statute searches use the `state_statutes` source, which searches indexed public code hosts and works best when the query includes a state plus a code, chapter, or section citation. Shorthand state-code queries such as `MCL 15.231`, `ORC 2903.02`, `RCW 42.56.070`, and `NCGS 132-1` now auto-route as well. Use Open States for state bill and legislative searches with `jurisdictions`; additional official 50-state statute adapters are still planned.

```json
{
  "query": "Brown v. Board of Education",
  "search_mode": "case_law",
  "max_results": 5
}
````

Useful examples:

```json
{
  "query": "ORS 192.431",
  "search_mode": "statutes",
  "max_results": 5
}
```

```json
{
  "query": "45 CFR 164.512",
  "search_mode": "regulations",
  "max_results": 5
}
```

```json
{
  "query": "119 HR 1",
  "search_mode": "legislation",
  "max_results": 5
}
```

```json
{
  "query": "HB 2001",
  "search_mode": "legislation",
  "jurisdictions": ["or"],
  "sources": ["openstates"],
  "max_results": 5
}
```

```json
{
  "query": "Apple",
  "search_mode": "corporate",
  "max_results": 5
}
```

```json
{
  "query": "Lockheed Martin",
  "search_mode": "spending",
  "max_results": 5
}
```

### Output

LegalHarvest writes normalized records to the default dataset. A typical result looks like this:

```json
{
  "result_type": "case_law",
  "source": "govinfo",
  "title": "Brown v. Board of Education",
  "summary": "Official U.S. Reports record for the case.",
  "citation": "347 U.S. 483",
  "court_or_body": "Supreme Court of the United States",
  "jurisdiction": "US",
  "date": "1954-05-17",
  "status": "available",
  "url": "https://www.govinfo.gov/",
  "source_id": "example-source-id",
  "query": "Brown v. Board of Education",
  "matched_terms": ["Brown", "Board", "Education"],
  "raw": null
}
```

The actor also stores a `RUN_SUMMARY` record in the default key-value store with the query, selected mode, requested sources, per-source messages, total result count, and final status message.

### How To Run LegalHarvest

In Apify Console, open the actor, choose a search mode, enter a query, and click Start. Use the dataset tab for results and the key-value-store tab for `RUN_SUMMARY`.

From the Apify CLI:

```powershell
npx apify-cli call valor-investigations/legalharvest --input '{"query":"Brown v. Board of Education","search_mode":"case_law","max_results":5}'
```

For API and AI-agent workflows, use the actor's Apify API endpoint or expose it through Apify's MCP integrations. The normalized input schema is designed so agents can choose a search mode, pass a legal citation or keyword query, and read structured dataset rows back as tool results.

### Configuration

LegalHarvest supports bring-your-own-key inputs for quota-sensitive sources. Users can provide `api_data_gov_key`, `courtlistener_api_token`, or `openstates_api_key` as secret Actor inputs for a single run. If those fields are blank, the actor falls back to owner-managed environment secrets when available.

`OPENSTATES_API_KEY` is required only for Open States state-bill searches in self-hosted or developer deployments. The hosted Store actor can use the actor owner's configured secret, but high-volume Store users should provide their own `openstates_api_key` or use a higher-capacity data plan.

`API_DATA_GOV_KEY` is optional but recommended for developer deployments that need higher Congress.gov and GovInfo throughput because shared demo-key access can be rate-limited. Store it as an Apify secret and map it to the actor environment variable with the same name, or pass `api_data_gov_key` in the Actor input.

`COURTLISTENER_API_TOKEN` is optional but recommended for higher-volume CourtListener use. Store it as an Apify secret and map it to the actor environment variable with the same name, or pass `courtlistener_api_token` in the Actor input.

`LEGALHARVEST_USER_AGENT` is optional for local development. On Apify, the actor uses a descriptive default user agent and source-specific safe formatting.

### Store And Quota Notes

For public Apify Store use, the recommended production setup is to configure owner-managed Apify secret environment variables for `API_DATA_GOV_KEY`, `COURTLISTENER_API_TOKEN`, and `OPENSTATES_API_KEY`, while still allowing high-volume users to bring their own per-run keys. This keeps trial runs simple, reduces shared quota pressure, and gives enterprise users a clean path to use their own source-provider agreements.

Open States is the tightest default quota surface in this actor, so state-legislation searches should encourage users to supply `openstates_api_key` when they expect sustained usage. Oregon, California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington now have official state-statute paths; the broader `state_statutes` source is still a search-backed 50-state foundation, not the final form of a 50-state statute scraper. CourtListener REST API is the best match for this actor's current architecture. Bulk data, database replication, and webhooks are better handled as separate advanced pipelines, not as the default Store actor path.

### Limitations And Responsible Use

LegalHarvest uses public sources and official/open endpoints where available. It does not bypass paywalls, CAPTCHAs, PACER fees, Google Scholar restrictions, proprietary databases, or access controls.

Results are discovery-oriented. Always verify important legal conclusions against the official source, current law, and qualified counsel. The actor does not determine whether a case is still good law and does not provide legal advice.

Users are responsible for using exported data lawfully, including privacy, court-record, data-brokerage, export-control, and platform terms that may apply to their use case. When CourtListener marks a result as blocked from public search-engine indexing, LegalHarvest preserves that signal in the normalized `status` field so users can handle it with extra care.

LegalHarvest is not affiliated with or endorsed by CourtListener, Free Law Project, GovInfo, Congress.gov, Federal Register, eCFR, SEC EDGAR, USAspending.gov, Open States, the Oregon Legislature, or any other source provider.

### Good Fits

- Public legal research discovery
- Investigative journalism and public-record triage
- Compliance and due-diligence source collection
- Legislative and regulatory monitoring
- AI/RAG enrichment from public legal and government sources
- Apify schedules, webhooks, dataset exports, and MCP-style agent workflows

# Actor input Schema

## `query` (type: `string`):

The keyword, citation, company, bill, or docket query to search across enabled sources. Citation examples: ORS 192.431, 42 U.S.C. 1983, 45 CFR 164.512, California Penal Code 187, Florida Statutes 119.07, ORC 2903.02, MCL 15.231, RCW 42.56.070, NCGS 132-1, HB 4040. Oregon ORS remains the direct official state-statute adapter, and exact California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington section citations now use official state backends when possible.

## `search_mode` (type: `string`):

Choose which legal surface to search. In all mode, exact citations are auto-routed to the most relevant official sources when supported. Statute mode covers federal U.S. Code, official Oregon ORS lookups, official California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington exact section lookups, and search-backed multi-state public statute lookup for other non-Oregon queries.

## `jurisdictions` (type: `array`):

Optional list of jurisdiction filters. Use state names or abbreviations like or, ca, fl, mi, nc, oh, tx, wa, or washington for Open States bill queries. Oregon routes to the official ORS adapter; California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington exact section citations use official state backends when possible; other state statute lookups use the search-backed public state-statute source.

## `sources` (type: `array`):

Optional source override. Leave empty to use the default sources for the selected search mode. Supported values: courtlistener, congress\_gov, ecfr, govinfo, federal\_register, openstates, oregon\_ors, sec\_edgar, state\_statutes, usaspending, us\_code.

## `date_from` (type: `string`):

Optional start date in YYYY-MM-DD format.

## `date_to` (type: `string`):

Optional end date in YYYY-MM-DD format.

## `max_results` (type: `integer`):

Maximum normalized results to keep after aggregation.

## `include_full_text` (type: `boolean`):

Request full text where a source supports it.

## `include_raw` (type: `boolean`):

Include raw source payloads in normalized results for debugging and schema refinement.

## `api_data_gov_key` (type: `string`):

Optional bring-your-own API key for Congress.gov and GovInfo. Leave blank to use the actor owner's configured fallback if available.

## `courtlistener_api_token` (type: `string`):

Optional bring-your-own CourtListener token for authenticated CourtListener requests. Leave blank to use the actor owner's configured fallback if available.

## `openstates_api_key` (type: `string`):

Optional bring-your-own OpenStates key for state bill searches. Leave blank to use the actor owner's configured fallback if available.

## Actor input object example

```json
{
  "query": "Brown v. Board of Education",
  "search_mode": "all",
  "jurisdictions": [
    "or"
  ],
  "sources": [],
  "max_results": 25,
  "include_full_text": false,
  "include_raw": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `run_summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "Brown v. Board of Education",
    "jurisdictions": [
        "or"
    ],
    "sources": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("valor-investigations/legalharvest").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "Brown v. Board of Education",
    "jurisdictions": ["or"],
    "sources": [],
}

# Run the Actor and wait for it to finish
run = client.actor("valor-investigations/legalharvest").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "Brown v. Board of Education",
  "jurisdictions": [
    "or"
  ],
  "sources": []
}' |
apify call valor-investigations/legalharvest --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=valor-investigations/legalharvest",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LegalHarvest — All-in-One U.S. Legal Research",
        "description": "Search court records, case law, statutes, legislation, corporate filings, and federal regulations across 6+ free legal databases in one actor.",
        "version": "0.1",
        "x-build-id": "BwAZssPXEHowb8Nff"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/valor-investigations~legalharvest/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-valor-investigations-legalharvest",
                "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/valor-investigations~legalharvest/runs": {
            "post": {
                "operationId": "runs-sync-valor-investigations-legalharvest",
                "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/valor-investigations~legalharvest/run-sync": {
            "post": {
                "operationId": "run-sync-valor-investigations-legalharvest",
                "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",
                "required": [
                    "query"
                ],
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "The keyword, citation, company, bill, or docket query to search across enabled sources. Citation examples: ORS 192.431, 42 U.S.C. 1983, 45 CFR 164.512, California Penal Code 187, Florida Statutes 119.07, ORC 2903.02, MCL 15.231, RCW 42.56.070, NCGS 132-1, HB 4040. Oregon ORS remains the direct official state-statute adapter, and exact California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington section citations now use official state backends when possible.",
                        "default": "Brown v. Board of Education"
                    },
                    "search_mode": {
                        "title": "Search mode",
                        "enum": [
                            "all",
                            "case_law",
                            "legislation",
                            "statutes",
                            "regulations",
                            "dockets",
                            "corporate",
                            "spending"
                        ],
                        "type": "string",
                        "description": "Choose which legal surface to search. In all mode, exact citations are auto-routed to the most relevant official sources when supported. Statute mode covers federal U.S. Code, official Oregon ORS lookups, official California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington exact section lookups, and search-backed multi-state public statute lookup for other non-Oregon queries.",
                        "default": "all"
                    },
                    "jurisdictions": {
                        "title": "Jurisdictions",
                        "type": "array",
                        "description": "Optional list of jurisdiction filters. Use state names or abbreviations like or, ca, fl, mi, nc, oh, tx, wa, or washington for Open States bill queries. Oregon routes to the official ORS adapter; California, Florida, Michigan, North Carolina, Ohio, Texas, and Washington exact section citations use official state backends when possible; other state statute lookups use the search-backed public state-statute source.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "sources": {
                        "title": "Sources",
                        "type": "array",
                        "description": "Optional source override. Leave empty to use the default sources for the selected search mode. Supported values: courtlistener, congress_gov, ecfr, govinfo, federal_register, openstates, oregon_ors, sec_edgar, state_statutes, usaspending, us_code.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "date_from": {
                        "title": "Date from",
                        "type": "string",
                        "description": "Optional start date in YYYY-MM-DD format."
                    },
                    "date_to": {
                        "title": "Date to",
                        "type": "string",
                        "description": "Optional end date in YYYY-MM-DD format."
                    },
                    "max_results": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 250,
                        "type": "integer",
                        "description": "Maximum normalized results to keep after aggregation.",
                        "default": 25
                    },
                    "include_full_text": {
                        "title": "Include full text",
                        "type": "boolean",
                        "description": "Request full text where a source supports it.",
                        "default": false
                    },
                    "include_raw": {
                        "title": "Include raw source payloads",
                        "type": "boolean",
                        "description": "Include raw source payloads in normalized results for debugging and schema refinement.",
                        "default": false
                    },
                    "api_data_gov_key": {
                        "title": "Data.gov API key",
                        "type": "string",
                        "description": "Optional bring-your-own API key for Congress.gov and GovInfo. Leave blank to use the actor owner's configured fallback if available."
                    },
                    "courtlistener_api_token": {
                        "title": "CourtListener API token",
                        "type": "string",
                        "description": "Optional bring-your-own CourtListener token for authenticated CourtListener requests. Leave blank to use the actor owner's configured fallback if available."
                    },
                    "openstates_api_key": {
                        "title": "OpenStates API key",
                        "type": "string",
                        "description": "Optional bring-your-own OpenStates key for state bill searches. Leave blank to use the actor owner's configured fallback if available."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
