---
type: "firecrawl-provider"
description: "Elections Alberta (elections.ab.ca): official election results by electoral division and by voting location for general elections and by-elections, the list of electoral events, registered candidates with their financial filings, registered parties and their disclosure records, the contributor search, and referendum third-party advertisers. Read from the officialresults and efpublic ColdFusion pages, anonymously."
use_when: "Elections Alberta (elections.ab.ca): official election results by electoral division and by voting location for general elections and by-elections, the list of electoral events, registered candidates with their financial filings, registered parties and their disclosure records, the contributor search, and referendum third-party advertisers. Read from the officialresults and efpublic ColdFusion pages, anonymously."
categories: "Public records"
capabilities: 9
credits_per_call: 5
---
# Elections Alberta results and political finance on Firecrawl Alexandria

Elections Alberta (elections.ab.ca): official election results by electoral division and by voting location for general elections and by-elections, the list of electoral events, registered candidates with their financial filings, registered parties and their disclosure records, the contributor search, and referendum third-party advertisers. Read from the officialresults and efpublic ColdFusion pages, anonymously.

- Categories: Public records
- Category index: [Public records category](https://firecrawl.dev/alexandria/agents/categories/public-records)
- Provider key: `elections-ab-ca`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/elections-ab-ca)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/openapi.json)

## Capabilities

- [Division results](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/division_results): Poll-by-poll official results for one electoral division of an election: every voting location with type, electors, votes per candidate, valid/spoiled/declined/rejected ballots and turnout, plus the division totals and subtotals. The poll page is discovered from the event's summary page, so bespoke per-event pages (orResultsED2026BE.cfm) work the same as orResultsED.cfm.
- [Election results](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/election_results): Official results of a general election or by-election by electoral division: votes per party in every division, voting locations, turnout, province-wide totals with valid-vote share and seats won, the party code legend, amendment/recount notes and the Excel export link. Read from orResultsPGE.cfm?EventId=.
- [List events](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/list_events): Every electoral event with published official results: the EventPick list of officialresults.elections.ab.ca (general elections and by-elections since 2008, the 2021 senate election and referendum questions, senate nominee elections), with the event id, kind, voting day and results page URL.
- [List parties](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/list_parties): Political parties in the Elections Alberta financial disclosure register (registered and formerly registered), with their PID and detail page URL.
- [List third party advertisers](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/list_third_party_advertisers): Registered referendum third-party advertisers (TPATYPE=R) with registration date, advertising-period contributions to date, the financial account identifiers and the weekly contributions report URL; includes the list total.
- [Party detail](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/party_detail): One party's disclosure record: for every financial period (annual, quarterly, campaign) the registered officers (leader, president, CFO), the filing due date and the published reports (financial statements, contribution reports, Excel exports) with their EVENTID/ACCOUNTID/DOCSTATE identifiers and document URLs.
- [Search candidates](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/search_candidates): Registered candidates of an electoral event (2022 and later) filtered by electoral division, party and/or name: candidate, CFO, division, party, registration date, filing due date and the published financial statement / contributions report links with ACCOUNTID and CANDIDATEID. The event's search page is discovered from the candidates index (efFC.cfm) and queried with its POST form.
- [Search contributors](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/search_contributors): Political contributions by contributor name across annual, campaign and senatorial financial periods (efpublic contributor search): contributor, location, recipient type, receipt count and aggregate amount per period, optionally narrowed by year, party and electoral division. The site returns at most 200 rows.
- [Third party advertiser detail](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/third_party_advertiser_detail): One referendum third-party advertiser's registration record: contacts (primary contact, CFO) and the published reports per event with EVENTID/ACCOUNTID and PDF/Excel URLs.

## 1. Choose this provider when

