New York DOCCS Inmate Lookup Scraper avatar

New York DOCCS Inmate Lookup Scraper

Pricing

from $19.00 / 1,000 results

Go to Apify Store
New York DOCCS Inmate Lookup Scraper

New York DOCCS Inmate Lookup Scraper

Scrapes New York State DOCCS inmate records by DIN or name search. Returns each inmate as a flat row with custody status, facility, parole eligibility, and sentence details.

Pricing

from $19.00 / 1,000 results

Rating

0.0

(0)

Developer

Acquisition Automation Co.

Acquisition Automation Co.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Categories

Share

Acquisition Automation Co. Search less. Close more.

🗽 New York DOCCS Inmate Lookup Scraper

Search the New York State inmate lookup by name or DIN and get the full custody record as a flat row. 31 fields per person: custody status, facility, offences and classes, aggregate sentence, county of commitment, every release and parole date the state publishes. No API key, no registration.

New York's Department of Corrections and Community Supervision runs a public lookup at nysdoccslookup.doccs.ny.gov. It answers one search at a time, spreads the record across several screens, and has no export. Anyone who checks more than a handful of names, a reporter on a beat, a reentry caseworker, a researcher, ends up retyping the same fields into a spreadsheet. This Actor drives that search and writes every matching record into a dataset.

Who uses itWhat they use the lookup for
📰 Journalists and newsroomsFollowing custody status, facility moves and parole hearing dates across a list of names
⚖️ Legal and reentry teamsTracking release and parole dates for the people on their caseload
📊 Criminal justice researchersBuilding datasets on sentence length, offence class and county of commitment
🔎 Diligence researchersChecking public criminal custody records against a named individual

📋 What it does

💡 Why it matters: the state publishes six different dates per record, and they do not mean the same thing. Having them as separate columns is what makes a release calendar possible.

  • 🔎 Two ways in. Search by last name, with optional first name, middle initial and date of birth, or go straight to a DIN.
  • 🏛 Custody status and facility on every row, for example IN CUSTODY at CAYUGA.
  • ⚖️ Every offence and its class, as parallel lists, so a three count sentence keeps all three.
  • 📅 The full date set. Earliest and latest release, conditional release, parole eligibility, maximum expiration, post release supervision expiry, parole hearing and board discharge.
  • 🆔 Aliases and prior DINs, which is how the same person is matched across commitments.
  • 📦 One row per record, the same 31 fields every run, exportable as CSV, Excel, JSON or XML.

📊 Output

Every record is one flat row. null means the state publishes no value for that field on that record, and NONE is what the site itself shows where a date does not apply.

FieldTypeDescription
🆔 dinstringDepartment Identification Number, the state's key for a commitment, for example 22R1495
👤 namestringName as recorded, surname first
🎂 dateOfBirthstringDate of birth as MM/DD/YYYY
📅 agestringAge as the site states it, for example 31 years old
🧾 racestringRace as recorded by the department
🏛 custodyStatusstringCurrent status, for example IN CUSTODY
🏢 housingFacilitystringFacility holding the person, for example CAYUGA
⚖️ crimearrayOffences of conviction, one entry each
🔤 crimeClassarrayOffence class letters, in the same order as crime
⏳ aggregateMinSentencestringAggregate minimum, as Years, Months, Days
⌛ aggregateMaxSentencestringAggregate maximum, as Years, Months, Days
📝 admissionTypestringHow the person entered custody, for example NEW COMMITMENT
📍 countyOfCommitmentstringCounty the commitment came from
📥 dateReceivedstringDate received into custody
🚪 earliestReleaseDatestringEarliest release date the department publishes
🏷 earliestReleaseTypestringWhich date type that earliest date is, for example MAXIMUM EXPIRATION DATE
🚪 latestReleaseDatestringLatest release date, where one is published
🏷 latestReleaseTypestringWhich date type the latest date is
📆 conditionalReleaseDatestringConditional release date, or NONE
🗓 paroleEligibilityDatestringParole eligibility date, where one applies
⏹ maximumExpirationDatestringMaximum expiration of the sentence
🔚 postReleaseSupervisionMaxExpirationDatestringMaximum expiration of post release supervision
🧑‍⚖️ paroleHearingDatestringNext parole hearing, usually as MM/YYYY
📋 paroleHearingTypestringType of that hearing, for example RELEASE CONDITIONS
✅ paroleBoardDischargeDatestringParole board discharge date, where one is published
🔁 otherNamesarrayOther names on the record
🔢 otherDinsarrayOther DINs linked to the same person
🔗 urlstringThe DOCCS lookup entry point. The site has no per record permalink
🌐 sourcestringAlways nysdoccslookup.doccs.ny.gov
🕒 scrapedAtstringISO timestamp of collection
⚠️ errorstringnull on a normal row

