WA Lobbying & PDC Enforcement - Who Pays to Lobby
Pricing
from $0.03 / 1,000 lobby filing records
WA Lobbying & PDC Enforcement - Who Pays to Lobby
Washington lobbying money (332k filings, current to this month): who pays whom to lobby Olympia. Search by client, lobbyist, year, min compensation; aggregate top client spenders or top lobbying firms. Plus PDC campaign-finance/lobbying enforcement cases with penalties, status and amounts.
Pricing
from $0.03 / 1,000 lobby filing records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
WA Lobbying & PDC Enforcement (wa-lobbying)
Pull Washington's lobbying money - ~336,000 filings, current to this month (from the state's free public open data) - showing who pays whom to lobby the legislature, with compensation amounts per filing period. Plus PDC enforcement cases (campaign-finance / lobbying violations) with penalties.
This is the money-flow layer of WA politics that no one else packages: every retainer a law firm or government-affairs shop collects to lobby Olympia, attributed to the client that paid it.
Built for government-relations teams, associations, law firms, PR agencies, lobbyists, journalists and market-intelligence users who need the B2G angle on WA - "who's spending what to shape state policy".
Two modes
lobbying (default) - Lobbyist Compensation
Each record is one client paying a lobbyist/firm for one filing period:
| Field | Meaning |
|---|---|
lobbyistName | The lobbyist or lobbying firm |
clientName | The organization paying (funding source / employer) |
period / year | Filing period (monthly) and year |
type | Employer = client-attributable row (default); Lobbyist = self summary |
compensation / netCompensation | What the client paid the lobbyist that period |
netTotal | Compensation + expenses for the period |
sourceUrl | Link to the PDC filing |
enforcement - PDC cases
Each record is one Public Disclosure Commission case (alleged campaign-finance or lobbying violation):
| Field | Meaning |
|---|---|
case / opened | Case number and opened date |
respondent | The person/organization under review |
subject | The alleged violation (statute cited) |
status | e.g. Assessment of Facts, Violation Found by Commission, Closed |
totalPenalties / totalPaid / balanceDue | Money outcomes |
Typical questions it answers
- Who spends the most lobbying Olympia? Aggregate by
client-> Puget Sound Energy, Amazon, Boeing, Microsoft, associations (year to date, all years). - What does a given company pay for lobbying? Filter
clientName=Boeing-> every firm it retains and the monthly amounts. - Which lobbying firm earns the most? Aggregate by
lobbyist-> Gordon Thomas Honeywell, Insight Strategic, McBride... - A retainer-scale search -
clientName=Microsoft+minCompensation=10000. - Who's been cited for campaign violations?
mode=enforcement+status=Violation Found, orstatus=Assessment of Factsfor cases in review.
Aggregate mode (lobbying only)
Turn on aggregate and it rolls up compensation over the whole ~336k-row corpus instantly:
| Output field | Meaning |
|---|---|
key | The client or lobbyist |
compensation | Total compensation paid (all matched filings) |
filings | Number of filings in that group |
Group by client (top spenders) or lobbyist (top earners). Aggregation runs on Employer records only, so a client's compensation is never double-counted against the lobbyist's self row.
Inputs (all optional)
| Input | Mode | What it does |
|---|---|---|
clientName | lobbying | Organization paying for lobbying - substring ("Boeing", "Microsoft", "Puget Sound Energy") |
lobbyistName | lobbying | Lobbyist or firm - substring ("Gordon Thomas Honeywell", "McBride") |
lobbyistType | lobbying | Employer (client-attributable, default) / Lobbyist / both. The default applies to every lobbying query - so a lobbyistName search returns that firm's employer-attributable rows; set both to add the lobbyist's own self-summary rows |
aggregate + groupBy | lobbying | Roll up by client / lobbyist -> total compensation + filings |
respondent | enforcement | Person/organization cited |
subject | enforcement | Text of the alleged violation |
status | enforcement | Case status keyword ("Violation Found", "Closed") |
yearFrom / yearTo | both | Filing-period / opened-date year range |
minCompensation | lobbying | Only filings at or above this compensation |
minPenalty | enforcement | Only cases with penalties at least this amount |
maxResults | both | Cap records (default 50) |
Example inputs
What one company pays for lobbying - clientName is a substring; the default Employer view is client-attributable.
{ "clientName": "Boeing", "maxResults": 10 }
Retainer-scale payments only - minCompensation sets a floor on the filing amount.
{ "clientName": "Microsoft", "minCompensation": 10000, "maxResults": 10 }
Cases where a violation was found - switch to mode=enforcement and screen by status.
{ "mode": "enforcement", "status": "Violation Found", "maxResults": 10 }
Which firms earn the most - aggregate rolls compensation up by lobbyist.
{ "aggregate": true, "groupBy": "lobbyist", "maxResults": 10 }
Low cost
$0.00005 per record, down to $0.00003 at Gold - and each record is metered individually.
This couples Washington's lobbying-disclosure corpus (~336k filings) with the PDC enforcement docket (campaign-finance & lobbying penalties) behind one query surface. The money data is trickier than it reads: a single lobbying payment can be reported twice - once by the employer paying and once by the lobbyist self-reporting - so spend aggregates are pinned to the employer-side filings to keep a dollar from being counted two times. Client names are as-messy-as-you'd-expect in the source (1-800 CONTACTS (Bill Clarke)), so matching spans both the funding-source and employer fields. You query one money-flow surface - filings and penalties - where a client's spend is never double-counted; the dedup and messy-name matching stay on our side. An unfiltered run returns the newest month's filings.
Example output
One lobbying filing - clientName="Union Pacific" returns records like this one:
{"platform": "wa-lobbying","source": "lobbyist-compensation","type": "Employer","period": "2026-09","year": "2026","lobbyistName": "Aaron Hunt","lobbyistId": "29492","clientName": "UNION PACIFIC RAILROAD CO","clientId": "17004","employmentType": "Direct","compensation": 1000,"netCompensation": 1000,"totalExpenses": 0,"netTotal": 1000,"sourceUrl": "https://my.pdc.wa.gov/lobbyist/public/-/#/public/l2-report/2071470"}
aggregate=true, groupBy=client - one summary row per client (key, compensation, filings), rolled up over the Employer records so a dollar is counted once.
Data source & freshness
- Sources: data.wa.gov - Lobbyist Compensation by Source (
9nnw-c693, ~336k rows) and PDC Enforcement (a4ma-dq6s, 8k rows), via the Socrata SODA API (free public, no login). - Update cadence: lobbying filings are monthly (data runs through the latest filing month); enforcement cases open continuously.
- Coverage: registered lobbyist compensation in WA from 2016 to present, and PDC campaign-finance/lobbying enforcement actions.