Elections Alberta (elections.ab.ca): official election results by electoral division and by voting location for general elections and by-elections, the list of electoral events, registered candidates with their financial filings, registered parties and their disclosure records, the contributor search, and referendum third-party advertisers. Read from the officialresults and efpublic ColdFusion pages, anonymously.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "elections-ab-ca",
  "capability": "elections/division_results",
  "options": {
    "ed": "01",
    "event_id": "101"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `ed` (string, required): Electoral division number 01..87 (two digits; `1` is accepted and padded). Pattern: ^[0-9]{1,2}$. Example: `1`
- `event_id` (string, required): Elections Alberta numeric EventId as used on officialresults.elections.ab.ca (101 = Provincial General Election May 29, 2023; 130 = By-Election September 14, 2026). `list_events` returns them. Referendum (68RQ1) and senate (67S) ids use other page templates and are rejected. Pattern: ^[0-9]{1,6}$. Example: `list_events`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "elections-ab-ca",
    capability: "elections/division_results",
    options: {
      ed: "01",
      event_id: "101",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "elections-ab-ca",
  "capability": "elections/division_results",
  "options": {
    "ed": "01",
    "event_id": "101"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "elections-ab-ca",
    "capability": "elections/division_results",
    "options": {
      "ed": "01",
      "event_id": "101"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'elections-ab-ca/elections/division_results' \
  --options '{"ed":"01","event_id":"101"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "elections-ab-ca",
  "capability": "elections/division_results",
  "options": {
    "ed": "01",
    "event_id": "101"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "elections-ab-ca",
  "capability": "elections/division_results",
  "options": {
    "ed": "01",
    "event_id": "101"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "candidates": [
    {
      "name": "DIANA BATTEN",
      "party": "NDP"
    },
    {
      "name": "PAUL BECHTHOLD",
      "party": "GPA"
    },
    {
      "name": "LARRY R. HEATHER",
      "party": "IND"
    },
    {
      "name": "LINDA MCCLELLAND",
      "party": "SM"
    },
    {
      "name": "DONNA KATHLEEN SCOTT",
      "party": "WLC"
    },
    {
      "name": "TYLER SHANDRO",
      "party": "UCP"
    }
  ],
  "ed": "01",
  "ed_name": "CALGARY-ACADIA",
  "event_date": "2023-05-29",
  "event_id": "101",
  "event_name": "Provincial General Election May 29, 2023",
  "excel_url": "https://officialresults.elections.ab.ca/orResultsED.cfm?MODE=exED&ED=01&EventId=101",
  "kind": "general_election",
  "notes": [
    "Calgary-Acadia Official Results (Amended) Judicial Recount dated June 23, 2023"
  ],
  "observed_at_ms": 1791921903566,
  "poll_count": 18,
  "polls": [
    {
      "declined_ballots": 0,
      "electors": 3652,
      "location": "Acadia School",
      "poll_no": "001",
      "rejected_ballots": 7,
      "spoiled_ballots": 2,
      "turnout_pct": 35.1,
      "type": "Election Day",
      "valid_ballots": 1276,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 578
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 27
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 12
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 642
        }
      ],
      "voting_areas": [
        "026",
        "027",
        "028",
        "029",
        "043"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 3060,
      "location": "Haysboro School",
      "poll_no": "002",
      "rejected_ballots": 4,
      "spoiled_ballots": 2,
      "turnout_pct": 34.6,
      "type": "Election Day",
      "valid_ballots": 1054,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 541
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 15
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 482
        }
      ],
      "voting_areas": [
        "035",
        "036",
        "037",
        "038"
      ]
    },
    {
      "declined_ballots": 3,
      "electors": 2597,
      "location": "Le Roi Daniels School",
      "poll_no": "003",
      "rejected_ballots": 5,
      "spoiled_ballots": 0,
      "turnout_pct": 40.9,
      "type": "Election Day",
      "valid_ballots": 1055,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 468
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 28
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 12
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 536
        }
      ],
      "voting_areas": [
        "044",
        "045",
        "046",
        "051"
      ]
    },
    {
      "declined_ballots": 1,
      "electors": 4934,
      "location": "Lord Beaverbrook School",
      "poll_no": "004",
      "rejected_ballots": 5,
      "spoiled_ballots": 3,
      "turnout_pct": 27,
      "type": "Election Day",
      "valid_ballots": 1324,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 624
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 30
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 13
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 11
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 15
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 631
        }
      ],
      "voting_areas": [
        "025",
        "030",
        "031",
        "032",
        "039",
        "040",
        "041",
        "042"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 584,
      "location": "Manchester Neighbour Centre - Mustard Seed",
      "poll_no": "005",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": 30.7,
      "type": "Election Day",
      "valid_ballots": 179,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 106
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 63
        }
      ],
      "voting_areas": [
        "052",
        "053"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2843,
      "location": "R.T. Alderman School",
      "poll_no": "006",
      "rejected_ballots": 3,
      "spoiled_ballots": 0,
      "turnout_pct": 33.3,
      "type": "Election Day",
      "valid_ballots": 944,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 386
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 10
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 11
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 530
        }
      ],
      "voting_areas": [
        "018",
        "019",
        "021",
        "022"
      ]
    },
    {
      "declined_ballots": 1,
      "electors": 4245,
      "location": "Robert Warren School",
      "poll_no": "007",
      "rejected_ballots": 6,
      "spoiled_ballots": 4,
      "turnout_pct": 37.1,
      "type": "Election Day",
      "valid_ballots": 1568,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 790
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 20
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 20
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 725
        }
      ],
      "voting_areas": [
        "004",
        "005",
        "006",
        "007",
        "008",
        "009"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2480,
      "location": "Southwood United Church",
      "poll_no": "008",
      "rejected_ballots": 6,
      "spoiled_ballots": 3,
      "turnout_pct": 33.1,
      "type": "Election Day",
      "valid_ballots": 815,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 418
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 16
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 365
        }
      ],
      "voting_areas": [
        "012",
        "013",
        "014",
        "034"
      ]
    },
    {
      "declined_ballots": 2,
      "electors": 3208,
      "location": "St. Augustine School",
      "poll_no": "009",
      "rejected_ballots": 6,
      "spoiled_ballots": 3,
      "turnout_pct": 32.2,
      "type": "Election Day",
      "valid_ballots": 1026,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 541
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 17
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 10
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 443
        }
      ],
      "voting_areas": [
        "047",
        "048",
        "049",
        "050"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2773,
      "location": "St. Stephen School",
      "poll_no": "010",
      "rejected_ballots": 4,
      "spoiled_ballots": 0,
      "turnout_pct": 33,
      "type": "Election Day",
      "valid_ballots": 912,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 401
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 16
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 477
        }
      ],
      "voting_areas": [
        "010",
        "011",
        "015",
        "033"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2825,
      "location": "Willow Park School",
      "poll_no": "011",
      "rejected_ballots": 2,
      "spoiled_ballots": 1,
      "turnout_pct": 32.4,
      "type": "Election Day",
      "valid_ballots": 913,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 421
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 469
        }
      ],
      "voting_areas": [
        "016",
        "017",
        "020",
        "023",
        "024"
      ]
    },
    {
      "declined_ballots": 1,
      "electors": 1627,
      "location": "Woodgreen Presbyterian Church",
      "poll_no": "012",
      "rejected_ballots": 0,
      "spoiled_ballots": 1,
      "turnout_pct": 37.6,
      "type": "Election Day",
      "valid_ballots": 610,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 301
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 11
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 288
        }
      ],
      "voting_areas": [
        "001",
        "002",
        "003"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Haysboro Community Association, Lutheran Church",
      "poll_no": "016",
      "rejected_ballots": 2,
      "spoiled_ballots": 23,
      "turnout_pct": null,
      "type": "Advance",
      "valid_ballots": 3713,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 1808
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 34
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 23
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 15
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 1827
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 1,
      "electors": 0,
      "location": "Southcentre Mall",
      "poll_no": "017",
      "rejected_ballots": 4,
      "spoiled_ballots": 12,
      "turnout_pct": null,
      "type": "Advance",
      "valid_ballots": 4511,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 2172
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 29
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 18
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 22
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 2261
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 1,
      "electors": 0,
      "location": "Vote Anywhere (Out of ED)",
      "poll_no": "018",
      "rejected_ballots": 0,
      "spoiled_ballots": 9,
      "turnout_pct": null,
      "type": "Advance",
      "valid_ballots": 1385,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 788
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 17
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 566
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Southwood CC, Trico LivingWell, Calgary Dream Centre",
      "poll_no": "013",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "type": "Mobile",
      "valid_ballots": 134,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 46
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 76
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Returning Office",
      "poll_no": "014",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "type": "Special Ballot",
      "valid_ballots": 819,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 378
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 428
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Centralized",
      "poll_no": "015",
      "rejected_ballots": 102,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "type": "Special Ballot",
      "valid_ballots": 324,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 192
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 128
        }
      ],
      "voting_areas": []
    }
  ],
  "source_url": "https://officialresults.elections.ab.ca/orResultsED.cfm?ED=01&EventId=101",
  "totals": [
    {
      "declined_ballots": 10,
      "electors": 34828,
      "label": "Total (All Voting Locations)",
      "rejected_ballots": 156,
      "spoiled_ballots": 63,
      "turnout_pct": 65.3,
      "valid_ballots": 22562,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": 48.6,
          "votes": 10959
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": 1.3,
          "votes": 293
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": 0.7,
          "votes": 162
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": 0.4,
          "votes": 92
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": 0.5,
          "votes": 119
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": 48.5,
          "votes": 10937
        }
      ]
    },
    {
      "declined_ballots": 8,
      "electors": null,
      "label": "Election Day Subtotal",
      "rejected_ballots": 48,
      "spoiled_ballots": 19,
      "turnout_pct": null,
      "valid_ballots": 11676,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 5575
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 204
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 106
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 68
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 72
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 5651
        }
      ]
    },
    {
      "declined_ballots": 2,
      "electors": null,
      "label": "Advance Subtotal",
      "rejected_ballots": 6,
      "spoiled_ballots": 44,
      "turnout_pct": null,
      "valid_ballots": 9609,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 4768
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 80
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 45
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 20
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 42
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 4654
        }
      ]
    },
    {
      "declined_ballots": 0,
      "electors": null,
      "label": "Mobile Subtotal",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "valid_ballots": 134,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 46
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 76
        }
      ]
    },
    {
      "declined_ballots": 0,
      "electors": null,
      "label": "Special Ballot Subtotal",
      "rejected_ballots": 102,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "valid_ballots": 1143,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 570
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 556
        }
      ]
    }
  ]
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Division results

- Capability: `elections/division_results`
- Description: Poll-by-poll official results for one electoral division of an election: every voting location with type, electors, votes per candidate, valid/spoiled/declined/rejected ballots and turnout, plus the division totals and subtotals. The poll page is discovered from the event's summary page, so bespoke per-event pages (orResultsED2026BE.cfm) work the same as orResultsED.cfm.
- Instructions: You know the EventId and the electoral division number (from `election_results`) and need results at voting-location level.
- Cost: 5 credits per call
- Capability file: [Division results](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/division_results)

Accepted options:
- `ed` (string, required): Electoral division number 01..87 (two digits; `1` is accepted and padded). Pattern: ^[0-9]{1,2}$. Example: `1`
- `event_id` (string, required): Elections Alberta numeric EventId as used on officialresults.elections.ab.ca (101 = Provincial General Election May 29, 2023; 130 = By-Election September 14, 2026). `list_events` returns them. Referendum (68RQ1) and senate (67S) ids use other page templates and are rejected. Pattern: ^[0-9]{1,6}$. Example: `list_events`

