# FEC Campaign Finance Scraper (`maximedupre/fec-campaign-finance-scraper`) Actor

Search FEC campaign finance data for contributions, candidates, committees/PACs, spending, independent expenditures, and committee totals. Export source-backed records with donor, amount, candidate, committee, employer, recipient, and FEC evidence links.

- **URL**: https://apify.com/maximedupre/fec-campaign-finance-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Business, News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 result rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🗳️ FEC campaign finance data for contributions, candidates, committees, and spending

FEC Campaign Finance Scraper helps researchers, journalists, compliance teams, civic tech builders, and campaign analysts collect official FEC campaign finance records in one Apify run. Use it to return contribution, candidate, committee/PAC, spending, independent expenditure, committee total, or grouped summary rows with source identifiers and links for verification.

- Look up [itemized campaign contributions](https://apify.com/maximedupre/fec-campaign-finance-scraper/examples/itemized-campaign-contributions) by donor, employer, occupation, state, date, amount, committee, candidate, or election cycle.
- Find [political donations by company](https://apify.com/maximedupre/fec-campaign-finance-scraper/examples/political-donations-by-company) or employer for research, compliance review, and public-record analysis.
- Compare [political donations by candidate](https://apify.com/maximedupre/fec-campaign-finance-scraper/examples/political-donations-by-candidate), committee, PAC, party, office, state, or election year.
- Pull [campaign finance reports and spending records](https://apify.com/maximedupre/fec-campaign-finance-scraper/examples/campaign-finance-reports-and-spending-records), including disbursements, independent expenditures, committee totals, and support/oppose values when available.
- Build repeatable [FEC data workflows](https://apify.com/maximedupre/fec-campaign-finance-scraper/examples/fec-data-workflows) for exports, monitoring, dashboards, webhooks, or internal databases.

#### 📦 Returned data

The actor returns one dataset row for each successful user-visible FEC result. The row shape depends on the selected result scope, but every row includes a `rowType`, a stable `id`, and `source` evidence with an official FEC source URL when available.

Depending on the scope, rows can include contributor details, candidate details, committee or PAC metadata, transaction amounts and dates, spending recipient details, financial summaries, grouped aggregate totals, and deterministic enrichment. Source evidence can include PDF URLs, image numbers, file numbers, transaction IDs, report types, and source load dates when the FEC data provides them.

The actor is designed for source-grounded records. It does not infer political beliefs, hidden intent, or unsupported affiliations. Missing or source-limited facts are represented as null values or completeness notes instead of being guessed.

#### ▶️ How to run

1. Choose the **Result scope**: itemized contributions, candidates, committees and PACs, spending and disbursements, independent expenditures, committee totals, or grouped summary.
2. Add only the filters that match your scope, such as contributor names, candidate names or IDs, committee IDs, employer names, recipient names, election years, dates, amount range, state, party, office, or support/oppose.
3. Set **Maximum results** to control how many accepted rows you want back.
4. Optionally add your FEC API key if you have one and want authenticated source access for larger runs.
5. Start the actor and export the dataset as JSON, CSV, Excel, XML, RSS, or HTML from Apify.

For a quick campaign contributions lookup, select `contributions`, enter one or more contributor names, add a cycle such as `2024`, and keep the default output mode as individual records.

#### 🎛️ Input

| Input | What it does |
| --- | --- |
| `resultScope` | Required. Selects the FEC data type to return. |
| `contributorNames` | Searches contribution records by donor or contributor name. |
| `candidateNamesOrIds` | Searches or filters by candidate name or FEC candidate ID. |
| `committeeNamesOrIds` | Searches or filters by committee, PAC, or FEC committee ID. |
| `employerNames` / `occupations` | Filters contribution records by employer or occupation. |
| `recipientNames` | Filters spending or disbursement records by recipient. |
| `electionYears`, `dateFrom`, `dateTo` | Limits results by cycle or date when the selected scope supports it. |
| `minAmount`, `maxAmount` | Filters financial records by amount when applicable. |
| `state`, `party`, `office` | Filters geography, party, or office when supported by the selected scope. |
| `supportOppose` | Filters independent expenditures by support or opposition. |
| `outputMode`, `groupBy` | Returns individual records or deterministic grouped summaries. |
| `maxResults` | Maximum successful rows to return. |
| `apiKey` | Optional FEC API key for authenticated source access. |

#### 🧾 Output example

```json
{
  "rowType": "contribution",
  "id": "C00703975-2024-123456789",
  "source": {
    "sourceUrl": "https://www.fec.gov/data/receipts/individual-contributions/",
    "pdfUrl": "https://docquery.fec.gov/pdf/123/202401239999999123/202401239999999123.pdf",
    "imageNumber": "202401239999999123",
    "fileNumber": "1789012",
    "transactionId": "SA11AI.12345",
    "reportType": "Q3",
    "loadDate": "2024-10-15"
  },
  "contributor": {
    "name": "Jane Smith",
    "firstName": "Jane",
    "lastName": "Smith",
    "employer": "Acme Inc",
    "occupation": "Engineer",
    "city": "Los Angeles",
    "state": "CA",
    "zip": "90001",
    "canonicalId": "jane-smith|acme-inc|ca"
  },
  "candidate": {
    "id": "P80001571",
    "name": "Candidate Name",
    "party": "DEM",
    "office": "P",
    "state": "CA",
    "district": "12",
    "electionYear": 2024,
    "incumbentChallengeStatus": "I",
    "firstFileDate": "2023-01-15",
    "activeThrough": 2024
  },
  "committee": {
    "id": "C00703975",
    "name": "Example Committee",
    "type": "Q",
    "typeFull": "PAC - Qualified",
    "designation": "U",
    "organizationType": "Corporation",
    "committeeKind": "super PAC",
    "party": "DEM",
    "state": "CA",
    "treasurerName": "Alex Treasurer",
    "filingFrequency": "M",
    "firstFileDate": "2021-02-01",
    "address": {
      "street1": "123 Main St",
      "street2": "Suite 400",
      "city": "Washington",
      "state": "DC",
      "zip": "20001"
    }
  },
  "transaction": {
    "amount": 250,
    "date": "2024-06-30",
    "description": "Digital advertising",
    "aggregateYtd": 1200,
    "twoYearPeriod": 2024,
    "electionType": "P",
    "electionYear": 2024
  },
  "spending": null,
  "financialSummary": null,
  "aggregate": null,
  "enrichment": {
    "metro": "Los Angeles-Long Beach-Anaheim, CA",
    "sector": "Technology",
    "confidence": 0.98,
    "completenessNotes": ["Employer was not provided by the source record"]
  }
}
````

#### 💳 Pricing

This actor uses pay-per-event pricing. You are charged only when the actor saves an accepted result row to the dataset. Empty runs, failed lookups, setup checks, and no-result searches are not described as charged.

The primary event is **Result row** at **$0.0009 per successful user-visible FEC campaign finance result row**. A result row can be a contribution, candidate, committee/PAC, spending, or selected aggregate row.

#### 🔌 Integrations

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

Use this actor with Apify integrations, API clients, webhooks, scheduled runs, and dataset exports. Send results to spreadsheets, BI tools, databases, or your own app after each run.

#### ❓ FAQ

**Are political donations public record?**\
Many federal campaign finance records are public through the FEC. This actor helps retrieve official FEC campaign finance records and keeps source links or identifiers in the output when available.

**Can I use this as a campaign contributions lookup?**\
Yes. Select the contributions scope, then filter by donor or contributor name, employer, occupation, committee, candidate, state, date, amount, or election cycle when relevant.

**Can I find political donations by company?**\
Use the employer filter for contribution records or grouped output by employer. The actor returns source-grounded data, so employer coverage depends on what the source record provides.

**Does it cover candidates and committees, or only individual political contributions?**\
It supports contributions, candidates, committees/PACs, spending, independent expenditures, committee totals, and grouped summaries.

**Do I need an FEC API key?**\
The input form supports normal public/default access and an optional FEC API key. Add your own key if you have one and want authenticated source access for larger runs.

**Is this a replacement for the FEC website or API?**\
It is an Apify workflow for collecting, exporting, scheduling, and integrating FEC data. Use the official FEC site or API directly when you need manual browsing or custom API development.

**Will the actor explain FEC meaning, filing deadlines, Form 1, or Form 2?**\
No. It returns campaign finance data rows. For legal definitions, filing obligations, deadlines, or form instructions, consult official FEC guidance.

### 📝 Changelog

- 0.0.1: Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~fec-campaign-finance-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Other actors

- [Facebook Page Video Downloader ↗](https://apify.com/maximedupre/facebook-page-video-downloader) - Use it for related campaign workflows.
- [Influencer Scraper ↗](https://apify.com/maximedupre/influencer-scraper) - Use it for related campaign workflows.
- [Morningstar Scraper ↗](https://apify.com/maximedupre/morningstar-scraper) - Use it for related finance workflows.
- [Pappers Sirene Scraper ↗](https://apify.com/maximedupre/pappers-sirene-scraper) - Use it for related finance workflows.
- [RedNote Note Detail Scraper ↗](https://apify.com/maximedupre/rednote-note-detail-scraper) - Use it for related campaign workflows.
  **Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `contributionSearchTerms` (type: `array`):

Enter donor names, employer names, occupations, candidate names, committee names, or FEC IDs to search itemized contribution records.

## `candidateSearchTerms` (type: `array`):

Enter candidate names or FEC candidate IDs to collect candidate records and available financial summaries.

## `committeeSearchTerms` (type: `array`):

Enter committee names, PAC names, or FEC committee IDs to collect committee records.

## `disbursementSearchTerms` (type: `array`):

Enter payee names, recipient names, committee names or IDs, or candidate names or IDs to collect operating disbursement rows.

## `independentExpenditureSearchTerms` (type: `array`):

Enter committee names or IDs, candidate names or IDs, or payee names to collect independent expenditure rows.

## `committeeTotalSearchTerms` (type: `array`):

Enter committee names or FEC committee IDs to collect committee total rows.

## `cycleYears` (type: `array`):

Optional election years or two-year periods, such as 2024 or 2026. Leave empty to use the source default for the selected target.

## `startDate` (type: `string`):

Only return records dated on or after this date when the selected target supports date filtering.

## `endDate` (type: `string`):

Only return records dated on or before this date when the selected target supports date filtering.

## `minAmount` (type: `number`):

Only return financial records with an amount at or above this value when amount filtering is available.

## `maxAmount` (type: `number`):

Only return financial records with an amount at or below this value when amount filtering is available.

## `states` (type: `array`):

Optional two-letter state codes for contributor, candidate, committee, or office filters where supported.

## `party` (type: `string`):

Optional party filter for candidate or committee targets.

## `office` (type: `string`):

Optional office filter for candidate targets.

## `supportOppose` (type: `string`):

Optional filter for independent expenditures that support or oppose a candidate.

## `outputStyle` (type: `string`):

Choose detailed source records or deterministic grouped summaries for analyst-ready totals and counts.

## `groupBy` (type: `array`):

Used only when Output style is Grouped summaries. Choose one or more grouping keys that match the selected target.

## `maxResults` (type: `integer`):

Maximum successful rows to return for this run. Keep the first run small, then raise it when the filters are correct.

## `fecApiKey` (type: `string`):

Optional FEC API key for users who have one. Leave empty for the default public access path.

## Actor input object example

```json
{
  "contributionSearchTerms": [
    "Jane Smith",
    "C00580100"
  ],
  "candidateSearchTerms": [
    "H4NY12015"
  ],
  "committeeSearchTerms": [
    "C00401224"
  ],
  "cycleYears": [
    "2024"
  ],
  "states": [
    "NY",
    "CA"
  ],
  "outputStyle": "detailed_records",
  "groupBy": [
    "employer",
    "committee",
    "state"
  ],
  "maxResults": 100
}
```

# Actor output Schema

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

View the default dataset rows.

# 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 = {
    "contributionSearchTerms": [
        "Jane Smith",
        "C00580100"
    ],
    "candidateSearchTerms": [
        "H4NY12015"
    ],
    "committeeSearchTerms": [
        "C00401224"
    ],
    "cycleYears": [
        "2024"
    ],
    "states": [
        "NY",
        "CA"
    ],
    "groupBy": [
        "employer",
        "committee",
        "state"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/fec-campaign-finance-scraper").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 = {
    "contributionSearchTerms": [
        "Jane Smith",
        "C00580100",
    ],
    "candidateSearchTerms": ["H4NY12015"],
    "committeeSearchTerms": ["C00401224"],
    "cycleYears": ["2024"],
    "states": [
        "NY",
        "CA",
    ],
    "groupBy": [
        "employer",
        "committee",
        "state",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/fec-campaign-finance-scraper").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 '{
  "contributionSearchTerms": [
    "Jane Smith",
    "C00580100"
  ],
  "candidateSearchTerms": [
    "H4NY12015"
  ],
  "committeeSearchTerms": [
    "C00401224"
  ],
  "cycleYears": [
    "2024"
  ],
  "states": [
    "NY",
    "CA"
  ],
  "groupBy": [
    "employer",
    "committee",
    "state"
  ]
}' |
apify call maximedupre/fec-campaign-finance-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maximedupre/fec-campaign-finance-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "FEC Campaign Finance Scraper",
        "description": "Search FEC campaign finance data for contributions, candidates, committees/PACs, spending, independent expenditures, and committee totals. Export source-backed records with donor, amount, candidate, committee, employer, recipient, and FEC evidence links.",
        "version": "0.1",
        "x-build-id": "wJ9FgM3wIC4Ug7DsM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~fec-campaign-finance-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-fec-campaign-finance-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/maximedupre~fec-campaign-finance-scraper/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-fec-campaign-finance-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/maximedupre~fec-campaign-finance-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-fec-campaign-finance-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": {
                    "contributionSearchTerms": {
                        "title": "Contributor, employer, or committee search",
                        "type": "array",
                        "description": "Enter donor names, employer names, occupations, candidate names, committee names, or FEC IDs to search itemized contribution records.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "candidateSearchTerms": {
                        "title": "Candidate names or IDs",
                        "type": "array",
                        "description": "Enter candidate names or FEC candidate IDs to collect candidate records and available financial summaries.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "committeeSearchTerms": {
                        "title": "Committee or PAC names or IDs",
                        "type": "array",
                        "description": "Enter committee names, PAC names, or FEC committee IDs to collect committee records.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "disbursementSearchTerms": {
                        "title": "Recipient, committee, or candidate search",
                        "type": "array",
                        "description": "Enter payee names, recipient names, committee names or IDs, or candidate names or IDs to collect operating disbursement rows.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "independentExpenditureSearchTerms": {
                        "title": "Committee, candidate, or payee search",
                        "type": "array",
                        "description": "Enter committee names or IDs, candidate names or IDs, or payee names to collect independent expenditure rows.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "committeeTotalSearchTerms": {
                        "title": "Committee names or IDs",
                        "type": "array",
                        "description": "Enter committee names or FEC committee IDs to collect committee total rows.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cycleYears": {
                        "title": "Election cycles",
                        "type": "array",
                        "description": "Optional election years or two-year periods, such as 2024 or 2026. Leave empty to use the source default for the selected target.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startDate": {
                        "title": "Start date",
                        "type": "string",
                        "description": "Only return records dated on or after this date when the selected target supports date filtering."
                    },
                    "endDate": {
                        "title": "End date",
                        "type": "string",
                        "description": "Only return records dated on or before this date when the selected target supports date filtering."
                    },
                    "minAmount": {
                        "title": "Minimum amount",
                        "type": "number",
                        "description": "Only return financial records with an amount at or above this value when amount filtering is available."
                    },
                    "maxAmount": {
                        "title": "Maximum amount",
                        "type": "number",
                        "description": "Only return financial records with an amount at or below this value when amount filtering is available."
                    },
                    "states": {
                        "title": "States",
                        "type": "array",
                        "description": "Optional two-letter state codes for contributor, candidate, committee, or office filters where supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "party": {
                        "title": "Party",
                        "enum": [
                            "DEM",
                            "REP",
                            "IND",
                            "LIB",
                            "GRE",
                            "OTH"
                        ],
                        "type": "string",
                        "description": "Optional party filter for candidate or committee targets."
                    },
                    "office": {
                        "title": "Office",
                        "enum": [
                            "P",
                            "S",
                            "H"
                        ],
                        "type": "string",
                        "description": "Optional office filter for candidate targets."
                    },
                    "supportOppose": {
                        "title": "Support or oppose",
                        "enum": [
                            "support",
                            "oppose"
                        ],
                        "type": "string",
                        "description": "Optional filter for independent expenditures that support or oppose a candidate."
                    },
                    "outputStyle": {
                        "title": "Output style",
                        "enum": [
                            "detailed_records",
                            "grouped_summaries"
                        ],
                        "type": "string",
                        "description": "Choose detailed source records or deterministic grouped summaries for analyst-ready totals and counts.",
                        "default": "detailed_records"
                    },
                    "groupBy": {
                        "title": "Group summaries by",
                        "type": "array",
                        "description": "Used only when Output style is Grouped summaries. Choose one or more grouping keys that match the selected target.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum successful rows to return for this run. Keep the first run small, then raise it when the filters are correct.",
                        "default": 100
                    },
                    "fecApiKey": {
                        "title": "FEC API key",
                        "type": "string",
                        "description": "Optional FEC API key for users who have one. Leave empty for the default public access path."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
