How to Pull Virginia State Employee Salary Data Without Losing Your Mind

The Richmond Times-Dispatch has been publishing VA state employee salary data for years now, and if you're trying to dig into it yourself instead of relying on their articles, you need to understand how the underlying data actually works. It's not as simple as it sounds, mostly because "state employee" covers several different payroll systems that don't talk to each other. The core dataset lives through the Virginia Department of Administrative Services and their published employee compensation reports. You can access it through the state's open data portal, but the raw files are messy. They come out as quarterly CSV exports with no consistent naming convention across departments. The column headers shift. Sometimes the salary field is labeled Annual_Base_Salary, sometimes it's just Salary, and occasionally it gets folded into a combined compensation field that includes benefits you don't actually want unless you're doing full-cost calculations. Here's what nobody tells you: the data you see in the annual published report is a cleaned subset. The raw quarterly data contains far more rows because it includes terminated employees, leave-only staff, and people who were hired and separated within the same quarter. If you're looking for current active employee counts, filtering by termination date is essential. I once spent three weeks trying to reconcile headcount numbers between the Times-Dispatch's published tables and the raw data before I realized they'd silently dropped anyone who had less than a full year of service in that fiscal period. That removed roughly 12% of the rows in the higher-paying technical roles.

The practical workaround I ended up using was to pull the raw quarterly dumps, filter for employees with an active status code of 01 or 02 depending on the quarter's label convention, and then cross-reference against the annual summary using SSN-last-four-hash matching rather than full names. Full names are a disaster in this dataset — hyphenated names, middle initials that disappear mid-year, and legitimate duplicate names across different agencies make name-based joins nearly impossible. The hash approach saved me from spending another month on deduplication. A few things that trip people up: The salary figures are base salary only unless the field explicitly says otherwise. Overtime, stipends, and longevity pay show up in separate columns that most parsers skip. If you're comparing salaries across agencies and your numbers look low, you're probably looking at base only while someone else cited total compensation. That gap can be 15 to 30 percent for certain professional and technical positions.

Fiscal year matters. Virginia's state fiscal year runs July 1 through June 30, but some departments report on calendar year. The Times-Dispatch articles typically standardize to state fiscal year, but if you're pulling directly from department-level data you might accidentally merge FY2024 and FY2025 rows for the same person and create phantom salary increases. Job title normalization is its own problem. The dataset uses Virginia's standard classification titles, but they get updated periodically. A "Software Engineer II" in one quarter might become "Senior Software Developer" in the next with identical duties and pay. If you're tracking salary trends over time, you need a mapping table that accounts for these title changes, or your year-over-year analysis will show false drops and spikes. The dataset also has known gaps for certain employee categories. University of Virginia and Virginia Tech system employees have their own payroll reporting and don't always appear in the central administrative services dataset. The Virginia Community College System is similarly separate. If your analysis includes higher education and you're only using the state employee file, you're missing roughly 40,000 employees. That's a significant portion of the public sector workforce in the state.

Get the Full Details

10 states with the most and least salary transparency | Employee ...
10 states with the most and least salary transparency | Employee ...

Accessing the data itself is free and doesn't require a FOIA request. It's published openly. The files are typically posted on the DAS website and the Virginia open data portal within 30 to 45 days after each quarter closes. The URL structure changes occasionally, so bookmarked links from last year probably won't work. Search for "Virginia Department of Administrative Services employee compensation data" and you'll find the current landing page. For analysis, I'd recommend starting with PowerShell or Python rather than Excel. The quarterly files run 800,000 to 1.2 million rows, and Excel chokes on that size pretty quickly. A properly indexed pandas DataFrame or even a simple SQLite database will handle the joins and filters in under 30 seconds where Excel would crawl for minutes or crash entirely. The data is useful but it has real limits. It doesn't capture salary history for any individual employee. You can see what someone made in a given quarter, but not whether they got a raise between quarters. It doesn't include locality pay adjustments broken out separately from base salary in many exports. And it absolutely does not cover congressional staff, federal employees working in Virginia, or municipal government workers. Those are separate datasets with separate access procedures.