Response schema example:
```json
{
  "candidates": [
    {
      "name": "DIANA BATTEN",
      "party": "NDP"
    },
    {
      "name": "PAUL BECHTHOLD",
      "party": "GPA"
    },
    {
      "name": "LARRY R. HEATHER",
      "party": "IND"
    },
    {
      "name": "LINDA MCCLELLAND",
      "party": "SM"
    },
    {
      "name": "DONNA KATHLEEN SCOTT",
      "party": "WLC"
    },
    {
      "name": "TYLER SHANDRO",
      "party": "UCP"
    }
  ],
  "ed": "01",
  "ed_name": "CALGARY-ACADIA",
  "event_date": "2023-05-29",
  "event_id": "101",
  "event_name": "Provincial General Election May 29, 2023",
  "excel_url": "https://officialresults.elections.ab.ca/orResultsED.cfm?MODE=exED&ED=01&EventId=101",
  "kind": "general_election",
  "notes": [
    "Calgary-Acadia Official Results (Amended) Judicial Recount dated June 23, 2023"
  ],
  "observed_at_ms": 1791921903566,
  "poll_count": 18,
  "polls": [
    {
      "declined_ballots": 0,
      "electors": 3652,
      "location": "Acadia School",
      "poll_no": "001",
      "rejected_ballots": 7,
      "spoiled_ballots": 2,
      "turnout_pct": 35.1,
      "type": "Election Day",
      "valid_ballots": 1276,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 578
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 27
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 12
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 642
        }
      ],
      "voting_areas": [
        "026",
        "027",
        "028",
        "029",
        "043"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 3060,
      "location": "Haysboro School",
      "poll_no": "002",
      "rejected_ballots": 4,
      "spoiled_ballots": 2,
      "turnout_pct": 34.6,
      "type": "Election Day",
      "valid_ballots": 1054,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 541
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 15
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 482
        }
      ],
      "voting_areas": [
        "035",
        "036",
        "037",
        "038"
      ]
    },
    {
      "declined_ballots": 3,
      "electors": 2597,
      "location": "Le Roi Daniels School",
      "poll_no": "003",
      "rejected_ballots": 5,
      "spoiled_ballots": 0,
      "turnout_pct": 40.9,
      "type": "Election Day",
      "valid_ballots": 1055,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 468
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 28
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 12
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 536
        }
      ],
      "voting_areas": [
        "044",
        "045",
        "046",
        "051"
      ]
    },
    {
      "declined_ballots": 1,
      "electors": 4934,
      "location": "Lord Beaverbrook School",
      "poll_no": "004",
      "rejected_ballots": 5,
      "spoiled_ballots": 3,
      "turnout_pct": 27,
      "type": "Election Day",
      "valid_ballots": 1324,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 624
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 30
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 13
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 11
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 15
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 631
        }
      ],
      "voting_areas": [
        "025",
        "030",
        "031",
        "032",
        "039",
        "040",
        "041",
        "042"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 584,
      "location": "Manchester Neighbour Centre - Mustard Seed",
      "poll_no": "005",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": 30.7,
      "type": "Election Day",
      "valid_ballots": 179,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 106
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 63
        }
      ],
      "voting_areas": [
        "052",
        "053"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2843,
      "location": "R.T. Alderman School",
      "poll_no": "006",
      "rejected_ballots": 3,
      "spoiled_ballots": 0,
      "turnout_pct": 33.3,
      "type": "Election Day",
      "valid_ballots": 944,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 386
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 10
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 11
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 530
        }
      ],
      "voting_areas": [
        "018",
        "019",
        "021",
        "022"
      ]
    },
    {
      "declined_ballots": 1,
      "electors": 4245,
      "location": "Robert Warren School",
      "poll_no": "007",
      "rejected_ballots": 6,
      "spoiled_ballots": 4,
      "turnout_pct": 37.1,
      "type": "Election Day",
      "valid_ballots": 1568,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 790
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 20
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 20
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 725
        }
      ],
      "voting_areas": [
        "004",
        "005",
        "006",
        "007",
        "008",
        "009"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2480,
      "location": "Southwood United Church",
      "poll_no": "008",
      "rejected_ballots": 6,
      "spoiled_ballots": 3,
      "turnout_pct": 33.1,
      "type": "Election Day",
      "valid_ballots": 815,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 418
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 16
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 365
        }
      ],
      "voting_areas": [
        "012",
        "013",
        "014",
        "034"
      ]
    },
    {
      "declined_ballots": 2,
      "electors": 3208,
      "location": "St. Augustine School",
      "poll_no": "009",
      "rejected_ballots": 6,
      "spoiled_ballots": 3,
      "turnout_pct": 32.2,
      "type": "Election Day",
      "valid_ballots": 1026,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 541
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 17
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 10
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 443
        }
      ],
      "voting_areas": [
        "047",
        "048",
        "049",
        "050"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2773,
      "location": "St. Stephen School",
      "poll_no": "010",
      "rejected_ballots": 4,
      "spoiled_ballots": 0,
      "turnout_pct": 33,
      "type": "Election Day",
      "valid_ballots": 912,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 401
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 16
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 477
        }
      ],
      "voting_areas": [
        "010",
        "011",
        "015",
        "033"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 2825,
      "location": "Willow Park School",
      "poll_no": "011",
      "rejected_ballots": 2,
      "spoiled_ballots": 1,
      "turnout_pct": 32.4,
      "type": "Election Day",
      "valid_ballots": 913,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 421
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 7
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 469
        }
      ],
      "voting_areas": [
        "016",
        "017",
        "020",
        "023",
        "024"
      ]
    },
    {
      "declined_ballots": 1,
      "electors": 1627,
      "location": "Woodgreen Presbyterian Church",
      "poll_no": "012",
      "rejected_ballots": 0,
      "spoiled_ballots": 1,
      "turnout_pct": 37.6,
      "type": "Election Day",
      "valid_ballots": 610,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 301
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 11
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 288
        }
      ],
      "voting_areas": [
        "001",
        "002",
        "003"
      ]
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Haysboro Community Association, Lutheran Church",
      "poll_no": "016",
      "rejected_ballots": 2,
      "spoiled_ballots": 23,
      "turnout_pct": null,
      "type": "Advance",
      "valid_ballots": 3713,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 1808
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 34
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 23
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 15
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 1827
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 1,
      "electors": 0,
      "location": "Southcentre Mall",
      "poll_no": "017",
      "rejected_ballots": 4,
      "spoiled_ballots": 12,
      "turnout_pct": null,
      "type": "Advance",
      "valid_ballots": 4511,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 2172
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 29
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 18
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 9
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 22
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 2261
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 1,
      "electors": 0,
      "location": "Vote Anywhere (Out of ED)",
      "poll_no": "018",
      "rejected_ballots": 0,
      "spoiled_ballots": 9,
      "turnout_pct": null,
      "type": "Advance",
      "valid_ballots": 1385,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 788
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 17
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 566
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Southwood CC, Trico LivingWell, Calgary Dream Centre",
      "poll_no": "013",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "type": "Mobile",
      "valid_ballots": 134,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 46
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 76
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Returning Office",
      "poll_no": "014",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "type": "Special Ballot",
      "valid_ballots": 819,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 378
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 428
        }
      ],
      "voting_areas": []
    },
    {
      "declined_ballots": 0,
      "electors": 0,
      "location": "Centralized",
      "poll_no": "015",
      "rejected_ballots": 102,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "type": "Special Ballot",
      "valid_ballots": 324,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 192
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 0
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 128
        }
      ],
      "voting_areas": []
    }
  ],
  "source_url": "https://officialresults.elections.ab.ca/orResultsED.cfm?ED=01&EventId=101",
  "totals": [
    {
      "declined_ballots": 10,
      "electors": 34828,
      "label": "Total (All Voting Locations)",
      "rejected_ballots": 156,
      "spoiled_ballots": 63,
      "turnout_pct": 65.3,
      "valid_ballots": 22562,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": 48.6,
          "votes": 10959
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": 1.3,
          "votes": 293
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": 0.7,
          "votes": 162
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": 0.4,
          "votes": 92
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": 0.5,
          "votes": 119
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": 48.5,
          "votes": 10937
        }
      ]
    },
    {
      "declined_ballots": 8,
      "electors": null,
      "label": "Election Day Subtotal",
      "rejected_ballots": 48,
      "spoiled_ballots": 19,
      "turnout_pct": null,
      "valid_ballots": 11676,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 5575
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 204
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 106
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 68
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 72
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 5651
        }
      ]
    },
    {
      "declined_ballots": 2,
      "electors": null,
      "label": "Advance Subtotal",
      "rejected_ballots": 6,
      "spoiled_ballots": 44,
      "turnout_pct": null,
      "valid_ballots": 9609,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 4768
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 80
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 45
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 20
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 42
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 4654
        }
      ]
    },
    {
      "declined_ballots": 0,
      "electors": null,
      "label": "Mobile Subtotal",
      "rejected_ballots": 0,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "valid_ballots": 134,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 46
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 6
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 4
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 76
        }
      ]
    },
    {
      "declined_ballots": 0,
      "electors": null,
      "label": "Special Ballot Subtotal",
      "rejected_ballots": 102,
      "spoiled_ballots": 0,
      "turnout_pct": null,
      "valid_ballots": 1143,
      "votes": [
        {
          "candidate": "DIANA BATTEN",
          "party": "NDP",
          "pct": null,
          "votes": 570
        },
        {
          "candidate": "PAUL BECHTHOLD",
          "party": "GPA",
          "pct": null,
          "votes": 8
        },
        {
          "candidate": "LARRY R. HEATHER",
          "party": "IND",
          "pct": null,
          "votes": 5
        },
        {
          "candidate": "LINDA MCCLELLAND",
          "party": "SM",
          "pct": null,
          "votes": 3
        },
        {
          "candidate": "DONNA KATHLEEN SCOTT",
          "party": "WLC",
          "pct": null,
          "votes": 1
        },
        {
          "candidate": "TYLER SHANDRO",
          "party": "UCP",
          "pct": null,
          "votes": 556
        }
      ]
    }
  ]
}
```

### Election results

- Capability: `elections/election_results`
- Description: Official results of a general election or by-election by electoral division: votes per party in every division, voting locations, turnout, province-wide totals with valid-vote share and seats won, the party code legend, amendment/recount notes and the Excel export link. Read from orResultsPGE.cfm?EventId=.
- Instructions: You have a numeric EventId (from `list_events`) and want the division-level official count. Use `division_results` for the poll-by-poll detail of one division.
- Cost: 5 credits per call
- Capability file: [Election results](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/election_results)

