{
  "openapi": "3.0.1",
  "info": {
    "title": "FEC Campaign Finance Scraper [🏷️ ON SALE 🎉]",
    "description": "Scrape US federal campaign finance data from the OpenFEC API: candidates with total receipts and disbursements, committees with treasurer and contacts, and individual contributions with donor name, employer, occupation, amount and date.",
    "version": "0.1",
    "x-build-id": "FA0gc7jKanwbI1GWb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~fec-campaign-finance-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-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/scrapers_lat~fec-campaign-finance-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-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/scrapers_lat~fec-campaign-finance-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-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": {
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of records to collect. Optional."
          },
          "mode": {
            "title": "Data type",
            "enum": [
              "contributions",
              "candidates",
              "committees"
            ],
            "type": "string",
            "description": "What to scrape from the FEC. 'Individual contributions' returns itemized donor records (name, employer, occupation, amount, date). 'Candidates' returns candidates with total receipts and disbursements. 'Committees' returns committees with treasurer and filing contacts.",
            "default": "contributions"
          },
          "apiKey": {
            "title": "OpenFEC API key",
            "type": "string",
            "description": "Your api.data.gov / OpenFEC API key. Defaults to DEMO_KEY for testing (heavily rate limited). Get a free key at https://api.data.gov/signup/ for higher limits.",
            "default": "DEMO_KEY"
          },
          "search": {
            "title": "Search text",
            "type": "string",
            "description": "Free-text search. For candidates and committees it matches the name. For contributions it matches the contributor name (for example: Lockheed, Smith, university)."
          },
          "twoYearTransactionPeriod": {
            "title": "Two-year transaction period (cycle)",
            "type": "integer",
            "description": "Even-numbered election cycle that the contribution falls in (for example 2024 covers 2023-2024). Recommended for contributions; it scopes the search and keeps it fast."
          },
          "committeeId": {
            "title": "Recipient committee ID",
            "type": "string",
            "description": "FEC committee ID that received the contributions, e.g. C00401224. Find IDs with the Committees data type."
          },
          "contributorState": {
            "title": "Contributor state",
            "type": "string",
            "description": "Two-letter US state of the donor, e.g. CA, TX, NY."
          },
          "contributorEmployer": {
            "title": "Contributor employer",
            "type": "string",
            "description": "Filter contributions by the donor's reported employer."
          },
          "contributorOccupation": {
            "title": "Contributor occupation",
            "type": "string",
            "description": "Filter contributions by the donor's reported occupation."
          },
          "minDate": {
            "title": "Date from",
            "type": "string",
            "description": "Earliest contribution receipt date (YYYY-MM-DD)."
          },
          "maxDate": {
            "title": "Date to",
            "type": "string",
            "description": "Latest contribution receipt date (YYYY-MM-DD)."
          },
          "minAmount": {
            "title": "Minimum amount",
            "type": "integer",
            "description": "Only contributions of at least this many US dollars."
          },
          "maxAmount": {
            "title": "Maximum amount",
            "type": "integer",
            "description": "Only contributions of at most this many US dollars."
          },
          "office": {
            "title": "Office",
            "enum": [
              "",
              "H",
              "S",
              "P"
            ],
            "type": "string",
            "description": "Office the candidate is running for.",
            "default": ""
          },
          "candidateState": {
            "title": "Candidate state",
            "type": "string",
            "description": "Two-letter US state the candidate is running in, e.g. CA."
          },
          "party": {
            "title": "Party",
            "type": "string",
            "description": "Three-letter party code, e.g. DEM, REP, IND, LIB, GRE."
          },
          "electionYear": {
            "title": "Election year",
            "type": "integer",
            "description": "Year the candidate is or was on the ballot, e.g. 2024."
          },
          "committeeType": {
            "title": "Committee type",
            "enum": [
              "",
              "P",
              "H",
              "S",
              "N",
              "Q",
              "O",
              "I",
              "C",
              "D",
              "E",
              "U",
              "V",
              "W",
              "X",
              "Y",
              "Z"
            ],
            "type": "string",
            "description": "Filter committees by type.",
            "default": ""
          },
          "committeeState": {
            "title": "Committee state",
            "type": "string",
            "description": "Two-letter US state of the committee, e.g. CA."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}