New Jersey State Payroll - Every State Employee Payment avatar

New Jersey State Payroll - Every State Employee Payment

Pricing

from $0.03 / 1,000 new jersey payroll records

Go to Apify Store
New Jersey State Payroll - Every State Employee Payment

New Jersey State Payroll - Every State Employee Payment

Every payment New Jersey's state government made to its own workforce (public open data, 2.84M rows, 2010-today): employee, agency and section, job title, bargaining group, salary rate, and paid amounts by type. Filter by name, agency, title, year or amount.

Pricing

from $0.03 / 1,000 new jersey payroll records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Every payment the State of New Jersey made to its own workforce, straight from the State's payroll register. 2.84 million rows - about two per employee per reporting year (a salary record and a payments record) - from calendar 2010 through the latest reporting year.

Low cost

From $0.00005 per record, down to $0.00003 at Gold. Pay only for the records you actually receive - the whole register stays queryable, you are never billed for the scan behind it.

What you get

One row per employee (an annual snapshot), with the pay attached to it:

  • Who - employee name (last, first, middle initial), and the payroll id
  • Where - the employing department/agency and the section inside it
  • What job - the job title and the employee-relations (bargaining) group
  • How paid - annual salary, hourly, part-time or per-diem
  • How much - the paid amounts broken down by type: regular pay, overtime, supplemental, one-time, retroactive, lump sum, and clothing

Two record types, one register

The State publishes each employee in two rows, and the two carry different money columns:

  • recordType: "MASTER" - the salary rate (salaryHourlyRate), the original hire date (present on ~5% of MASTER rows), and the year-to-date totals (masterYtdRegularPay, masterYtdOvertime, masterYtdOther, masterYtdEarnings).
  • recordType: "DETAIL" - the amounts paid in the reporting period, broken out by type (regularPay, overtimePayments, retroactivePay, lumpSumPay, ) and the year-to-date ytdEarnings.

Neither row shows the whole picture on its own - that is how the State publishes it. Both are returned by default; set recordType to read one. A row leaves the other type's fields empty rather than dropping the keys, so the shape never changes under you.

Filter it

  • Name - lastName="Smith", or fullName="Smith, John".
  • Agency and section - department="Corrections", section="State Police".
  • Job - title="Trooper", title="Nurse". 44 named agencies, 280 sections and 40 bargaining groups in total.
  • Record type - MASTER or DETAIL (see above).
  • Year - calendarYear=2025. 2010-2026 are present.
  • Amount - minAmount=100000 for six-figure year-to-date earnings.
  • Date range and last-N-days on the snapshot date.

Example inputs

One employee by name - lastName is a substring match.

{ "lastName": "SMITH", "recordType": "DETAIL", "maxResults": 25 }

One agency's payroll - combine the agency with a job title.

{ "department": "CORRECTIONS", "title": "OFFICER", "maxResults": 50 }

Top earners this year - year-to-date earnings at or above a threshold.

{ "calendarYear": 2026, "minAmount": 150000, "maxResults": 50 }

Where the payroll is - mode=aggregate returns one count row per agency; every group comes back.

{ "mode": "aggregate", "groupBy": "department" }

Or roll it up

Set mode=aggregate and get a rolled-up count by department, section, bargaining group, compensation method, calendar year or record type. Every group comes back - this mode is not cut off by maxResults.

Then follow the money

  • Headcount and payroll size by agency, and how they move year over year.
  • Every person the State has paid, and what they earned in each reporting year.
  • Overtime vs. regular pay by agency or bargaining unit.
  • The public payroll of one agency or one job title, line by line.

Example output

One detail row - department=CORRECTIONS, recordType=DETAIL:

{
"platform": "nj-payroll",
"source": "new-jersey-state-payroll",
"mode": "rows",
"groupKey": "",
"groupCount": "",
"groupBy": "",
"calendarYear": "2026",
"calendarQuarter": "2",
"asOfDate": "2026-06-30T00:00:00.000",
"payrollId": "231480",
"lastName": "COOPER",
"firstName": "RUSSELL",
"middleInitial": "S",
"fullName": "COOPER, RUSSELL S",
"masterDepartment": "CORRECTIONS",
"masterSection": "BAYSIDE STATE PRISON",
"masterTitle": "STRKPR 2",
"bargainingGroup": "ADMINISTRATIVE AND CLERICAL SERVICES (CWA) - UNIT A",
"compensationMethod": "ANNUAL SALARY",
"regularPay": "11199.65",
"supplementalPay": "0",
"oneTimePayments": "0",
"ytdEarnings": "11199.65",
"recordType": "DETAIL",
"sourceUpdatedAt": "2026-08-28"
}

mode=aggregate, groupBy=department - one count row per agency:

HUMAN SERVICES 408,968
JUDICIARY 352,296
CORRECTIONS 307,183
LAW AND PUBLIC SAFETY 267,418
CHILDREN AND FAMILIES 249,243
ENVIRONMENTAL PROTECTION 177,273

Notes on the data, from the source

  • Two rows per employee per year, not one. See the record-type section above: a MASTER row and a DETAIL row, with non-overlapping money columns.
  • The register is effectively annual - the State publishes one snapshot per reporting year (the current year is a partial snapshot). The newest data can be up to a year behind. sourceUpdatedAt carries the dataset's own refresh date.
  • A few rows carry adjustments. 17 of the 2.84 million rows are negative (the lowest is -$43,896.87) - real accounting entries, returned as they stand. Set minAmount=0.01 for a positive-only query.
  • 23,706 rows carry no department. The State writes the literal string "null" there; it is returned as empty, not as an agency named "null".
  • Job titles and sections are free text as the State types them, so a substring match is the right way to search them.