CA Cal-Access Campaign Finance Scraper
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
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 asNEWSOM.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.status—ACTIVE,INACTIVE,TERMINATED,WITHDRAWN, orany.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, andrequestDelayMillis— 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.jsis the thin process entrypoint.src/actor.jsowns Apify initialization, failure logging, and shutdown.src/runner.jscontains the bounded public CAL-ACCESS archive workflow.