Example rows

{
"din": "22R1495",
"name": "SMITH, AARON",
"dateOfBirth": "09/09/1995",
"age": "31 years old",
"race": "BLACK",
"custodyStatus": "IN CUSTODY",
"housingFacility": "CAYUGA",
"crime": [
"ATT CRIM POSS WEAP 2ND"
],
"crimeClass": [
"D"
],
"aggregateMinSentence": "0 Years, 0 Months, 0 Days",
"aggregateMaxSentence": "5 Years, 0 Months, 0 Days",
"admissionType": "NEW COMMITMENT",
"countyOfCommitment": "BRONX",
"dateReceived": "07/05/2022",
"earliestReleaseDate": "05/05/2027",
"earliestReleaseType": "MAXIMUM EXPIRATION DATE",
"latestReleaseDate": null,
"latestReleaseType": null,
"conditionalReleaseDate": "NONE",
"paroleEligibilityDate": null,
"maximumExpirationDate": "05/05/2027",
"postReleaseSupervisionMaxExpirationDate": null,
"paroleHearingDate": "06/2026",
"paroleHearingType": "RELEASE CONDITIONS",
"paroleBoardDischargeDate": null,
"otherNames": [
"SMITH, AARON"
],
"otherDins": [
"22R1495"
],
"url": "https://nysdoccslookup.doccs.ny.gov/",
"source": "nysdoccslookup.doccs.ny.gov",
"scrapedAt": "2026-09-14T16:27:50.382Z",
"error": null
}
{
"din": "26B1928",
"name": "SMITH, AARON",
"dateOfBirth": "01/09/1993",
"age": "33 years old",
"race": "BLACK",
"custodyStatus": "IN CUSTODY",
"housingFacility": "UPSTATE",
"crime": [
"ASSAULT 2ND",
"ASSAULT 2ND",
"MANSLAUGHTER 1ST"
],
"crimeClass": [
"D",
"D",
"B"
],
"aggregateMinSentence": "0 Years, 0 Months, 0 Days",
"aggregateMaxSentence": "17 Years, 0 Months, 0 Days",
"admissionType": "NEW COMMITMENT",
"countyOfCommitment": "BRONX",
"dateReceived": "06/18/2026",
"earliestReleaseDate": "01/27/2037",
"earliestReleaseType": "CONDITIONAL RELEASE DATE",
"latestReleaseDate": null,
"latestReleaseType": null,
"conditionalReleaseDate": "01/27/2037",
"paroleEligibilityDate": null,
"maximumExpirationDate": "07/03/2039",
"postReleaseSupervisionMaxExpirationDate": null,
"paroleHearingDate": "11/2036",
"paroleHearingType": "RELEASE CONDITIONS",
"paroleBoardDischargeDate": null,
"otherNames": [
"SMITH, AARON"
],
"otherDins": [
"26B1928"
],
"url": "https://nysdoccslookup.doccs.ny.gov/",
"source": "nysdoccslookup.doccs.ny.gov",
"scrapedAt": "2026-09-14T16:27:50.754Z",
"error": null
}

✨ Why choose this Actor