Accepted options:
- `event_id` (string, required): Elections Alberta numeric EventId as used on officialresults.elections.ab.ca (101 = Provincial General Election May 29, 2023; 130 = By-Election September 14, 2026). `list_events` returns them. Referendum (68RQ1) and senate (67S) ids use other page templates and are rejected. Pattern: ^[0-9]{1,6}$. Example: `list_events`

Response schema example:
```json
{
  "division_count": 1,
  "divisions": [
    {
      "ed": "23",
      "name": "CALGARY-SHAW",
      "results_url": "https://officialresults.elections.ab.ca/orResultsED2026BE.cfm?EventId=130",
      "turnout_pct": 35.9,
      "votes": [
        {
          "party": "LIB",
          "votes": 602
        },
        {
          "party": "NDP",
          "votes": 7464
        },
        {
          "party": "TORY",
          "votes": 977
        },
        {
          "party": "UCP",
          "votes": 6873
        },
        {
          "party": "IND",
          "votes": 82
        }
      ],
      "voting_locations": 71
    }
  ],
  "event_date": "2026-09-14",
  "event_id": "130",
  "event_name": "By-Election September 14, 2026",
  "excel_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?MODE=exProv&EventId=130",
  "kind": "by_election",
  "notes": [],
  "observed_at_ms": 1791921892073,
  "parties": [
    {
      "code": "IND",
      "name": "INDEPENDENT"
    },
    {
      "code": "LIB",
      "name": "ALBERTA LIBERAL PARTY"
    },
    {
      "code": "NDP",
      "name": "ALBERTA NDP"
    },
    {
      "code": "TORY",
      "name": "PROGRESSIVE TORY PARTY OF ALBERTA"
    },
    {
      "code": "UCP",
      "name": "UNITED CONSERVATIVE PARTY"
    }
  ],
  "source_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=130",
  "totals": {
    "turnout_pct": 35.9,
    "votes_by_party": [
      {
        "party": "LIB",
        "pct": 3.8,
        "seats": 0,
        "votes": 602
      },
      {
        "party": "NDP",
        "pct": 46.7,
        "seats": 1,
        "votes": 7464
      },
      {
        "party": "TORY",
        "pct": 6.1,
        "seats": 0,
        "votes": 977
      },
      {
        "party": "UCP",
        "pct": 43,
        "seats": 0,
        "votes": 6873
      },
      {
        "party": "IND",
        "pct": 0.5,
        "seats": 0,
        "votes": 82
      }
    ],
    "voting_locations": 71
  }
}
```

### List events

- Capability: `elections/list_events`
- Description: Every electoral event with published official results: the EventPick list of officialresults.elections.ab.ca (general elections and by-elections since 2008, the 2021 senate election and referendum questions, senate nominee elections), with the event id, kind, voting day and results page URL.
- Instructions: Start here to find the EventId for `election_results`, `division_results` and `search_candidates`.
- Cost: 5 credits per call
- Capability file: [List events](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/list_events)

Accepted options:

Response schema example:
```json
{
  "count": 21,
  "events": [
    {
      "date": "2026-09-14",
      "event_id": "130",
      "kind": "by_election",
      "name": "By-Election September 14, 2026",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=130"
    },
    {
      "date": "2025-06-23",
      "event_id": "114",
      "kind": "by_election",
      "name": "By-Election June 23, 2025",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=114"
    },
    {
      "date": "2024-12-18",
      "event_id": "109",
      "kind": "by_election",
      "name": "By-Election December 18, 2024",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=109"
    },
    {
      "date": "2023-05-29",
      "event_id": "101",
      "kind": "general_election",
      "name": "Provincial General Election May 29, 2023",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=101"
    },
    {
      "date": "2022-11-08",
      "event_id": "95",
      "kind": "by_election",
      "name": "By-Election November 8, 2022",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=95"
    },
    {
      "date": "2022-03-15",
      "event_id": "75",
      "kind": "by_election",
      "name": "By-Election March 15, 2022",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=75"
    },
    {
      "date": "2019-04-16",
      "event_id": "60",
      "kind": "general_election",
      "name": "Provincial General Election April 16, 2019",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=60"
    },
    {
      "date": "2018-07-12",
      "event_id": "45",
      "kind": "by_election",
      "name": "By-Election July 12, 2018",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=45"
    },
    {
      "date": "2017-12-14",
      "event_id": "40",
      "kind": "by_election",
      "name": "By-Election December 14, 2017",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=40"
    },
    {
      "date": "2016-03-22",
      "event_id": "33",
      "kind": "by_election",
      "name": "By-Election March 22, 2016",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=33"
    },
    {
      "date": "2015-09-03",
      "event_id": "32",
      "kind": "by_election",
      "name": "By-Election September 3, 2015",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=32"
    },
    {
      "date": "2015-05-05",
      "event_id": "31",
      "kind": "general_election",
      "name": "Provincial General Election May 5, 2015",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=31"
    },
    {
      "date": "2014-10-27",
      "event_id": "28",
      "kind": "by_election",
      "name": "By-Election October 27, 2014",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=28"
    },
    {
      "date": "2012-04-23",
      "event_id": "21",
      "kind": "general_election",
      "name": "Provincial General Election April 23, 2012",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=21"
    },
    {
      "date": "2009-09-14",
      "event_id": "14",
      "kind": "by_election",
      "name": "By-Election September 14, 2009",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=14"
    },
    {
      "date": "2008-03-03",
      "event_id": "12",
      "kind": "general_election",
      "name": "Provincial General Election March 3, 2008",
      "results_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=12"
    },
    {
      "date": "2021-10-18",
      "event_id": "67S",
      "kind": "senate_election",
      "name": "Alberta Senate Election - October 18, 2021",
      "results_url": null
    },
    {
      "date": "2021-10-18",
      "event_id": "68RQ1",
      "kind": "referendum",
      "name": "Provincial Referendum - Equalization - October 18, 2021",
      "results_url": "https://officialresults.elections.ab.ca/orResultsReferendum2021.cfm?EventId=68RQ1&QUESTIONNO=1"
    },
    {
      "date": "2021-10-18",
      "event_id": "68RQ2",
      "kind": "referendum",
      "name": "Provincial Referendum - Daylight Saving Time - October 18, 2021",
      "results_url": "https://officialresults.elections.ab.ca/orResultsReferendum2021.cfm?EventId=68RQ2&QUESTIONNO=2"
    },
    {
      "date": "2012-04-23",
      "event_id": "21S",
      "kind": "senate_election",
      "name": "Provincial Senate Nominee Election - April 23, 2012",
      "results_url": null
    },
    {
      "date": "2004-11-22",
      "event_id": "4S",
      "kind": "senate_election",
      "name": "Provincial Senate Nominee Election - November 22, 2004",
      "results_url": null
    }
  ],
  "observed_at_ms": 1791921881065,
  "source_url": "https://officialresults.elections.ab.ca/orResultsPGE.cfm?EventId=101"
}
```

### List parties

- Capability: `elections/list_parties`
- Description: Political parties in the Elections Alberta financial disclosure register (registered and formerly registered), with their PID and detail page URL.
- Instructions: Find the party id for `party_detail` or for the `party_id` filters of `search_candidates` and `search_contributors`.
- Cost: 5 credits per call
- Capability file: [List parties](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/list_parties)

Accepted options:

Response schema example:
```json
{
  "count": 20,
  "observed_at_ms": 1791921915863,
  "parties": [
    {
      "name": "Advantage Party of Alberta",
      "party_id": 17,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_17&PID=17"
    },
    {
      "name": "Alberta Greens",
      "party_id": 2,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_2&PID=2"
    },
    {
      "name": "Alberta Liberal Party",
      "party_id": 6,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_6&PID=6"
    },
    {
      "name": "Alberta New Democratic Party",
      "party_id": 7,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_7&PID=7"
    },
    {
      "name": "Alberta Reform Party",
      "party_id": 9,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_9&PID=9"
    },
    {
      "name": "Communist Party-Alberta",
      "party_id": 4,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_4&PID=4"
    },
    {
      "name": "Green Party of Alberta",
      "party_id": 14,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_14&PID=14"
    },
    {
      "name": "Natural Law Party",
      "party_id": 13,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_13&PID=13"
    },
    {
      "name": "Progressive Conservative Association of Alberta",
      "party_id": 8,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_8&PID=8"
    },
    {
      "name": "Progressive Tory Party of Alberta",
      "party_id": 3,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_3&PID=3"
    },
    {
      "name": "Pro-Life Alberta Political Association",
      "party_id": 10,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_10&PID=10"
    },
    {
      "name": "Reform Party of Alberta",
      "party_id": 15,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_15&PID=15"
    },
    {
      "name": "Republican Party of Alberta",
      "party_id": 19,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_19&PID=19"
    },
    {
      "name": "Solidarity Movement of Alberta",
      "party_id": 21,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_21&PID=21"
    },
    {
      "name": "The Equity Party",
      "party_id": 12,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_12&PID=12"
    },
    {
      "name": "The Independence Party of Alberta",
      "party_id": 18,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_18&PID=18"
    },
    {
      "name": "United Conservative Party of Alberta",
      "party_id": 16,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_16&PID=16"
    },
    {
      "name": "Wildrose Independence Party of Alberta",
      "party_id": 11,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_11&PID=11"
    },
    {
      "name": "Wildrose Loyalty Coalition",
      "party_id": 20,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_20&PID=20"
    },
    {
      "name": "Wildrose Party",
      "party_id": 1,
      "url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_1&PID=1"
    }
  ],
  "source_url": "https://efpublic.elections.ab.ca/efParties.cfm?MID=FP"
}
```

