Restaurant Health Inspection Scraper - NYC, Chicago, Austin
Pricing
from $16.80 / 1,000 inspection records
Restaurant Health Inspection Scraper - NYC, Chicago, Austin
Scrape restaurant health inspections from NYC, Chicago and Austin in one run: inspection results, scores, each individual violation and restaurant profiles, normalized into one dataset. Search by name. No login or API key. Export CSV, Excel, JSON. 3 record types, from $0.01.
Pricing
from $16.80 / 1,000 inspection records
Rating
0.0
(0)
Developer
RecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
🍽️ Restaurant Health Inspection Scraper: 7 US Cities
Restaurant Health Inspection Scraper returns official health inspection results, individual violations and restaurant profiles from New York City, Chicago, Austin, King County (Seattle), New York State, San Francisco and Boston in one normalized dataset. Filter by name, ZIP, date, score and violation text, or monitor only new inspections. No login or API key. Pay per record: inspections $0.02, violations and profiles $0.01 each. Export to CSV, Excel or JSON.
RecordsData's Restaurant Health Inspection Scraper reads each jurisdiction's own open-data portal and maps seven schemas into one set of fields, paging each portal until maxItems is reached. In a cloud run on 2026-10-10 with all seven cities and inspectedSince 2026-09-01, it returned 150 rows (46 inspections, 59 violations, 45 profiles) in 11 seconds, and billing matched the delivered rows exactly.
🔎 What does the Restaurant Health Inspection Scraper do?
- Filter on the portal side by ZIP code, restaurant ID, date window, result text, score range, critical violations and violation keyword. Skipped rows cost nothing.
- Get one
inspection-recordper real inspection visit, oneviolation-recordper cited violation, and one deduplicatedrestaurant-profile-recordper restaurant. - Compare cities with a normalized
outcomeand ascoreMeaningsentence, whileresultkeeps the portal's own words. - Turn on
onlyNewto skip inspections delivered in earlier runs; skipped ones are not charged. - Leave the name blank for the latest inspections; export to CSV, Excel, JSON or XML.
📋 What restaurant inspection data can you extract?
Each row uses the same 41 keys in a fixed order. The main ones:
| Field | Type | Notes |
|---|---|---|
recordType | string | inspection-record, violation-record or restaurant-profile-record |
city, state | string | One of the seven jurisdictions and its state code |
restaurantId, inspectionId | string | The portal's own ids; an id matches only in its own city |
restaurantName, akaName | string | Business name; also-known-as name in Chicago |
address, locality, zipCode | string | Address, borough or city, ZIP (none in San Francisco) |
county, neighborhood | string | New York State county; San Francisco neighborhood |
latitude, longitude | number | Not published by King County; zero coordinates in NYC are dropped |
phone, cuisine | string | New York City only |
facilityType, seatingRange, closedBusiness | string | Where the portal publishes them (King County for the last two) |
inspectionDate, inspectionType | string | Future dates and dates before 2000 are never returned |
result, resultDetail | string | Portal wording: grade, Pass, Fail, Satisfactory |
outcome | string | Normalized: pass, pass-with-conditions, fail or closed |
grade, score, scoreMeaning | string | NYC and King County grade; score where published; which direction is better |
riskLevel | string | Chicago and King County |
violationCount, criticalViolationCount | number or string | Counts; critical count in NYC, King County and New York State |
violationCode, violationDescription | string | Violation records |
violationComments, violationLevel, violationPoints, violationStatus | string | Chicago and Boston comments, King County level and points, Boston status |
violationSummary | string | San Francisco only: one summary text per inspection |
criticalFlag | string | Critical / Not Critical where the portal has it |
source, scrapedAt | string | Link to the portal dataset; UTC time of the run |
The original fields keep "N/A" where a portal has no value. Newer fields are left out when empty. Austin and San Francisco publish no per-violation rows.
🧾 Restaurant inspection scraper sample output
Real rows from a cloud run searching pizza (NYC, Chicago and Austin, maxItems 10). They predate the newest columns, so outcome, scoreMeaning and coordinates are not shown; see the table above.
{"recordType": "inspection-record","city": "New York City","restaurantId": "50041997","restaurantName": "TOSKANA PIZZERIA","inspectionDate": "2026-09-30T00:00:00.000","result": "Z","score": "57","violationCount": 11,"scrapedAt": "2026-10-04T04:42:06.549Z"}
{"recordType": "violation-record","city": "New York City","restaurantId": "50041997","restaurantName": "TOSKANA PIZZERIA","inspectionDate": "2026-09-30T00:00:00.000","violationCode": "04L","violationDescription": "Evidence of mice or live mice in establishment's food or non-food areas.","criticalFlag": "Critical","scrapedAt": "2026-10-04T04:42:07.039Z"}
💰 How much does it cost to scrape restaurant health inspections?
Pay per event, only for records saved to your dataset.
| Event | Price (free plan tier) | What it is |
|---|---|---|
inspection-record | $0.02 ($0.0168 on Gold) | One inspection visit |
violation-record | $0.01 | One cited violation |
restaurant-profile-record | $0.01 | One unique restaurant, once per run |
Worked examples at free plan prices. The 150-row cloud run (46 inspections, 59 violations, 45 profiles) cost 46 x $0.02 + 104 x $0.01 = $1.96. An 800-row run (221 inspections, 359 violations, 220 profiles) cost $4.42 + $5.79 = $10.21, about $12.76 per 1,000 records at that mix. 1,000 violation records alone cost $10.00. Failed fetches, empty searches, error rows and inspections skipped by onlyNew are never charged, and the run stops at your maximum charge limit. Paid plans get lower inspection prices; the Store page shows current ones.
🚀 How to scrape restaurant health inspections (3 steps)
- Pick one or more cities.
- Type a name such as
pizza, add filters such aszipCodesorinspectedSince, and setmaxItems. - Click Start, then download the dataset.
⚙️ Restaurant health inspection scraper input
| Field | Type | Default | Description |
|---|---|---|---|
cities | array | NYC, Chicago, Austin | nyc, chicago, austin, king-county, ny-state, san-francisco, boston |
restaurantName | string | empty | Name to search for; blank returns the most recent inspections |
zipCodes | array | empty | Only these 5-digit ZIP codes (San Francisco is skipped) |
restaurantIds | array | empty | Only these restaurants, by restaurantId |
inspectedSince, inspectedUntil | string | empty | Date window, YYYY-MM-DD |
resultContains | string | empty | Text in the result, such as fail, pass or closed |
minScore, maxScore | integer | empty | Score range; direction differs by city, see scoreMeaning |
criticalOnly | boolean | false | Only critical violations (NYC, King County, New York State) |
violationKeyword | string | empty | Text in the violation description, such as rodent |
maxItems | integer | 10 | Max records across all cities and record types; free users are limited to 10 |
maxRowsPerCity | integer | 0 | Optional safety cap on source rows per city; 0 means no cap |
onlyNew | boolean | false | Skip inspections already delivered for the same search |
stateKey, resetSeen | string, boolean | empty, false | Name the monitor memory; forget it and start over |
{ "cities": ["nyc", "king-county", "boston"], "inspectedSince": "2026-09-01", "criticalOnly": true, "onlyNew": true, "maxItems": 100 }
A city whose portal has no data for a filter is skipped and named in the run status instead of returning unfiltered rows; if every selected city is skipped the run fails with a message naming each, charging nothing. With criticalOnly or violationKeyword, violation rows and counts cover the matching violations only.
📦 Restaurant health inspection scraper output
The Overview view shows record type, city, restaurant, date, result, score and violation text. A search with no match finishes as SUCCEEDED with a status message and zero charges. If every city portal is unreachable, the run fails with an explicit message and nothing is charged.
Not delivered: Cincinnati, Montgomery County, and derived flags such as repeat offender, because a filtered search returns only part of a restaurant's history.
📊 Restaurant inspection scraper vs alternatives
Read on 2026-10-10 from each public Store page; "not stated" means their listing does not show it.
| Dimension | This Actor | maydit | straightforward_hydra |
|---|---|---|---|
| Cities | 7 incl. San Francisco, Boston, NY State | 7 incl. Cincinnati, Boulder, Montgomery | 5 incl. San Francisco |
| Filters | Name, ZIP, ID, dates, score, critical, keyword | Name, dates, result text | Name, ZIP, score, dates, keyword |
| Only-new mode | Yes, skipped rows are free | Not stated; dedupe left to you | Not stated; schedule with a date |
| Record types | Inspection, violation, profile rows | Flat rows with a granularity field | Flat rows, optional raw record |
| Price from | $0.02 inspection, $0.01 other | $2.40 per 1,000 | $3.00 per 1,000 |
This Actor costs several times more per row than both. What the price buys is a deduplicated restaurant profile, a normalized outcome with score direction, and a monitor mode that skips seen inspections for free. Cincinnati, Boulder and Montgomery County are covered only by maydit. c0rrupt3d (NYC and Chicago, from $5.00 per 1,000) lists risk scores and repeat-offender flags that we do not compute. scrapemint ($10.00 per 1,000 rows) has a dedupe option too. If you need a flat, cheap feed, a rival fits better.
🧑💼 Restaurant inspection data use cases
Food safety and compliance teams, insurers, review and discovery apps, journalists and lead-generation teams (schedule onlyNew runs to catch restaurants that just failed an inspection) use this data.
🔌 Run via API, schedule and integrations
curl -X POST "https://api.apify.com/v2/acts/RecordsData~restaurant-health-inspection-aggregator/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"cities":["nyc","chicago","san-francisco"],"restaurantName":"pizza","inspectedSince":"2026-09-01","maxItems":10}'
Use the Apify client for Python or JavaScript, schedule daily runs, or connect the dataset to Zapier, Make, n8n or Google Sheets.
🤖 Restaurant health inspection scraper MCP server for AI agents (Claude, Cursor, VS Code)
Connect this actor to any MCP client through the Apify MCP server. Use this URL, which exposes only this actor as a tool:
https://mcp.apify.com?tools=RecordsData/restaurant-health-inspection-aggregator
Config for clients that take a JSON MCP config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=RecordsData/restaurant-health-inspection-aggregator"}}}
Example agent prompt: "Use the restaurant health inspection scraper to find inspections since 2026-09-01 for restaurants named pizza in New York City and San Francisco, and list the critical violations with the inspection date. Run it again next week with onlyNew on to see just the new ones."
Choose this tool when an agent needs official restaurant health inspection results, violations or restaurant profiles for seven US jurisdictions. It takes the same input as the actor (cities, restaurantName, zipCodes, inspectedSince, minScore, criticalOnly, violationKeyword, onlyNew, maxItems and more); keep maxItems small for agent runs.
⚖️ Is it legal to scrape restaurant health inspection data?
The data comes from public open-data portals run by cities, counties and states, which publish it for public use. The Actor reads only that public data, needs no login and bypasses nothing. Operator, owner and inspector names are not delivered. Check each portal's terms and your local rules for how you use the data. This is not legal advice.
❓ Frequently asked questions
Which cities does the Restaurant Health Inspection Scraper cover?
The Restaurant Health Inspection Scraper covers seven jurisdictions, each read from its own official open-data portal: New York City, Chicago, Austin, King County (Seattle area), New York State outside NYC, San Francisco and Boston. Pick one or several in the cities field and the results come back in one normalized dataset. Cincinnati and Montgomery County are not covered yet.
Does the restaurant health inspection scraper include individual violations?
Yes for New York City, Chicago, King County, New York State and Boston: each cited violation is its own violation-record with code and description. San Francisco keeps its violations as one summary text per inspection, and Austin publishes only a score, so Austin returns inspection and profile records but no violation rows.
Why did I get 0 results from the Restaurant Health Inspection Scraper?
Your name or filters matched nothing in the selected cities, or a filter is not supported by a city and that city was skipped (the run status names it). Try a shorter name such as pizza, widen the date window or remove filters. A search with no match still ends as succeeded and the Restaurant Health Inspection Scraper charges nothing for it.
Why do restaurant inspection results look different per city?
Each portal publishes a different schema: NYC gives a letter grade plus a score where lower is better, Chicago gives Pass, Pass w/ Conditions or Fail, and Austin gives a score band. The Restaurant Health Inspection Scraper keeps the portal's own words in result, adds a normalized outcome (pass, pass-with-conditions, fail or closed) and a scoreMeaning sentence saying whether a higher or lower score is better.
Why are some restaurant inspection fields marked N/A?
The original fields (such as score, violation count and critical flag) keep the string N/A when a portal does not publish them, so existing pipelines do not break and you know it is a source limit. Newer fields, such as coordinates, phone and cuisine, are simply left out when empty. For example, Chicago publishes no numeric score and King County publishes no coordinates.
How is the restaurant profile billed in the Restaurant Health Inspection Scraper?
A restaurant-profile-record is charged once per unique restaurant in a run, not once per inspection, at $0.01. If the same restaurant appears in many inspection rows, the Restaurant Health Inspection Scraper still creates and bills only one profile record for it in that run.
Do I need an API key to scrape restaurant health inspections?
No. The Restaurant Health Inspection Scraper reads public open-data portals, so you need no login, no session and no API key. You only need an Apify account to run the actor, and free plan users get a 10-record preview per run, which is enough to check the output before you pay.
How fresh is the restaurant inspection data?
The data is as fresh as each portal, because the Restaurant Health Inspection Scraper reads them live on every run. In the 2026-10-10 cloud checks, inspections dated 2026-10-09 were returned. Schedule a daily run with onlyNew on to get only inspections you have not received before, at no charge for the ones skipped.
Why did my Restaurant Health Inspection Scraper run stop early?
The run reached your maxItems value, your maximum charge limit per run, or the optional maxRowsPerCity cap. A city with no new matching inspection for 45 seconds also stops, so an onlyNew run with nothing new ends quickly. Because each inspection is followed by its own violations, a small maxItems can be filled by one violation-heavy inspection.
🔗 Want more public-records data? Other RecordsData scrapers
- NHTSA Vehicle Safety Aggregator
- Healthcare Provider Payments Scraper
- Federal Contracts Spending Scraper
🆘 Support
Open an issue on the Actor's Issues tab or write to contact.punkrecordsdata@gmail.com. This is an independent tool, not affiliated with any of the listed cities, counties or states.
Last updated: 2026-10-11