What you get
The official recordRows come from the department's own lookup, not from a commercial records aggregator.
31 fields, already separatedSix kinds of release date as six columns, offences and classes as matched lists.
Bulk instead of one at a timeThe site answers one search per screen. Here you set a limit and walk away.
No credentialsThe lookup is public. No API key, no account.
You pay per rowA search that matches nobody costs nothing.

🚀 How to use it

  1. Create a free Apify account. New accounts start with $5 of credit.
  2. Open the Actor and select Try for free.
  3. Enter a lastName, and narrow with firstName, middleInitial, dobMonth and dobYear if you have them. Or put a known DIN in din on its own.
  4. Set maxItems to cap the run.
  5. Select Start, then export from the Dataset tab as CSV, Excel, JSON or XML.

A name search:

{
"lastName": "Smith",
"maxItems": 10
}

A narrowed search:

{
"lastName": "Smith",
"firstName": "Aaron",
"dobYear": "1995",
"maxItems": 25
}

A direct lookup:

{
"din": "22R1495",
"maxItems": 1
}

⚙️ Input

FieldRequiredDescription
lastNameNoLast name to search. Required when no din is given
firstNameNoFirst name, to narrow a common surname
middleInitialNoSingle letter
dinNoDepartment Identification Number, for example 23A1234. Used on its own, it goes straight to one record
dobMonthNoBirth month, 1 to 12
dobYearNoFour digit birth year
maxItemsNoMaximum records to collect in a run

💰 Pricing

Pay per result. No subscription, and no Apify platform usage on top.

Apify planFreeBronzeSilverGoldPlatinumDiamond
Per record row$0.021$0.0203$0.0197$0.019$0.019$0.019
Rows collectedCost on the Free plan
100$2.10
1,000$21.00
10,000$210.00

Free plan runs return up to 10 rows as a preview. Any paid Apify plan lifts that cap.

🔌 Integrate with any app

The dataset is available through the Apify API as soon as the run finishes. Use run-sync-get-dataset-items for a one-shot call, webhooks to trigger what happens next, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page.

🤖 Use with an AI agent

Give an agent live access to the lookup over the Model Context Protocol:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=acquistion-automation/new-york-doccs-inmate-scraper"

Then ask it in plain language to check a DIN and read the record back.

❓ Frequently asked questions

Can I search by DIN alone? Yes. Put the DIN in din and leave the name fields empty. A DIN identifies one commitment, so the run returns that record.

Why did one name return several records? The lookup matches on surname. A common name returns many people, and one person can hold several DINs across commitments. Use firstName, dobYear and otherDins to resolve them.

Does url link to the individual record? No. DOCCS serves results from a session rather than a permanent address, so url is the lookup entry point and din is what identifies the record.

Why are some dates null or NONE? Not every date applies to every sentence. NONE is what the department's own page shows. null means the field was absent from that record.

Does it cover people released in the past? The lookup covers people currently in custody and under community supervision, as the department defines it. Coverage is the department's, not this Actor's.

Can I use this to screen employees or tenants? No. This is a public record lookup, not a consumer report, and it is not produced by a consumer reporting agency. Do not use it for employment, housing, credit or insurance decisions. Those uses are governed by the Fair Credit Reporting Act and equivalent state law.

🔗 More from Acquisition Automation Co.

About Acquisition Automation Co.

We build automation for people buying businesses. The repetitive part of an acquisition search, checking listings, pulling public records, tracking owners and assets, is work a machine should do, so the buyer's time goes into judging deals instead of collecting them.

We add new Actors regularly. If there is a source you need and do not see here, tell us.

🆘 Support

Open an issue in the Issues tab of this Actor with your run ID, the input you used, and what you expected to get back.

⚠️ Disclaimer

This Actor is independent and is not affiliated with, endorsed by, or sponsored by the New York State Department of Corrections and Community Supervision or any government agency. It collects only publicly available data, and that data concerns identifiable individuals. It is not a consumer report and must not be used for employment, housing, credit, insurance or any other decision covered by the Fair Credit Reporting Act. Records can be incomplete or out of date; verify with the department before acting on one. You are responsible for using this data in compliance with the source's terms of service and applicable law, including data protection law.