CA Cal-Access Campaign Finance Scraper avatar

CA Cal-Access Campaign Finance Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
CA Cal-Access Campaign Finance Scraper

CA Cal-Access Campaign Finance Scraper

Search California campaign-finance filers on Cal-Access - committees, candidates, major donors, lobbyists, lobbying firms & employers. Browse by name, entity type, and election cycle; pull registration and financial-activity summaries.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Search California's official campaign-finance and lobbying disclosure system, Cal-Access, run by the Secretary of State. Search any filer by name across every registry, browse filers alphabetically (or ballot measures by election), or look up a filer's full registration and financial-activity summary by filer ID. Covers committees, political parties, major donors, slate mailers, candidates & elected officials, individual lobbyists, lobbying firms, lobbyist employers, propositions & ballot measures, and persons/entities spending $5,000+ to influence legislation. No login required.

What this actor does

  • Three modes: search (by name, across all entity types), browse (by entity type + letter + election cycle), detail (by filer ID)
  • Seven entity types: committees, candidates, individual lobbyists, lobbying firms, lobbyist employers, propositions & ballot measures, and $5,000+ payments-to-influence filers
  • Committee sub-type filter — narrow committees to major donors, political parties, small contributor committees, or slate mailers
  • Election cycle — browse or look up any two-year legislative session back to 1999–2000, for every entity type
  • Financial-activity summaries — reporting period, contributions/expenditures for the period, cumulative totals, and ending cash for committees and candidates' linked committees
  • Ballot-measure campaign tracking — every committee formed to support or oppose a proposition, with its SUPPORT/OPPOSE position, grouped by election date
  • $5,000+ payments-to-influence activity — quarterly lobbying-payment totals, P.U.C. lobbying totals, and the specific bills/agencies lobbied for persons who spend $5,000+ without employing a lobbyist or firm
  • Discipline-relevant status — current registration status (active / terminated / in suspense) for every filer
  • Lobbyist relationships — each lobbyist's registered employer(s)/firm(s), with effective and termination dates
  • Lobbyist headshot photos — rehosted to a permanent, publicly accessible URL (the source image sits behind the same bot-protection as the rest of the site, so raw upstream links aren't directly reachable)
  • Empty fields are omitted

Output per filer record

  • name — registered filer name (or ballot-measure title)
  • filerId — Cal-Access filer ID
  • entityTypecommittees / candidates / lobbyists / lobbyingFirms / lobbyistEmployers / measures / paymentsToInfluence
  • status — current registration status, e.g. ACTIVE, TERMINATED 12/31/2025, IN SUSPENSE
  • committeeType — raw committee sub-type as listed by the source (browse mode, committees only)
  • electionCycle — two-year session the record reflects (browse/detail modes)
  • electionDate — specific election the ballot measure appeared on, e.g. NOVEMBER 5, 2024, GENERAL (browse mode, measures only)
  • filerContact — registered phone/address (committees & candidates, detail mode)
  • lastReportDate, reportingPeriod, contributionsThisPeriod, totalContributions, expendituresThisPeriod, totalExpenditures, endingCash — financial summary (committees, detail mode)
  • committees[] — linked campaign committees with their own financial summaries (candidates, detail mode); for ballot measures, the committees formed to support/oppose it, each with filerId, name, and position (SUPPORT/OPPOSE)
  • address, mailingAddress, registrationDate, ethicsCourseCompletionDate, responsibleOfficer — lobbying-entity registration details (lobbyists/firms/employers/paymentsToInfluence, detail mode)
  • relationships[] — registered employer/firm relationships with effective/termination dates (lobbyists, detail mode)
  • paymentsByQuarter[] — quarterly session, quarter, totalPaymentsToInfluence, and pucLobbying totals (paymentsToInfluence, detail mode)
  • billsAndAgenciesLobbied[]session, quarter, and billOrAgency lobbied that quarter (paymentsToInfluence, detail mode)
  • photoUrl — permanent, publicly reachable headshot photo URL (lobbyists, detail mode, when the filer has one on file); photoUrlOriginal — the source Cal-Access URL for traceability
  • sourceUrl — link to the filer's page on cal-access.sos.ca.gov
  • recordType: "filer", scrapedAt

Invalid input (malformed filer ID, no matching filer) produces a recordType: "error" record instead, with error, message, and input fields.

Input

FieldTypeDefaultDescription
modestringsearchsearch (by name) / browse (by entity type + letter) / detail (by filer ID)
searchQuerystringNewsomFiler name or fragment (mode=search)
entityTypestringcommitteesRegistry to browse/look up (mode=browse / mode=detail)
committeeTypestringallNarrow committees to a sub-type (mode=browse, entityType=committees)
letterstringAStarting letter, or Numeric (mode=browse)
electionCyclestring2025Two-year session, e.g. 2025 = 2025 through 2026 (mode=browse / mode=detail)
filerIdstringExact Cal-Access filer ID (mode=detail)
proxyConfigurationobjectoffOptional Apify proxy; not required for normal use
maxItemsint20Hard cap on emitted records (1–500)

Example: search for a filer by name across all registries

{
"mode": "search",
"searchQuery": "Newsom",
"maxItems": 20
}

Example: browse major-donor committees starting with "B"

{
"mode": "browse",
"entityType": "committees",
"committeeType": "majorDonors",
"letter": "B",
"electionCycle": "2025",
"maxItems": 30
}

Example: browse candidates & elected officials starting with "B"

{
"mode": "browse",
"entityType": "candidates",
"letter": "B",
"maxItems": 20
}

Example: look up one committee's financial summary

{
"mode": "detail",
"entityType": "committees",
"filerId": "1475408",
"electionCycle": "2025"
}

Example: look up a lobbyist's registration and employer relationships

{
"mode": "detail",
"entityType": "lobbyists",
"filerId": "1359080"
}

Use cases

  • Political journalism — track who's funding committees and ballot-measure campaigns
  • Compliance & opposition research — verify a committee, candidate, or lobbyist's current registration status
  • Government transparency tools — feed a searchable public-records dashboard
  • Academic research — bulk-collect California lobbying-registry entities by sector
  • Due diligence — confirm a lobbying firm or employer's standing before engagement
  • Campaign finance tracking — pull a candidate's linked committees and their contribution/expenditure totals

FAQ

What is Cal-Access? The California Secretary of State's public disclosure system for campaign-finance and lobbying activity, covering candidates, committees, political parties, major donors, slate mailers, lobbyists, lobbying firms, and lobbyist employers.

Do I need a login? No — Cal-Access is fully public. The actor uses a stealth browser session (no user credentials) to reach the same pages any visitor can see at cal-access.sos.ca.gov.

Why does search return fewer fields than detail? The name-search listing only carries name, entity type, and status. The richer financial-activity and registration fields live on each filer's own detail page — use mode=detail with the filerId from a search/browse result to pull them.

Why is maxItems capped relatively low? Cal-Access is protected by a bot-management layer that only tolerates genuine in-app browser navigation (not raw HTTP requests), so each record involves a real page load. Keeping runs modest keeps them fast and reliable; raise maxItems if you need more and don't mind a longer run.

Can I browse a specific historical election cycle? Yes — electionCycle supports every two-year session back to 1999–2000 for both browse and detail modes.

What if a run returns fewer records than maxItems? Cal-Access occasionally rate-limits automated traffic; the actor retries with backoff automatically. If a section is temporarily unavailable it reports this via the run's status message rather than failing silently.

Why does a candidate's record have a committees[] list instead of flat financial fields? A candidate can have multiple campaign committees across election cycles (e.g. a committee for each office they've run for), so their financial activity is reported per-committee rather than as one number.