puc.ny.gov APIpuc.ny.gov ↗
Search and retrieve regulatory filings, case metadata, and documents from the NY Public Service Commission DMM system via 3 structured API endpoints.
curl -X GET 'https://api.parse.bot/scraper/3049f238-c58c-42d9-a436-623487309d55/search_documents?page=1&query=rate+case' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for documents by keyword using the DPS document search engine. Returns paginated results with titles, snippets, and download links. Pagination requires a session-based state: the initial search is performed first, then subsequent pages are fetched.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| query | string | Search keyword or phrase (e.g. 'testimony', 'rate case') |
{
"type": "object",
"fields": {
"page": "integer — current page number",
"query": "string — the search query used",
"results": "array of document objects with title, document_id, download_url, snippet, and page",
"total_results": "string — total results text from the page header (may be empty)"
},
"sample": {
"data": {
"page": 1,
"query": "rate case",
"results": [
{
"page": 1,
"title": "Comments of the National Energy Marketers Association",
"snippet": "STATE OF NEW YORK PUBLIC SERVICE COMMISSION ...",
"document_id": "{42E70C00-6D13-4FAC-B3B0-2BD0FC8D1396}",
"download_url": "https://documents.dps.ny.gov/search/Home/DownloadDoc/Find?id=%7B42E70C00-6D13-4FAC-B3B0-2BD0FC8D1396%7D&ext=pdf&docTitle=Comments%20of%20the%20National%20Energy%20Marketers%20Association"
}
],
"total_results": ""
},
"status": "success"
}
}About the puc.ny.gov API
The puc.ny.gov API exposes 3 endpoints for searching and retrieving documents and case records from the New York Public Service Commission's Document Matter Management system. Use search_documents to run full-text keyword searches across regulatory filings, get_case_details to resolve a case number like '07-E-0949' into metadata and an internal matter sequence ID, and get_case_documents to pull the complete document list for any proceeding.
Searching Regulatory Documents
The search_documents endpoint accepts a query string — such as 'testimony' or 'rate case' — and an optional page integer for paginated results. Each item in the results array includes a title, document_id, download_url, snippet, and page number. Note that pagination is stateful: the first request establishes the search session, and subsequent pages are retrieved by incrementing the page parameter. The total_results field returns the header text from the source page and may occasionally be empty.
Resolving Cases and Fetching Documents
get_case_details takes a case_number in the format NN-X-NNNN (for example, 26-G-0016) and returns a metadata object containing fields such as matter_number, industry, matter_type, company, status, and title, alongside the matter_seq — the internal numeric ID used throughout the DMM system. This matter_seq value is the key input for get_case_documents.
get_case_documents accepts either a case_number or a matter_seq directly; when a case_number is supplied, the matter sequence is resolved internally. The response includes a documents array where each entry carries item_no, date_filed, document_type, title, file_name, file_size, doc_ref_id, and download_url. The total_documents integer tells you exactly how many records were returned for that proceeding.
Coverage Scope
All three endpoints target publicly accessible proceedings in the NY PSC DMM system, covering a wide range of regulated industries including electric, gas, telecommunications, and water utilities. Document types vary by proceeding and can include tariff filings, orders, testimony, and correspondence.
- Track all filings in a specific PSC rate case by case number to monitor proceeding activity over time.
- Build a full-text search index of NY PSC regulatory documents using
search_documentsquery results anddownload_urlfields. - Resolve a case number to its
matter_seqwithget_case_detailsto feed downstream document retrieval workflows. - Extract
date_filedanddocument_typefields fromget_case_documentsto audit filing timelines for utility proceedings. - Identify all public filings by a specific company by combining
get_case_detailscompany metadata withget_case_documentsoutput. - Aggregate document counts across multiple proceedings by comparing
total_documentsvalues returned per case. - Download and archive proceeding documents programmatically using the
download_urlfield from case document listings.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the NY Public Service Commission provide an official developer API for the DMM system?+
What does `get_case_details` return beyond the matter sequence ID?+
matter_seq, the response includes a metadata object with fields such as matter_number, case_number, industry, matter_type, company, status, and title. Field availability can vary by case — not every proceeding populates all metadata fields.How does pagination work in `search_documents`?+
query string initiates the search, and subsequent calls increment the page integer to retrieve additional result pages. Skipping directly to a later page without an initial search may not return expected results. The total_results field reflects the header text from the source and may be empty in some responses.Can I filter case documents by document type or date range?+
get_case_documents returns all public documents for a case in a single array; filtering by document_type or date_filed must be done client-side on the returned data. You can fork this API on Parse and revise it to add server-side filtering parameters against those fields.Does the API cover docket comments, party intervenor lists, or hearing schedules?+
get_case_details and filed documents via get_case_documents, but does not expose comment submissions, intervenor rosters, or scheduled hearing dates. You can fork it on Parse and revise to add endpoints targeting those sections of the DMM system.