### List third party advertisers

- Capability: `elections/list_third_party_advertisers`
- Description: Registered referendum third-party advertisers (TPATYPE=R) with registration date, advertising-period contributions to date, the financial account identifiers and the weekly contributions report URL; includes the list total.
- Instructions: Who is registered to advertise in the referendum and how much they have raised; the ids feed `third_party_advertiser_detail`.
- Cost: 5 credits per call
- Capability file: [List third party advertisers](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/list_third_party_advertisers)

Accepted options:

Response schema example:
```json
{
  "advertisers": [
    {
      "account_id": 9911,
      "contributions_amount": 581780.34,
      "contributions_text": "$581,780.34",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=143&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Let Alberta Decide",
      "registered_on": "2026-06-17",
      "registered_text": "Registered Jun 17, 2026",
      "tpa_id": 143,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=143&ACCOUNTID=9911"
    },
    {
      "account_id": 9900,
      "contributions_amount": 322509.68,
      "contributions_text": "$322,509.68",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=132&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta's Voice",
      "registered_on": "2026-05-25",
      "registered_text": "Registered May 25, 2026",
      "tpa_id": 132,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=132&ACCOUNTID=9900"
    },
    {
      "account_id": 9907,
      "contributions_amount": 142991.29,
      "contributions_text": "$142,991.29",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=139&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Vote to Stay",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 139,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=139&ACCOUNTID=9907"
    },
    {
      "account_id": 9902,
      "contributions_amount": 132945.3,
      "contributions_text": "$132,945.30",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=134&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Pathway to Independence",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 134,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=134&ACCOUNTID=9902"
    },
    {
      "account_id": 9913,
      "contributions_amount": 104795,
      "contributions_text": "$104,795.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=145&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Forever-Canadian Citizens Initiative Society",
      "registered_on": "2026-06-08",
      "registered_text": "Registered Jun 8, 2026",
      "tpa_id": 145,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=145&ACCOUNTID=9913"
    },
    {
      "account_id": 9897,
      "contributions_amount": 70493.44,
      "contributions_text": "$70,493.44",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=131&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Advantage Immigrant Support Society (Our Alberta Advantage)",
      "registered_on": "2026-05-04",
      "registered_text": "Registered May 4, 2026",
      "tpa_id": 131,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=131&ACCOUNTID=9897"
    },
    {
      "account_id": 9903,
      "contributions_amount": 69476,
      "contributions_text": "$69,476.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=135&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Together - \"No!\" (Public Interest Alberta)",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 135,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=135&ACCOUNTID=9903"
    },
    {
      "account_id": 9908,
      "contributions_amount": 69227.81,
      "contributions_text": "$69,227.81",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=140&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Stay Free Alberta",
      "registered_on": "2026-06-05",
      "registered_text": "Registered Jun 5, 2026",
      "tpa_id": 140,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=140&ACCOUNTID=9908"
    },
    {
      "account_id": 9901,
      "contributions_amount": 66715,
      "contributions_text": "$66,715.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=133&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Land Consortium Inc.",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 133,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=133&ACCOUNTID=9901"
    },
    {
      "account_id": 9904,
      "contributions_amount": 46688.45,
      "contributions_text": "$46,688.45",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=136&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "The Lavigne Show",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 136,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=136&ACCOUNTID=9904"
    },
    {
      "account_id": 9909,
      "contributions_amount": 39277.95,
      "contributions_text": "$39,277.95",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=141&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta's Choice",
      "registered_on": "2026-06-05",
      "registered_text": "Registered Jun 5, 2026",
      "tpa_id": 141,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=141&ACCOUNTID=9909"
    },
    {
      "account_id": 9959,
      "contributions_amount": 36220,
      "contributions_text": "$36,220.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=155&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "18124361 Canada Foundation o/a Canadian Patriots",
      "registered_on": "2026-09-02",
      "registered_text": "Registered Sep 2, 2026",
      "tpa_id": 155,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=155&ACCOUNTID=9959"
    },
    {
      "account_id": 9906,
      "contributions_amount": 33807.6,
      "contributions_text": "$33,807.60",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=138&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Women for Independence",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 138,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=138&ACCOUNTID=9906"
    },
    {
      "account_id": 9912,
      "contributions_amount": 29305,
      "contributions_text": "$29,305.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=144&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "United Alberta Flags",
      "registered_on": "2026-06-19",
      "registered_text": "Registered Jun 19, 2026",
      "tpa_id": 144,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=144&ACCOUNTID=9912"
    },
    {
      "account_id": 9915,
      "contributions_amount": 28957,
      "contributions_text": "$28,957.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=147&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "North Alberta Strong",
      "registered_on": "2026-06-24",
      "registered_text": "Registered Jun 24, 2026",
      "tpa_id": 147,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=147&ACCOUNTID=9915"
    },
    {
      "account_id": 9918,
      "contributions_amount": 15880,
      "contributions_text": "$15,880.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=150&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Free Alberta From Overeach",
      "registered_on": "2026-06-26",
      "registered_text": "Registered Jun 26, 2026",
      "tpa_id": 150,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=150&ACCOUNTID=9918"
    },
    {
      "account_id": 9916,
      "contributions_amount": 12134.92,
      "contributions_text": "$12,134.92",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=148&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Albertans4Freedom Inc.",
      "registered_on": "2026-06-24",
      "registered_text": "Registered Jun 24, 2026",
      "tpa_id": 148,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=148&ACCOUNTID=9916"
    },
    {
      "account_id": 9914,
      "contributions_amount": 9429.16,
      "contributions_text": "$9,429.16",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=146&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Forward",
      "registered_on": "2026-06-22",
      "registered_text": "Registered Jun 22, 2026",
      "tpa_id": 146,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=146&ACCOUNTID=9914"
    },
    {
      "account_id": 9922,
      "contributions_amount": 5731.18,
      "contributions_text": "$5,731.18",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=153&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Lawyers for Judicial Independence",
      "registered_on": "2026-07-17",
      "registered_text": "Registered Jul 17, 2026",
      "tpa_id": 153,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=153&ACCOUNTID=9922"
    },
    {
      "account_id": 9964,
      "contributions_amount": 5500,
      "contributions_text": "$5,500.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=84&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Proud",
      "registered_on": "2026-09-23",
      "registered_text": "Registered Sep 23, 2026",
      "tpa_id": 84,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=84&ACCOUNTID=9964"
    },
    {
      "account_id": 9923,
      "contributions_amount": 5303.59,
      "contributions_text": "$5,303.59",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=154&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Freedom 2027",
      "registered_on": "2026-07-22",
      "registered_text": "Registered Jul 22, 2026",
      "tpa_id": 154,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=154&ACCOUNTID=9923"
    },
    {
      "account_id": 9961,
      "contributions_amount": 3994,
      "contributions_text": "$3,994.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=157&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Canada Beyond Division",
      "registered_on": "2026-09-16",
      "registered_text": "Registered Sep 16, 2026",
      "tpa_id": 157,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=157&ACCOUNTID=9961"
    },
    {
      "account_id": 9910,
      "contributions_amount": 3190,
      "contributions_text": "$3,190.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=142&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Radio Show",
      "registered_on": "2026-06-08",
      "registered_text": "Registered Jun 8, 2026",
      "tpa_id": 142,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=142&ACCOUNTID=9910"
    },
    {
      "account_id": 9917,
      "contributions_amount": 1850,
      "contributions_text": "$1,850.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=149&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "United for Canada - UnitedFor.CA",
      "registered_on": "2026-06-26",
      "registered_text": "Registered Jun 26, 2026",
      "tpa_id": 149,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=149&ACCOUNTID=9917"
    },
    {
      "account_id": 9905,
      "contributions_amount": 400,
      "contributions_text": "$400.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=137&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Nation Corporation (DBA Alberta Nation Events)",
      "registered_on": "2026-06-02",
      "registered_text": "Registered Jun 2, 2026",
      "tpa_id": 137,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=137&ACCOUNTID=9905"
    },
    {
      "account_id": 9919,
      "contributions_amount": 0,
      "contributions_text": "$0.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=151&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "NoThanks.Vote",
      "registered_on": "2026-07-02",
      "registered_text": "Registered Jul 2, 2026",
      "tpa_id": 151,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=151&ACCOUNTID=9919"
    },
    {
      "account_id": 9920,
      "contributions_amount": 0,
      "contributions_text": "$0.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=152&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Alberta Liberty",
      "registered_on": "2026-07-02",
      "registered_text": "Registered Jul 2, 2026",
      "tpa_id": 152,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=152&ACCOUNTID=9920"
    },
    {
      "account_id": 9960,
      "contributions_amount": 0,
      "contributions_text": "$0.00",
      "detail_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=156&MID=TPAS_TR&TPAType=R",
      "event_id": 128,
      "name": "Association of Academic Staff University of Alberta (AASUA)",
      "registered_on": "2026-09-09",
      "registered_text": "Registered Sep 9, 2026",
      "tpa_id": 156,
      "weekly_report_url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=156&ACCOUNTID=9960"
    }
  ],
  "contributions_column": "Referendum Advertising Period Contributions to Oct 8, 2026",
  "count": 28,
  "observed_at_ms": 1791921964384,
  "source_url": "https://efpublic.elections.ab.ca/efRTPAs.cfm?MID=TPAS_TR&TPATYPE=R",
  "title": "Third Party Advertisers - Referendum",
  "total_contributions": 1838602.71,
  "tpa_type": "R"
}
```

