NYC Restaurant Health Inspection Scraper avatar

NYC Restaurant Health Inspection Scraper

Pricing

$3.00 / 1,000 result rows

Go to Apify Store
NYC Restaurant Health Inspection Scraper

NYC Restaurant Health Inspection Scraper

Every NYC DOHMH restaurant health inspection violation in a date window: business name, address, borough, inspection date, score, letter grade, and violation detail. Read live from NYC Open Data on every run.

Pricing

$3.00 / 1,000 result rows

Rating

0.0

(0)

Developer

US Tech Automations

US Tech Automations

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Find NYC Health Code Violations by Date and Borough

For restaurant compliance managers: pull every inspection violation in a date window as one row each, without downloading NYC's entire multi-year dataset yourself.

Pick a date window and get one row for every violation cited on an NYC restaurant health inspection in it: the business, its address, the inspection date, the score and letter grade, and the specific violation. An inspection that found no violations still gets one row.

Introduction

Every restaurant, delicatessen, and college cafeteria in New York City is inspected by the Department of Health and Mental Hygiene (DOHMH), which publishes the result of every inspection — sustained or not-yet-adjudicated violations, the numeric score, and the letter grade — as open data. This Actor reads that dataset live from NYC's own Open Data API on every run. Nothing is stored between runs and nothing is invented if NYC's API is down.

Tutorial

  1. Set Inspected on or after and Inspected on or before to your date window. Both days are included.
  2. Optionally set Borough to one of the five boroughs, or leave it blank for citywide results.
  3. Optionally set ZIP code to one 5-digit code.
  4. Set Maximum rows to your spend cap. Every row bills, so this is also the most a single run can cost.
  5. Click Start. Results land in the dataset.

Pricing

$0.003 per row. No start fee.

A run that finds 200 qualifying violation-citation rows in your window costs $0.60. A run that finds none — a quiet window, or a ZIP code with no inspections that week — costs nothing.

Maximum rows is the spend cap: the run cannot cost more than that number multiplied by $0.003, whatever the window holds.

Reading the score correctly

NYC's score is a penalty-point count, not a quality percentage: fewer points is better. NYC's own grade bands are 0-13 points = A, 14-27 = B, 28 or more = C. A Z or P grade means the inspection is pending appeal. The signal worth acting on is a high score, a B or C grade, or a violation line with critical_flag set to Critical — not a low score.

Input and output examples

Input:

{"inspectedAfter": "2026-08-15", "inspectedBefore": "2026-09-15", "borough": "Brooklyn", "maxItems": 50}

Output (one row, from a live run on 2026-09-15):

{
"camis": "50063129",
"dba": "PUBLIC ARTS / ARTSPACE",
"boro": "Manhattan",
"address": "215 CHRYSTIE ST/PUBLIC KITCHEN",
"zipcode": null,
"phone": "2127356000",
"cuisine_description": "American",
"inspection_date": "2026-09-13",
"inspection_type": "Cycle Inspection / Initial Inspection",
"action": "Violations were cited in the following area(s).",
"violation_code": "04F",
"violation_description": "Food preparation area, food storage area, or other area used by employees or patrons, contaminated by sewage or liquid waste.",
"critical_flag": "Critical",
"score": 65,
"grade": "N",
"grade_date": null,
"latitude": null,
"longitude": null,
"record_date": "2026-09-14",
"attribution": "Source: NYC Department of Health and Mental Hygiene (DOHMH), \"DOHMH New York City Restaurant Inspection Results\", published on NYC Open Data (data.cityofnewyork.us), dataset 43nn-pn8j. Made available under NYC Administrative Code Title 23, Chapter 5 (Local Law 11 of 2012), which requires public data sets to be provided without registration, licence, or use restriction.",
"source_url": "https://data.cityofnewyork.us/resource/43nn-pn8j.json?camis=50063129&inspection_date=2026-09-13T00%3A00%3A00.000&violation_code=04F",
"fetched_at": "2026-09-15T16:59:43Z"
}

Every field in a row:

FieldWhat it holds
camisNYC's own unique ID for the establishment
dbaThe business's "doing business as" name
boroManhattan, Brooklyn, Queens, Bronx, or Staten Island
addressStreet number and street, as published (a shared kitchen or food-hall stall may carry an extra descriptor after the street name)
zipcode5-digit ZIP, when NYC published one for this row
phoneThe establishment's own listed business phone
cuisine_descriptionNYC's own cuisine category
inspection_dateDate of this inspection
inspection_typee.g. "Cycle Inspection / Initial Inspection", "Pre-permit (Operational) / Initial Inspection"
actionNYC's own summary line for this inspection's outcome
violation_code / violation_descriptionThe specific citation on this row; both are empty when the inspection found no violations
critical_flagCritical, Not Critical, or Not Applicable
scorePenalty points for this inspection (see "Reading the score correctly" above)
gradeA, B, C, Z (pending, graded at the door), P (pending, on appeal), or N (not yet graded)
grade_dateDate the grade was issued, when one has been
latitude / longitudeCoordinates, when NYC geocoded this address; left blank rather than shipped as 0, 0 when it did not
record_dateThe date NYC's own systems compiled this record
attributionThe required source and licence credit line
source_urlA live NYC Open Data query that returns this exact violation citation
fetched_atWhen this run read NYC Open Data, in UTC

Recommendations

Run weekly with a 7-8 day window covering the prior week, and filter by Borough or ZIP code when only one territory matters, to keep each run's cost tied to the locations actually being tracked.

Limitations

Row grain matches NYC's own dataset. One row is one violation citation from one inspection. An inspection with four violations produces four rows that repeat the same business, date, score, and grade with a different violation_code on each. An inspection with none produces exactly one row with violation_code left empty.

Not every address is geocoded. NYC leaves latitude/longitude (and sometimes zipcode) blank on some rows, most often shared kitchens, food halls, and newly-registered locations. This Actor passes that through as null rather than guessing.

Three-year rolling window, at NYC's discretion. NYC's own dataset description states it holds violations "up to three years prior to the most recent inspection" for restaurants currently active; a closed restaurant's older history can drop out of NYC's own source, not this Actor.

A source outage returns nothing, not guesses. If NYC Open Data cannot be reached or answers with an error, the run pushes no rows, costs nothing, and writes a status of UNKNOWN with the error to OUTPUT.

FAQ

Where does the data come from? NYC Open Data's own Socrata API, dataset 43nn-pn8j, published by the Department of Health and Mental Hygiene. Read live on every run, never from a stored copy.

Does it need an API key or a login? No. NYC Administrative Code Title 23, Chapter 5 requires this data be available without registration, licence, or use restriction.

Why did I get fewer rows than Maximum rows? Either the window and filters held that many violation citations and no more, or the run hit Maximum rows first.

What happens if NYC Open Data is down? The run pushes no rows, costs nothing, and writes a status of UNKNOWN with the error to OUTPUT. It never fills the gap with made-up rows.

Is there support? Issues can be raised through the Apify Store issues tab for this actor. No response time is promised.

Refunds and support

Refunds: if a run returns zero rows for a valid input, email operations@ustechautomations.com within 7 days and we refund that run. Support: same address, replies within 2 business days.