CA Cal-Access Campaign Finance Scraper avatar

CA Cal-Access Campaign Finance Scraper

Pricing

Pay per usage

Go to Apify Store
CA Cal-Access Campaign Finance Scraper

CA Cal-Access Campaign Finance Scraper

Unofficial search of California Secretary of State daily public CAL-ACCESS data; not affiliated with or endorsed by the Secretary of State.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

California CAL-ACCESS Campaign Finance Scraper

Search California Secretary of State campaign-finance and lobbying filer registrations from the official daily CAL-ACCESS raw-data export. The Actor returns normalized, deduplicated public filer records and evidence-backed campaign-activity availability.

This is an unofficial community tool. It is not affiliated with, endorsed by, or operated by the California Secretary of State. CAL-ACCESS records are filer-submitted public disclosures and should not be treated as legal advice or a substitute for certified records.

Why this Actor uses the official raw-data export

The public CAL-ACCESS website is protected by an interactive browser security check. This Actor does not solve CAPTCHAs or bypass that control. Instead, it uses the separate daily ZIP export that the Secretary of State expressly publishes for technical users. To keep runs bounded, it reads the ZIP directory with HTTP byte ranges and downloads only the required compressed tables—never the entire multi-gigabyte archive.

The official export is updated daily. Every dataset item includes the archive URL, its latest Last-Modified timestamp when supplied by the CDN, the exact source table, a compact sourceEvidence object, and the Secretary of State documentation page.

Input

  • searchQuery — case-insensitive filer-name fragment, such as NEWSOM.
  • filerId — optional exact numeric CAL-ACCESS filer ID; when present, it takes precedence over the name query.
  • entityType — optional official filer classification, including recipient committee, candidate/officeholder, major donor committee, lobbyist, firm, employer, client, payment-to-influence filer, slate mailer, proposition, or initiative.
  • statusACTIVE, INACTIVE, TERMINATED, WITHDRAWN, or any.
  • includeFinancialActivity — when enabled, searches campaign-disclosure cover records for the latest filing and joins its numeric summary lines.
  • maxResults — hard cap of 1–50 unique filers.
  • maxFinancialLines — hard cap on attached financial summary lines per filer.
  • maxRunMillis, maxCompressedMbytes, maxRetries, and requestDelayMillis — operational safety controls.
  • proxyConfiguration — optional Apify Proxy configuration. The public CDN normally works directly.

Example:

{
"searchQuery": "NEWSOM",
"entityType": "RECIPIENT COMMITTEE",
"status": "ACTIVE",
"includeFinancialActivity": true,
"maxResults": 3
}

Output

Successful filer items have recordType: "filer", successRecord: true, found: true, and dataAvailable: true, plus stable recordId and filerId fields, registered name, official entity classification, status, effective date, and available public contact information. Historical contact rows are normalized and deduplicated in contactHistory.

For matched campaign filers, latestCampaignFiling can include filing and amendment IDs, form and statement types, report date, reporting period, election date, candidate, office, jurisdiction, district, and support/oppose code. financialSummaryLines contains the official form line number and numeric amount columns exactly as represented by the raw export. campaignActivityStatus states whether a filing and usable summary lines were found, which tables were consulted, and why optional data is unavailable when it is not present. Because line meanings depend on the filing form and year, the Actor does not invent friendly labels; use formType and the linked official documentation to interpret them.

Unavailable optional values are omitted. No placeholder strings, fabricated totals, diagnostic rows, or mock rows are generated. Optional campaign availability and any limitation are embedded in each filer's campaignActivityStatus. A no-match filer search fails clearly and leaves the dataset empty.

Key-value store

Every run writes OUTPUT_SUMMARY with success state, record and duplicate counts, timing, connection mode, and archive provenance. Failed runs include the error and leave the primary dataset free of status objects.

Responsible operation and limitations

The Actor performs one range request at a time with a configurable delay, bounded exponential retries, an honest application user agent, a compressed-download guard, and a deadline below five minutes. It validates required output fields and rejects duplicate filer identities. Direct access is the default; an explicitly supplied Apify or custom proxy configuration is used exactly or the run fails closed.

CAL-ACCESS covers state-level records; it does not replace federal, county, or city disclosure systems. Historical records may contain repeated or superseded addresses, misspellings, incomplete contact fields, and amendments because the underlying data is supplied by filers. Financial summary line items are raw official form values, not independently audited calculations. Review the source documentation and current filings before making compliance, legal, or financial decisions.

Code structure

  • src/main.js is the thin process entrypoint.
  • src/actor.js owns Apify initialization, failure logging, and shutdown.
  • src/runner.js contains the bounded public CAL-ACCESS archive workflow.