### Party detail

- Capability: `elections/party_detail`
- Description: One party's disclosure record: for every financial period (annual, quarterly, campaign) the registered officers (leader, president, CFO), the filing due date and the published reports (financial statements, contribution reports, Excel exports) with their EVENTID/ACCOUNTID/DOCSTATE identifiers and document URLs.
- Instructions: You have a party id from `list_parties` and want its filings and officers; pass `year` to get one financial year.
- Cost: 5 credits per call
- Capability file: [Party detail](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/party_detail)

Accepted options:
- `party_id` (string, required): Party id (PID) from `list_parties`, e.g. 16 = United Conservative Party of Alberta. Pattern: ^[0-9]{1,6}$. Example: `list_parties`
- `year` (string): Keep only the financial periods of this year (`2023` = 2023 PGE Campaign, 2023 Annual, 2023 Quarterly). Omit for the whole history (long-lived parties have 25+ periods). Pattern: ^[0-9]{4}$. Example: `2023`

Response schema example:
```json
{
  "filters": {
    "year": "2023"
  },
  "legal_name": "United Conservative Party of Alberta",
  "name": "United Conservative Party",
  "notice": "The Chief Electoral Officer approved a request to merge the Wildrose Party and the Progressive Conservative Association of Alberta with the United Conservative Party. The effective date of the merger is January 1, 2020.",
  "observed_at_ms": 1791921929672,
  "party_id": 16,
  "period_count": 3,
  "period_count_total": 28,
  "periods": [
    {
      "filing_due": null,
      "filing_due_text": null,
      "officers": [
        {
          "name": "Ms. Danielle Smith",
          "role": "Leader"
        },
        {
          "name": "Mr. Rob Smith",
          "role": "President"
        },
        {
          "name": "Mr. Kenneth Engler",
          "role": "Chief Financial Officer"
        }
      ],
      "organization": "United Conservative Party of Alberta",
      "period": "2023 PGE Campaign",
      "reports": [
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5829"
        },
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSPartyCampaignReport",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyCampaign.cfm?DOCSTATE=0&EVENTID=101&PARTYID=16&ACCOUNTID=5829"
        },
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSPartyCampaignXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyCampaignXLS.cfm?DOCSTATE=0&EVENTID=101&PARTYID=16&ACCOUNTID=5829"
        },
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSPartyCampaignReport",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyCampaign.cfm?DOCSTATE=2&EVENTID=101&PARTYID=16&ACCOUNTID=5829"
        },
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSPartyCampaignXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyCampaignXLS.cfm?DOCSTATE=2&EVENTID=101&PARTYID=16&ACCOUNTID=5829"
        },
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": null,
          "docstate_label": null,
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSPartyConsolidatedReportCampaign",
          "title": "Party/Candidate Consolidated Campaign Contributions Report",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyConsolidatedCampaign.cfm?EVENTID=101&PARTYID=16&ACCOUNTID=5829"
        },
        {
          "account_id": 5829,
          "candidate_id": null,
          "docstate": null,
          "docstate_label": null,
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSPartyConsolidatedCampaignXLS",
          "title": "Party/Candidate Consolidated Campaign Contributions Report (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyConsolidatedCampaignXLS.cfm?EVENTID=101&PARTYID=16&ACCOUNTID=5829"
        }
      ]
    },
    {
      "filing_due": null,
      "filing_due_text": null,
      "officers": [
        {
          "name": "Ms. Danielle Smith",
          "role": "Leader"
        },
        {
          "name": "Mr. Rob Smith",
          "role": "President"
        },
        {
          "name": "Mr. Kenneth Engler",
          "role": "Chief Financial Officer"
        }
      ],
      "organization": "United Conservative Party of Alberta",
      "period": "2023 Annual",
      "reports": [
        {
          "account_id": 6064,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 100,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=100&ACCOUNTID=6064"
        },
        {
          "account_id": 6064,
          "candidate_id": null,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 100,
          "format": "pdf",
          "handler": "fnShowOFSPartyAnnualReport",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyAnnualReport.cfm?DOCSTATE=0&EVENTID=100&PARTYID=16&ACCOUNTID=6064"
        },
        {
          "account_id": 6064,
          "candidate_id": null,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 100,
          "format": "xlsx",
          "handler": "fnShowOFSPartyAnnualXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyAnnualXLS.cfm?DOCSTATE=0&EVENTID=100&PARTYID=16&ACCOUNTID=6064"
        },
        {
          "account_id": 6064,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 100,
          "format": "pdf",
          "handler": "fnShowOFSPartyAnnualReport",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyAnnualReport.cfm?DOCSTATE=2&EVENTID=100&PARTYID=16&ACCOUNTID=6064"
        },
        {
          "account_id": 6064,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 100,
          "format": "xlsx",
          "handler": "fnShowOFSPartyAnnualXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyAnnualXLS.cfm?DOCSTATE=2&EVENTID=100&PARTYID=16&ACCOUNTID=6064"
        }
      ]
    },
    {
      "filing_due": null,
      "filing_due_text": null,
      "officers": [
        {
          "name": "Ms. Danielle Smith",
          "role": "Leader"
        },
        {
          "name": "Mr. Rob Smith",
          "role": "President"
        },
        {
          "name": "Mr. Kenneth Engler",
          "role": "Chief Financial Officer"
        }
      ],
      "organization": "United Conservative Party of Alberta",
      "period": "2023 Quarterly",
      "reports": [
        {
          "account_id": 6064,
          "candidate_id": null,
          "docstate": null,
          "docstate_label": null,
          "event_id": null,
          "format": "html",
          "handler": "fnShowOFSPartyYTDReportL",
          "title": "YTD Party Contributions Report",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyYTDL.cfm?YEAR=2023&PARTYID=16&ACCOUNTID=6064"
        },
        {
          "account_id": null,
          "candidate_id": null,
          "docstate": null,
          "docstate_label": null,
          "event_id": null,
          "format": "xlsx",
          "handler": "fnShowOFSPartyYTDXLS",
          "title": "YTD Party Contributions Report (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSPartyYTDXLS.cfm?YEAR=2023&PARTYID=16"
        }
      ]
    }
  ],
  "source_url": "https://efpublic.elections.ab.ca/efParty.cfm?MID=FP_16&PID=16"
}
```

### Search candidates

- Capability: `elections/search_candidates`
- Description: Registered candidates of an electoral event (2022 and later) filtered by electoral division, party and/or name: candidate, CFO, division, party, registration date, filing due date and the published financial statement / contributions report links with ACCOUNTID and CANDIDATEID. The event's search page is discovered from the candidates index (efFC.cfm) and queried with its POST form.
- Instructions: You want the candidate list of a general election or by-election, or a candidate's financial account identifiers. At least one of `ed`, `party_id` or `name` is required (the site's rule).
- Cost: 5 credits per call
- Capability file: [Search candidates](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/search_candidates)

Accepted options:
- `ed` (string): Electoral division number 01..87 (two digits; `1` is accepted and padded). Pattern: ^[0-9]{1,2}$. Example: `1`
- `event_id` (string, required): Event id (OFSFID) as listed in the candidates index; for 2022 and later it equals the results EventId (101 = 2023 general election, 130 = Sept 2026 by-election). Events before 2022 are published on legacy pages and rejected. Pattern: ^[0-9]{1,6}$. Example: `<event_id>`
- `name` (string): Candidate name fragment, at least 3 letters. Example: `<name>`
- `party_id` (string): Party id from `list_parties`. Pattern: ^[0-9]{1,6}$. Example: `list_parties`

