Restaurant Inspection Evidence — 7 Official Jurisdictions avatar

Restaurant Inspection Evidence — 7 Official Jurisdictions

Pricing

from $2.20 / 1,000 verified inspection records

Go to Apify Store
Restaurant Inspection Evidence — 7 Official Jurisdictions

Restaurant Inspection Evidence — 7 Official Jurisdictions

Start with a small Chicago query: {"cities":["chicago"],"maxRecordsPerCity":10}. Get official inspection records plus RUN-RECEIPT source status and freshness. Seven supported jurisdictions. Review Pricing and your run limit before starting; results are bounded, not safety guarantees.

Pricing

from $2.20 / 1,000 verified inspection records

Rating

0.0

(0)

Developer

Bryan

Bryan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

12 days ago

Last modified

Share

This Actor retrieves official restaurant and food-facility inspection records from seven government feeds and preserves each jurisdiction's meaning. It does not translate unlike scores into a fake national ranking.

Verified source coverage

Live bounded canaries ran on 2026-08-08 against every source:

JurisdictionOfficial datasetPortalNewest row observedFreshness
New York City, NY43nn-pn8jSocrata2026-08-06current
Chicago, IL4ijn-s7e5Socrata2026-08-05current
Austin, TXecmv-9xxiSocrata2026-05-22aging
Cincinnati, OHrg6p-b3h3Socrata2026-08-06current
Boulder County, CO6ytb-f2cqSocrata2026-07-21current
Montgomery County, MDdkrp-gr48Socrata2026-08-06current
King County, WAr878-4sxaSocrata2026-08-06current

current, aging, and stale describe the newest row returned by the bounded canary. They do not guess why a publisher has not posted newer records. This makes nominal coverage distinguishable from currently updating coverage.

Evidence contract

Every record includes:

  • stable record_key and content-based record_fingerprint;
  • published business and inspection identifiers where available;
  • facility type, risk, geocode, critical flag, violation code, and violation detail where published;
  • explicit score_direction and source_row_grain;
  • official source URL, dataset ID, portal, attribution, fetch time, and source status; and
  • the original source row in raw, with configured phone fields removed.

The Actor also writes RUN-RECEIPT to its default key-value store. The receipt contains requested jurisdictions, effective limits and filters, per-source counts, newest observed dates, freshness, errors, warnings, completeness, and a canonical SHA-256 receipt_hash.

Input

FieldMeaning
citiesAny subset of nyc, chicago, austin, cincinnati, boulder, montgomery, king_county.
businessNameContainsCase-insensitive establishment substring.
resultContainsJurisdiction-published result/grade substring; scores are never converted into grades.
since / untilInclusive YYYY-MM-DD inspection range.
maxRecordsPerCityNewest-first bound from 1 to 5,000 per jurisdiction.
socrataAppTokenOptional caller-owned Socrata app token, kept secret and sent only as X-App-Token.

Interpretation boundaries

  • NYC scores are lower-is-better; Austin scores are higher-is-better; other jurisdictions may publish no score or a source-specific score. Compare within a jurisdiction unless a qualified analyst defines a documented transformation.
  • Some feeds publish one row per inspection and others one row per violation. source_row_grain makes this explicit.
  • A stale feed is still factual historical data, but it is not described as current monitoring.
  • A bounded query is not a claim that the Actor enumerated every matching record.

Tests

npm test checks normalization, identity keys, stable fingerprints, date bounds, ArcGIS pagination, source receipts, and receipt hashing. npm run test:live performs a bounded official-source pull. node test_sources_live.mjs canaries all seven sources and prints their observed freshness.

Named-portfolio material comparison

Provide portfolio: [{ reference, jurisdictionId, businessId }] for 1-25 exact establishments; an optional exact-normalized expectedAddress flags identity review. This mode does not fuzzy-match names. It rereads all available published history up to the observation date, capped by maxRowsPerSite (default 1,000, maximum 5,000), with one extra row to detect truncation. Date/name/result filters are rejected in portfolio mode so a recent-date watermark cannot hide corrections to older records.

The first complete query establishes a baseline. Subsequent calls require the private previousSnapshot and previousSnapshotReceiptHash. Results identify APPEARED, CHANGED, and NOT_RETURNED_IN_COMPLETE_QUERY inspections, preserving the agency's row grain and scores. The latter is not proof of deletion or safety. Exact duplicate rows collapse; violation-grain records are compared as a set within the inspection. Stable event IDs make retry delivery deduplicable. Partial/outage/identity-failure observations cannot advance the last accepted per-site baseline or prove disappearance.

The default dataset contains normalized official-source records, using the existing per-record event (including separate violation-grain records where the agency uses that grain). A comparison is not billed or labeled as one inspection. After exact dataset readback, PORTFOLIO-SNAPSHOT, PORTFOLIO-COMPARISON and PORTFOLIO-DELIVERY-RECEIPT are published as sidecars of that emitted scope. Partial, unavailable or identity-conflicted sites expose no new source rows in the sidecars; their caller-provided baseline is retained. Insufficient allowance for the full accepted record batch stops before any append or useful sidecar. A 4 MB batch bound requires splitting larger named portfolios. Zero results do not invent a billable inspection record; the existing startup terms still apply.

Dataset append is attempted once. An uncertain append is only read back, never blindly retried; a retained hash-only intent permits same-run sidecar recovery from the exact emitted rows without another source query or append. Persistent missing, partial or conflicting dataset evidence leaves sidecars withheld. Separate runs remain separate source queries and billable deliveries. Caller storage, authenticated review, compare-and-swap, delivery and acknowledgement remain destination responsibilities: a hash alone does not authenticate prior state. Source tests: node test_portfolio.mjs. Publication, paid-market validation and destination delivery are separate release gates.