US Restaurant Health Inspections (6 Cities) avatar

US Restaurant Health Inspections (6 Cities)

Pricing

from $1.40 / 1,000 inspection records

Go to Apify Store
US Restaurant Health Inspections (6 Cities)

US Restaurant Health Inspections (6 Cities)

Restaurant health inspections from NYC, Chicago, San Francisco, Austin, Seattle and Cincinnati open data: scores, grades, pass/fail and violations.

Pricing

from $1.40 / 1,000 inspection records

Rating

0.0

(0)

Developer

Greg Huff

Greg Huff

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

What does US Restaurant Health Inspections do?

US Restaurant Health Inspections pulls restaurant and food-facility health inspection results from six official US open-data APIs (New York City, Chicago, San Francisco, Austin, King County (Seattle) and Cincinnati) and gives them back in one normalized format: one record per inspection with the establishment, address, date, inspection type, the score or grade exactly as the department published it, a normalized pass / conditional / fail result, and every violation with its code, description and critical flag where the department publishes one.

Every record links back to the official dataset and to the exact API query it came from. Nothing is scraped from inspection websites: the Actor reads only the published Socrata (SODA) JSON endpoints, which the departments provide for public reuse. No API key, no login, no proxy.

  • ✅ Six health departments, one schema: stop writing six parsers for six column layouts.
  • 🔎 Filter at the source: business name, street, ZIP or ZIP prefix, date range, violation severity, result.
  • 🏷️ Latest inspection per establishment: one row per restaurant for snapshots and monitoring.
  • 💸 Pay only for records: $1.70 per 1,000 inspections, nothing for empty queries.
  • ⏱️ Fast: 3,000 inspections across all six jurisdictions took 12 seconds in our test run.

Who uses inspection data?

  • Food-delivery and restaurant analysts: flag partners with failed or closure inspections, score markets.
  • Restaurant software vendors (POS, food safety, compliance): find prospects that just failed or were re-inspected, enrich CRM records.
  • Insurers and underwriters: inspection history and critical violations per location.
  • Local journalists: weekly lists of closures and failed inspections by neighborhood or ZIP.
  • Franchise and multi-unit operators: monitor every one of your locations ("starbucks", "chipotle") across cities in one run.

What data can you extract?

FieldExampleNotes
jurisdictionnycnyc, chicago, san-francisco, austin, king-county, cincinnati
establishmentId50071318The department's own id (CAMIS, license, permit, business id)
nameTHE COFFEE CLUBBusiness (DBA) name as published
address, city, state, zip9526 4 AVENUE, Brooklyn, NY, 11209San Francisco publishes no ZIP
latitude, longitude40.6156, -74.0313Where published (not King County)
inspectionDate2026-10-15YYYY-MM-DD
inspectionTypeCycle Inspection / Initial InspectionAs published
scorePublished20As published; direction differs by city (see below)
gradePublishedANYC letter grade, King County rating, Austin color band
resultPublishedViolations were cited in the following area(s).The department's own words
resultconditionalNormalized: pass, conditional, fail, or null
violationCount, criticalViolationCount4, 3Critical count only where a flag is published
violationscode, description, critical, criticalPublished, points, commentsnull for Austin (scores only)
detailscuisine, risk level, facility type, permit type, neighborhoodJurisdiction-specific extras
sourceDatasetUrl, sourceApiUrlhttps://data.cityofnewyork.us/d/43nn-pn8jOfficial dataset page and the query used
scrapedAt2026-10-17T04:46:45.898ZWhen the record was saved

Jurisdictions, fields, update cadence and licenses

All six were checked on 2026-10-17 through each dataset's metadata (/api/views/<id>.json) and live queries.

JurisdictionDatasetRows (2026-10-17)UpdatedWhat it publishesCritical flagLicense / terms
New York City, NY (DOHMH)43nn-pn8j~297,000 violation rows for currently active restaurants (oldest 2007)Dailyscore (points, lower is better), letter grade, action, cuisine, violationsYes: Critical / Not CriticalNo license on the dataset record; NYC Open Data terms of use
Chicago, IL (CDPH)4ijn-s7e5~317,000 inspections since 2010Dailyresult (Pass / Pass w/ Conditions / Fail...), risk level, facility type, violations with inspector commentsNoCity of Chicago Data Terms of Use (as-is, no warranty)
San Francisco, CA (DPH)tvy3-wexg~22,800 inspections since 2024Dailyrating status (Pass / Conditional Pass / Closure), permit type, violation codes and textNoODC Public Domain Dedication (PDDL) 1.0
Austin, TX (Austin Public Health)ecmv-9xxi~20,400 inspections since Oct 2023Every 2 weeksscore out of 100, color band; no violation detailNoPublic Domain
King County / Seattle, WAr878-4sxa~110,000 violation rows since 2021Frequent (no stated cadence; updated 2026-10-16)score (points, lower is better), Satisfactory / Unsatisfactory, rating, risk category, violations with pointsYes: RED / BLUEPublic Domain
Cincinnati, OHrg6p-b3h3~346,000 violation rows since 2009Frequent (no stated cadence; updated 2026-10-17)action status (Approved / Not In Compliance), license, neighborhood, violations with commentsNoPublic Domain

How is the normalized result decided?

The departments use different words, so result is our mapping; resultPublished, scorePublished and gradePublished always keep the original.