Response schema example:
```json
{
  "candidates": [
    {
      "account_id": 5839,
      "candidate_id": 16058,
      "cfo": "Miss Benilde Gomes",
      "ed": "01",
      "ed_name": "CALGARY-ACADIA",
      "filing_due": null,
      "filing_due_text": null,
      "name": "DIANA BATTEN",
      "party": "Alberta New Democratic Party",
      "registration_date": "2022-05-30",
      "registration_date_text": "May 30, 2022",
      "reports": [
        {
          "account_id": 5839,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5839"
        },
        {
          "account_id": 5839,
          "candidate_id": 16058,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=5839&CANDIDATEID=16058"
        },
        {
          "account_id": 5839,
          "candidate_id": 16058,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=5839&CANDIDATEID=16058"
        },
        {
          "account_id": 5839,
          "candidate_id": 16058,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5839&CANDIDATEID=16058"
        },
        {
          "account_id": 5839,
          "candidate_id": 16058,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5839&CANDIDATEID=16058"
        }
      ]
    },
    {
      "account_id": 6936,
      "candidate_id": 16342,
      "cfo": "Ms. Heather McDonald Fercho",
      "ed": "01",
      "ed_name": "CALGARY-ACADIA",
      "filing_due": null,
      "filing_due_text": null,
      "name": "DONNA SCOTT",
      "party": "Wildrose Loyalty Coalition",
      "registration_date": "2023-05-01",
      "registration_date_text": "May 1, 2023",
      "reports": [
        {
          "account_id": 6936,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=6936"
        },
        {
          "account_id": 6936,
          "candidate_id": 16342,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=6936&CANDIDATEID=16342"
        },
        {
          "account_id": 6936,
          "candidate_id": 16342,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=6936&CANDIDATEID=16342"
        },
        {
          "account_id": 6936,
          "candidate_id": 16342,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=6936&CANDIDATEID=16342"
        },
        {
          "account_id": 6936,
          "candidate_id": 16342,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=6936&CANDIDATEID=16342"
        }
      ]
    },
    {
      "account_id": 6933,
      "candidate_id": 16339,
      "cfo": "Larry Hurd",
      "ed": "01",
      "ed_name": "CALGARY-ACADIA",
      "filing_due": null,
      "filing_due_text": null,
      "name": "LARRY HEATHER",
      "party": "No Party Affiliation",
      "registration_date": "2023-05-03",
      "registration_date_text": "May 3, 2023",
      "reports": [
        {
          "account_id": 6933,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=6933"
        },
        {
          "account_id": 6933,
          "candidate_id": 16339,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=6933&CANDIDATEID=16339"
        },
        {
          "account_id": 6933,
          "candidate_id": 16339,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=6933&CANDIDATEID=16339"
        },
        {
          "account_id": 6933,
          "candidate_id": 16339,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=6933&CANDIDATEID=16339"
        },
        {
          "account_id": 6933,
          "candidate_id": 16339,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=6933&CANDIDATEID=16339"
        }
      ]
    },
    {
      "account_id": 7040,
      "candidate_id": 16422,
      "cfo": "Jacqueline Lauritsen",
      "ed": "01",
      "ed_name": "CALGARY-ACADIA",
      "filing_due": null,
      "filing_due_text": null,
      "name": "LINDA MCCLELLAND",
      "party": "Solidarity Movement of Alberta",
      "registration_date": "2023-05-05",
      "registration_date_text": "May 5, 2023",
      "reports": [
        {
          "account_id": 7040,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=7040"
        },
        {
          "account_id": 7040,
          "candidate_id": 16422,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=7040&CANDIDATEID=16422"
        },
        {
          "account_id": 7040,
          "candidate_id": 16422,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=7040&CANDIDATEID=16422"
        },
        {
          "account_id": 7040,
          "candidate_id": 16422,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=7040&CANDIDATEID=16422"
        },
        {
          "account_id": 7040,
          "candidate_id": 16422,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=7040&CANDIDATEID=16422"
        }
      ]
    },
    {
      "account_id": 7008,
      "candidate_id": 16405,
      "cfo": "ALICIA DAVIS",
      "ed": "01",
      "ed_name": "CALGARY-ACADIA",
      "filing_due": null,
      "filing_due_text": null,
      "name": "PAUL BECHTHOLD",
      "party": "Green Party of Alberta",
      "registration_date": "2023-05-07",
      "registration_date_text": "May 7, 2023",
      "reports": [
        {
          "account_id": 7008,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=7008"
        },
        {
          "account_id": 7008,
          "candidate_id": 16405,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=7008&CANDIDATEID=16405"
        },
        {
          "account_id": 7008,
          "candidate_id": 16405,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=7008&CANDIDATEID=16405"
        },
        {
          "account_id": 7008,
          "candidate_id": 16405,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=7008&CANDIDATEID=16405"
        },
        {
          "account_id": 7008,
          "candidate_id": 16405,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=7008&CANDIDATEID=16405"
        }
      ]
    },
    {
      "account_id": 5916,
      "candidate_id": 16135,
      "cfo": "Mr. Hartley Harris",
      "ed": "01",
      "ed_name": "CALGARY-ACADIA",
      "filing_due": null,
      "filing_due_text": null,
      "name": "TYLER SHANDRO",
      "party": "United Conservative Party of Alberta",
      "registration_date": "2022-08-06",
      "registration_date_text": "August 6, 2022",
      "reports": [
        {
          "account_id": 5916,
          "candidate_id": null,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnShowOFSFS",
          "title": "Financial Statement Final",
          "url": "https://efpublic.elections.ab.ca/ofsf/OFSGet_FSAS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5916"
        },
        {
          "account_id": 5916,
          "candidate_id": 16135,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report As Submitted",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=5916&CANDIDATEID=16135"
        },
        {
          "account_id": 5916,
          "candidate_id": 16135,
          "docstate": 0,
          "docstate_label": "as_submitted",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report As Submitted (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=0&EVENTID=101&ACCOUNTID=5916&CANDIDATEID=16135"
        },
        {
          "account_id": 5916,
          "candidate_id": 16135,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "pdf",
          "handler": "fnOFSShowContributions",
          "title": "Contributions Report Final",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateReport.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5916&CANDIDATEID=16135"
        },
        {
          "account_id": 5916,
          "candidate_id": 16135,
          "docstate": 2,
          "docstate_label": "final",
          "event_id": 101,
          "format": "xlsx",
          "handler": "fnShowOFSContributionsXLS",
          "title": "Contributions Report Final (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSCandidateXLS.cfm?DOCSTATE=2&EVENTID=101&ACCOUNTID=5916&CANDIDATEID=16135"
        }
      ]
    }
  ],
  "count": 6,
  "event_id": "101",
  "event_label": "2023",
  "filters": {
    "ed": "01",
    "name": null,
    "party_id": null
  },
  "observed_at_ms": 1791921940753,
  "source_url": "https://efpublic.elections.ab.ca/efCandidatesPGE.cfm?MODE=BROWSE&MID=FC_2023&OFSFID=101&EDS=ALL",
  "title": "Candidates - 2023"
}
```

### Search contributors

- Capability: `elections/search_contributors`
- Description: Political contributions by contributor name across annual, campaign and senatorial financial periods (efpublic contributor search): contributor, location, recipient type, receipt count and aggregate amount per period, optionally narrowed by year, party and electoral division. The site returns at most 200 rows.
- Instructions: You want who gave how much to whom; `name` needs at least 3 characters. Narrow broad surnames by `year`, `party_id` or `ed`.
- Cost: 5 credits per call
- Capability file: [Search contributors](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/search_contributors)

Accepted options:
- `ed` (string): Electoral division number 01..87 (two digits; `1` is accepted and padded). Pattern: ^[0-9]{1,2}$. Example: `1`
- `name` (string, required): Contributor name fragment (surname first as the site prints it, e.g. `Kenney`). Example: `<name>`
- `party_id` (string): Party id from `list_parties`. Pattern: ^[0-9]{1,6}$. Example: `list_parties`
- `year` (string): Four-digit financial year, or ALL (default). Pattern: ^([0-9]{4}|ALL)$. Example: `<year>`

