NJ APInjleg.state.nj.us ↗
Retrieve daily New Jersey Legislature session and committee meeting schedules, with status, location, and audio/video availability via a single API endpoint.
What is the NJ API?
The NJ Legislature Live Proceedings API exposes 1 endpoint — get_schedule — that returns every floor session, committee meeting, and commission meeting scheduled for a given calendar day at the New Jersey Legislature. Each proceeding row includes at least 7 fields: the proceeding name, house code, committee code, time, location, status (such as Completed, In Progress, or Unavailable), and whether audio or video is offered.
curl -X GET 'https://api.parse.bot/scraper/c7e88876-87a1-41ff-80e7-344ac09dc4d0/get_schedule?date=2026-10-01' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace njleg-state-nj-us-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: NJ Legislature Live Proceedings — fetch today's schedule."""
from parse_apis.njleg_state_nj_us_api import NJLeg, InputFormatInvalid
client = NJLeg()
# Fetch today's legislative schedule (date defaults to today in NJ time).
schedule = client.schedules.get()
print(f"{schedule.date}: {schedule.count} proceeding(s)")
for proc in schedule.proceedings or []:
print(f" {proc.time} — {proc.proceeding} [{proc.status}]")
if proc.location:
print(f" Location: {proc.location}")
if proc.audio_video:
print(f" Media: {proc.audio_video}")
# Look up a specific past date by ISO string.
try:
past = client.schedules.get(date="2026-09-24")
print(f"\n{past.date}: {past.count} proceeding(s)")
for proc in past.proceedings or []:
print(f" {proc.proceeding} — {proc.status} ({proc.start_time})")
except InputFormatInvalid:
print("Invalid date format; use YYYY-MM-DD.")
print("exercised: schedules.get")
Returns the New Jersey Legislature proceedings (floor sessions, committee meetings, commission meetings) scheduled for one calendar day, one row per proceeding, with time, location, status (e.g. Completed, Unavailable, In Progress) and whether audio/video is offered. Acts on a single date; when the date is omitted the current date in New Jersey (America/New_York) is used. One request per call; a day with no legislative activity returns an empty proceedings array with count 0, which is a valid result (the site shows 'No legislative activity for this date'). Past dates return historical schedules with their final status. Statuses are snapshots and change during the day.
| Param | Type | Description |
|---|---|---|
| date | string | ISO date YYYY-MM-DD of the day to look up. Omitted = today in New Jersey local time. |
{
"type": "object",
"fields": {
"date": "ISO date YYYY-MM-DD the schedule was fetched for",
"count": "integer number of proceedings returned",
"proceedings": "array of proceeding rows: proceeding (name), house_code (A/S or null), committee_code (site's committee/house abbreviation), agenda_type (S=session, M=meeting) with agenda_type_description, time (display, local), start_time/end_time (ISO 8601 with New Jersey offset), location (null when remote/unlisted), status, audio_video (A=audio, V=video, null=none), comment (agenda notes or null), agenda_date_parameter (site's date-time key for the agenda)"
},
"sample": {
"data": {
"date": "2026-09-24",
"count": 1,
"proceedings": [
{
"time": "12:00 PM",
"status": "Completed",
"comment": "Voting Session:\n",
"end_time": "2026-09-24T15:00:00-04:00",
"location": "Assembly Chambers",
"house_code": "A",
"proceeding": "Assembly Session",
"start_time": "2026-09-24T12:00:00-04:00",
"agenda_type": "S",
"audio_video": "V",
"committee_code": "A",
"agenda_date_parameter": "2026-09-24-12:00:00",
"agenda_type_description": "Session"
}
]
},
"status": "success"
}
}About the NJ API
What the API Returns
The get_schedule endpoint returns the full daily proceedings list published on the NJ Legislature's Live Proceedings page. The response includes a top-level date (ISO 8601), a count of proceedings for that day, and a proceedings array. Each element in the array carries the proceeding name (e.g., a named committee or floor session), house_code (A for Assembly, S for Senate, or null for joint/commission bodies), committee_code (the site's own abbreviation for the committee or house), time, location, and status.
Date Parameter and Defaults
The single optional input is date, an ISO 8601 string in YYYY-MM-DD format. When omitted, the endpoint defaults to the current date in New Jersey local time (Eastern Time). This means you can query historical schedules or future scheduled dates by supplying a specific date string — useful for pre-loading calendars or backfilling records.
Status and Media Availability
The status field reflects real-time proceeding state, with values such as Completed, In Progress, and Unavailable. The response also indicates whether each proceeding has audio and/or video available, which corresponds to the stream links published on the Live Proceedings page. This lets downstream applications surface only live or upcoming sessions without filtering on client-side.
Coverage Scope
The API covers all proceeding types listed on the Live Proceedings page for a single day: full Senate and Assembly floor sessions, standing committee meetings, and commission meetings. It does not cover bill text, roll-call votes, or session transcripts.
The NJ API is a managed, monitored endpoint for njleg.state.nj.us — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when njleg.state.nj.us changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official njleg.state.nj.us API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display today's NJ Legislature committee and floor session schedule on a civic-engagement dashboard, using the
proceedingsarray andstatusfield. - Alert subscribers when a specific committee meeting changes to 'In Progress' status by polling
get_scheduleand filtering oncommittee_code. - Build a public-access TV guide for NJ legislative streams by filtering proceedings where audio or video is offered.
- Aggregate historical daily proceeding counts by querying
get_schedulewith adateparameter across a date range. - Filter Assembly vs. Senate proceedings separately using the
house_codefield (A or S) to power separate legislative-tracking views. - Notify journalists or lobbyists when a named committee appears on the day's schedule by matching
committee_codeagainst a watchlist.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the NJ Legislature website have an official developer API?+
What does the `status` field return, and can I filter by it?+
status field reflects the proceeding's current state as published on the Live Proceedings page. Observed values include 'Completed', 'In Progress', and 'Unavailable'. The endpoint does not accept a status filter as an input parameter, so filtering by status must be done client-side on the returned proceedings array.Does the API return bill-level detail, vote records, or committee agendas for each proceeding?+
How far back does historical schedule data go, and are future dates available?+
date parameter accepts any ISO date string you supply, covering past dates that appeared on the Live Proceedings page as well as future dates that have been scheduled. Availability of historical records depends on what the source page retains; very old dates may return an empty proceedings array.