Jurisdictionpassconditionalfailnull
NYCgrade A or score 0-13; re-openedgrade B or score 14-27grade C or score 28+; closed by DOHMHno score or grade (administrative)
ChicagoPassPass w/ ConditionsFailOut of Business, No Entry, Not Ready
San FranciscoPassConditional PassClosureno status published
Austinscore 90+70-89under 70no score
King CountySatisfactory(none)UnsatisfactoryComplete (educational visits)
CincinnatiApproved - No Violations / Violations AbatedApproved - Minor ViolationsNot In ComplianceCancelled and other statuses

How to use it

  1. Click Try for free (or Start).
  2. Pick the Jurisdictions you need (all six by default).
  3. Optionally filter by Business name contains, Street address contains, ZIP code (or prefix) and an Inspected from / to date range (absolute, or relative like "90 days").
  4. Choose a Minimum violation severity and a Normalized result if you only want, say, failed inspections with a critical violation.
  5. Turn on Only the latest inspection per establishment for one row per restaurant.
  6. Set Maximum inspections, click Start, then download JSON, CSV or Excel from the Output tab or read it through the Apify API.

Input example

This is the prefilled input: the 10 newest inspections from each jurisdiction.

{
"jurisdictions": ["nyc", "chicago", "san-francisco", "austin", "king-county", "cincinnati"],
"maxItems": 60
}

Failed inspections with a critical violation in the last 30 days, one per restaurant:

{
"jurisdictions": ["nyc", "king-county"],
"dateFrom": "30 days",
"minSeverity": "critical",
"results": ["fail"],
"onlyLatestPerEstablishment": true,
"maxItems": 500
}

Output example

{
"jurisdiction": "nyc",
"jurisdictionName": "New York City, NY (DOHMH)",
"recordId": "nyc:50071318:2026-10-15:Cycle Inspection / Initial Inspection",
"establishmentId": "50071318",
"name": "THE COFFEE CLUB",
"address": "9526 4 AVENUE",
"city": "Brooklyn",
"state": "NY",
"zip": "11209",
"latitude": 40.615596980304,
"longitude": -74.031285941951,
"inspectionDate": "2026-10-15",
"inspectionType": "Cycle Inspection / Initial Inspection",
"scorePublished": 20,
"gradePublished": null,
"resultPublished": "Violations were cited in the following area(s).",
"result": "conditional",
"violationCount": 4,
"criticalViolationCount": 3,
"violations": [
{
"code": "04L",
"description": "Evidence of mice or live mice in establishment's food or non-food areas.",
"critical": true,
"criticalPublished": "Critical",
"points": null,
"comments": null
},
{
"code": "08A",
"description": "Establishment is not free of harborage or conditions conducive to rodents, insects or other pests.",
"critical": false,
"criticalPublished": "Not Critical",
"points": null,
"comments": null
}
],
"details": { "borough": "Brooklyn", "cuisine": "Coffee/Tea", "gradeDate": null, "scoreNote": "Lower is better (0-13 = A, 14-27 = B, 28+ = C)." },
"sourceDatasetUrl": "https://data.cityofnewyork.us/d/43nn-pn8j",
"sourceApiUrl": "https://data.cityofnewyork.us/resource/43nn-pn8j.json?$where=...",
"scrapedAt": "2026-10-17T04:46:45.898Z"
}

(Two of the four violations shown.) sample-output.json next to this README has full records.

How much does it cost to get restaurant inspection data?

This Actor uses pay-per-event pricing: a fixed price per inspection record saved, nothing for platform compute.

EventPriceWhen it is charged
Inspection record$1.70 per 1,000 ($0.0017 each)Each inspection saved to your dataset
Actor start$0.00005 per GB of memoryOnce when a run starts, charged by Apify

Apify Silver subscribers pay $1.50 and Gold $1.40 per 1,000. Example: a weekly run of 2,000 inspections costs about $3.40. The free Apify plan's monthly credit covers a few thousand records.

You stay in control: set Maximum inspections, or a maximum cost per run in the run options, and the Actor stops cleanly when it gets there.

Limits

  • Six jurisdictions only. Other cities publish inspections in other formats; Los Angeles County, for example, publishes CSV files rather than a query API, so it is not included.
  • Austin publishes scores only, with no violation detail: violations is null and Austin is skipped by the violation filters.
  • Critical flags are published only by NYC and King County. "At least one critical violation" skips the other four, and criticalViolationCount is null there.
  • San Francisco has no ZIP column and is skipped when you filter by ZIP. Its violations are parsed from one text field; details.violationCountPublished keeps the department's own count, which can differ by one.
  • Scores are not comparable across cities: NYC and King County count penalty points (lower is better), Austin scores out of 100.
  • Maximum inspections is shared evenly across the chosen jurisdictions, smallest result sets first, so unused capacity rolls over to the bigger ones.
  • The data is only as fresh and correct as each department's feed; future-dated and placeholder dates (for example 1900-01-01) are dropped.
  • Socrata throttles anonymous use by IP. Normal runs never hit it; for very large runs add a free Socrata app token in Advanced settings.

FAQ

These are public records that the health departments publish on their open-data portals for reuse. Four datasets are public domain or PDDL; Chicago and NYC publish under their portals' terms of use, which provide the data as-is. Check the terms yourself before republishing at scale.

Does it scrape restaurant inspection websites?

No. It reads only the official Socrata open-data APIs listed above. No browser, no login, no proxy.

Can I monitor new inspections every day?

Yes. Schedule the Actor with Inspected from set to "2 days" and connect a webhook, Google Sheets, Make, Zapier or n8n. Use recordId to de-duplicate across runs.

Can you add my city?

Open an issue with the city or county. Any department that publishes inspections through an open-data API can be added.

Support

Found a problem or a field that looks wrong? Open an issue on the Issues tab with the run ID and the recordId, and we will look at it.