Response schema example:
```json
{
  "contributions": [
    {
      "amount": 372,
      "amount_text": "$372.00",
      "contributor_id": 208429,
      "contributor_name": "KENNEY MARK",
      "event": "2024 Annual",
      "event_id": 106,
      "location": "TEES",
      "receipt_count": 4,
      "recipient_type": "Party"
    },
    {
      "amount": 937,
      "amount_text": "$937.00",
      "contributor_id": 218791,
      "contributor_name": "KENNEY DAVE",
      "event": "2023 PGE Campaign",
      "event_id": 101,
      "location": "RIMBEY",
      "receipt_count": 3,
      "recipient_type": "Candidate"
    },
    {
      "amount": 500,
      "amount_text": "$500.00",
      "contributor_id": 126520,
      "contributor_name": "KENNEY JESSICA",
      "event": "2023 PGE Campaign",
      "event_id": 101,
      "location": "FORT MCMURRAY",
      "receipt_count": 1,
      "recipient_type": "Party"
    },
    {
      "amount": 500,
      "amount_text": "$500.00",
      "contributor_id": 214906,
      "contributor_name": "KENNEY TERRY",
      "event": "2023 PGE Campaign",
      "event_id": 101,
      "location": "BLAIRMORE",
      "receipt_count": 1,
      "recipient_type": "Party"
    },
    {
      "amount": 4000,
      "amount_text": "$4,000.00",
      "contributor_id": 133725,
      "contributor_name": "KENNEY DAVE",
      "event": "2022 Annual",
      "event_id": 80,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 4000,
      "amount_text": "$4,000.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2022 Annual",
      "event_id": 80,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 4000,
      "amount_text": "$4,000.00",
      "contributor_id": 133681,
      "contributor_name": "KENNEY LYNNE",
      "event": "2022 Annual",
      "event_id": 80,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 4000,
      "amount_text": "$4,000.00",
      "contributor_id": 133726,
      "contributor_name": "KENNEY SUSAN",
      "event": "2022 Annual",
      "event_id": 80,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 1000,
      "amount_text": "$1,000.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2021 Annual",
      "event_id": 30,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 3243,
      "amount_text": "$3,243.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2021 Annual",
      "event_id": 30,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Party"
    },
    {
      "amount": 650,
      "amount_text": "$650.00",
      "contributor_id": 126520,
      "contributor_name": "KENNEY JESSICA",
      "event": "2021 Annual",
      "event_id": 30,
      "location": "FORT MCMURRAY",
      "receipt_count": 3,
      "recipient_type": "Party"
    },
    {
      "amount": 1000,
      "amount_text": "$1,000.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2020 Annual",
      "event_id": 20,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 3243,
      "amount_text": "$3,243.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2020 Annual",
      "event_id": 20,
      "location": "CALGARY",
      "receipt_count": 2,
      "recipient_type": "Party"
    },
    {
      "amount": 1000,
      "amount_text": "$1,000.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2019 PGE Campaign",
      "event_id": 9,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Candidate"
    },
    {
      "amount": 3000,
      "amount_text": "$3,000.00",
      "contributor_id": 5195,
      "contributor_name": "KENNEY JASON",
      "event": "2019 PGE Campaign",
      "event_id": 9,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Party"
    },
    {
      "amount": 350,
      "amount_text": "$350.00",
      "contributor_id": 19901,
      "contributor_name": "KENNEY RYUN",
      "event": "2019 PGE Campaign",
      "event_id": 9,
      "location": "CALGARY",
      "receipt_count": 2,
      "recipient_type": "Party"
    },
    {
      "amount": 750,
      "amount_text": "$750.00",
      "contributor_id": 5195,
      "contributor_name": "JASON KENNEY",
      "event": "2018 Annual",
      "event_id": 1,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 250,
      "amount_text": "$250.00",
      "contributor_id": 5195,
      "contributor_name": "JASON KENNEY",
      "event": "2018 Annual",
      "event_id": 1,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Constituency"
    },
    {
      "amount": 3000,
      "amount_text": "$3,000.00",
      "contributor_id": 5195,
      "contributor_name": "JASON KENNEY",
      "event": "2018 Annual",
      "event_id": 1,
      "location": "CALGARY",
      "receipt_count": 2,
      "recipient_type": "Party"
    },
    {
      "amount": 400,
      "amount_text": "$400.00",
      "contributor_id": 19901,
      "contributor_name": "KENNEY RYUN",
      "event": "2018 Annual",
      "event_id": 1,
      "location": "CALGARY",
      "receipt_count": 2,
      "recipient_type": "Party"
    },
    {
      "amount": 1000,
      "amount_text": "$1,000.00",
      "contributor_id": 339609,
      "contributor_name": "JOHN S. KENNEY PROFESSIONAL CORP",
      "event": "Campaign 2015",
      "event_id": 31,
      "location": "WHITECOURT",
      "receipt_count": 1,
      "recipient_type": "Candidate"
    },
    {
      "amount": 750,
      "amount_text": "$750.00",
      "contributor_id": 363971,
      "contributor_name": "DANIEL KENNEY",
      "event": "Annual 2015",
      "event_id": 29,
      "location": "CALGARY",
      "receipt_count": 1,
      "recipient_type": "Party"
    },
    {
      "amount": 500,
      "amount_text": "$500.00",
      "contributor_id": 287943,
      "contributor_name": "KAY KENNEY",
      "event": "Annual 2013",
      "event_id": 22,
      "location": "BLAIRMORE",
      "receipt_count": 1,
      "recipient_type": "Party"
    },
    {
      "amount": 300,
      "amount_text": "$300.00",
      "contributor_id": 289350,
      "contributor_name": "MARK KENNEY",
      "event": "Annual 2013",
      "event_id": 22,
      "location": "TEES",
      "receipt_count": 2,
      "recipient_type": "Party"
    },
    {
      "amount": 1000,
      "amount_text": "$1,000.00",
      "contributor_id": 246233,
      "contributor_name": "JOHN KENNEY",
      "event": "Campaign 2012",
      "event_id": 21,
      "location": "WHITECOURT",
      "receipt_count": 1,
      "recipient_type": "Candidate"
    }
  ],
  "count": 25,
  "filters": {
    "ed": null,
    "name": "Kenney",
    "party_id": null,
    "year": "ALL"
  },
  "observed_at_ms": 1791921952355,
  "source_url": "https://efpublic.elections.ab.ca/efCTACSSearch.cfm?MODE=BROWSE&MID=CT_ACS",
  "title": "Contributor Search - Annual, Campaign, Senatorial Events"
}
```

### Third party advertiser detail

- Capability: `elections/third_party_advertiser_detail`
- Description: One referendum third-party advertiser's registration record: contacts (primary contact, CFO) and the published reports per event with EVENTID/ACCOUNTID and PDF/Excel URLs.
- Instructions: You have a TPAID from `list_third_party_advertisers`.
- Cost: 5 credits per call
- Capability file: [Third party advertiser detail](https://firecrawl.dev/alexandria/agents/providers/elections-ab-ca/elections/third_party_advertiser_detail)

Accepted options:
- `tpa_id` (string, required): Third party advertiser id (TPAID), e.g. 143 = Let Alberta Decide. Pattern: ^[0-9]{1,6}$. Example: `<tpa_id>`

Response schema example:
```json
{
  "category": "Third Party Advertisers - Referendum",
  "name": "Let Alberta Decide",
  "observed_at_ms": 1791921974930,
  "period_count": 1,
  "periods": [
    {
      "filing_due": null,
      "filing_due_text": null,
      "officers": [
        {
          "name": "Mr. Keith Wilson",
          "role": "Primary Contact"
        },
        {
          "name": "Mrs. Donna Wilson",
          "role": "Chief Financial Officer"
        }
      ],
      "organization": null,
      "period": "2026 Referendum Advertising",
      "reports": [
        {
          "account_id": 9911,
          "candidate_id": null,
          "docstate": null,
          "docstate_label": null,
          "event_id": 128,
          "format": "pdf",
          "handler": "fnShowOFSTPAContributionsWeekly",
          "title": "Weekly Contributions Report",
          "url": "https://efpublic.elections.ab.ca/efOFSRTPAWeekly.cfm?EVENTID=128&TPAID=143&ACCOUNTID=9911"
        },
        {
          "account_id": 9911,
          "candidate_id": null,
          "docstate": null,
          "docstate_label": null,
          "event_id": 128,
          "format": "xlsx",
          "handler": "fnShowOFSTPAContributionsWeeklyXLS",
          "title": "Weekly Contributions Report (Excel)",
          "url": "https://efpublic.elections.ab.ca/efOFSRTPAWeeklyXLS.cfm?EVENTID=128&TPAID=143&ACCOUNTID=9911"
        }
      ]
    }
  ],
  "source_url": "https://efpublic.elections.ab.ca/efRTPA.cfm?TPAID=143&MID=TPAS_TR&TPAType=R",
  "tpa_id": 143,
  "tpa_type": "R"
}
```
