Boston Restaurant Inspections Scraper — Health Violations avatar

Boston Restaurant Inspections Scraper — Health Violations

Pricing

from $2.10 / 1,000 result rows

Go to Apify Store
Boston Restaurant Inspections Scraper — Health Violations

Boston Restaurant Inspections Scraper — Health Violations

Scrape City of Boston restaurant and food establishment inspections (ISD Health Division) via the official data.boston.gov API: every cited violation with severity, status and inspector comments, result, license and address. Filter by date, neighborhood, ZIP, name, result. Export CSV, Excel, JSON.

Pricing

from $2.10 / 1,000 result rows

Rating

0.0

(0)

Developer

John

John

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

The Boston restaurant inspections scraper gives you one row per cited violation (or, with onePerInspection, one row per inspection) for Boston, Massachusetts, straight from the City of Boston Inspectional Services Department (Health Division) via the official data.boston.gov open-data API. No login or coding needed: run it in your browser, on a schedule, or through the Apify API, and export results as JSON, CSV or Excel.

Get City of Boston restaurant and food establishment health inspections as a clean, filterable list: every cited violation with its severity (Priority, Priority Foundation, Core), Pass/Fail status and the inspector's comments, plus the inspection result, business name, owner, food license, address, neighborhood and coordinates. Data comes from the Inspectional Services Department (ISD) Health Division through the official open-data API (data.boston.gov dataset "Food Establishment Inspections"). The portal marks the dataset as updated daily (last refresh at build time: 2026-10-18; newest inspection 2026-10-16).

What you get

By default each row is one cited violation (or one no-violation line) from one inspection, as published by the City of Boston (~905,000 rows since 2006; about 3.8 rows per inspection). The source has no inspection ID, so rows carry a derived inspectionKey (license number + inspection time). Set onePerInspection: true to get one row per inspection with all of its violations in a violations list and counts by severity. Rows are sorted newest inspection first, then license number, with an _id tiebreak, so a single run does not skip or repeat rows. The city reloads the dataset daily (around 8:40 AM MST) and reassigns _id, so a run that spans the reload, or paging across separate runs, can shift slightly.

Sample output (real run, default mode)

{
"inspectionKey": "125889-20261016184132",
"businessName": "Caffe Bene",
"dbaName": null,
"legalOwner": null,
"licenseeLastName": "Chen & Chen Brothers Inc.",
"licenseeFirstName": null,
"licenseNumber": "125889",
"licenseStatus": "Active",
"licenseCategoryCode": "FS",
"licenseCategory": "Eating & Drinking",
"licenseIssuedDate": "2014-08-14",
"licenseExpiresDate": "2026-12-31",
"result": "HE_Pass",
"inspectionDate": "2026-10-16",
"inspectionDateTimeUtc": "2026-10-16T18:41:32Z",
"violationCode": "590.003/3-304.14-C",
"violationLevel": "*",
"violationSeverity": "Core",
"violationDescription": "Wiping Cloths Use Limitation (C)",
"violationStatus": "Pass",
"violationStatusDate": "2026-10-16",
"inspectorComments": "Wiping cloths not stored in a sanitizing solution",
"address": "333 MASSACHUSETTS AV",
"neighborhood": "BOSTON",
"state": "MA",
"zip": "02115",
"propertyId": "271270",
"latitude": 42.34223999989077,
"longitude": -71.08468000154136,
"dataSource": "City of Boston Inspectional Services (Health Division) via data.boston.gov"
}

Use cases

  • Food-safety, pest-control, cleaning and equipment vendors: restaurants with recent Priority violations, e.g. violationLevels: ["Priority"], violationContains: ["pests", "mice"], onePerInspection: true.
  • Restaurant suppliers, POS and insurance sales: active Boston food licenses by neighborhood and category.
  • Journalists and researchers: violation trends by neighborhood, category or code.

How to scrape Boston restaurant inspections

  1. Click Try for free (or Start) on this page. A free Apify account is enough.
  2. Leave the prefilled input to get a quick sample, or set the filters described below.
  3. Set maxItems to cap how many rows (and how much) a run returns.
  4. Click Start and wait a few seconds to a minute.
  5. Download the results as JSON, CSV or Excel, or connect them to Google Sheets, Zapier, Make or a webhook.

Input

FieldDescription
inspectedSinceOptional real date, YYYY-MM-DD (Boston local date). Invalid dates fail fast with a clear message. Empty = all, newest first
nameContainsBusiness, DBA, legal owner or licensee name (partial)
neighborhoodsBoston, Dorchester, Roxbury, East Boston, Allston, Brighton, South Boston, Charlestown, Jamaica Plain, ... (exact, case-insensitive)
zipCodese.g. 02115 (matches the first 5 characters; 4-digit source ZIPs like 2127 are zero-padded, and ZIP+4 values match)
resultsResult code with or without HE_: Fail, Pass, FailExt, Filed, Hearing, VolClos, NotReq, OutBus, TSOP, FAILNOR, Misc; also matches the raw legacy values Pass, Fail, Failed, PassViol, DATAERR
licenseCategoriesFS Eating & Drinking, FT Eating & Drinking w/ Take Out, RF Retail Food, MFW Mobile Food Walk On
violationLevelsPriority (***), Priority Foundation (**), Core (*)
violationContainsText in the violation description, inspector comments or code
violationsOnlyDefault false. On drops rows with no violation code (~5% of 2026 rows)
onePerInspectionDefault false. On = one row per inspection with a violations list
dedupeRowsDefault true. Drops ~410 exact duplicate violation rows in the source (all from 2018 or earlier)
maxItemsDefault 200 (rows, or inspections when onePerInspection is on)

With onePerInspection on, the violation filters (violationLevels, violationContains, violationsOnly) select inspections that have at least one matching violation, and the row lists all violations of that inspection.

Pricing (pay per event)

$3 per 1,000 rows ($0.003 each) plus Apify's minimal $0.00005 start fee. Example: 200 violation rows = 200 × $0.003 + $0.00005 ≈ $0.60; one month of rows (~3,000) ≈ $9, or the same month as ~1,000 inspections with onePerInspection ≈ $3. If a run hits your max charge limit, it stops cleanly and reports how many rows it delivered.

Data caveats

Data is provided as published by the City of Boston. The portal calls this a "legacy dataset", but it is still refreshed daily. Timestamps are published in UTC; inspectionDate, violationStatusDate and the license dates are converted to the Boston local date (inspectionDateTimeUtc keeps the original time). violationSeverity is derived from the published level (* Core, ** Priority Foundation, *** Priority, matching the (C)/(Pf)/(P) suffix in the description). Result codes are passed through unchanged (HE_Pass, HE_Fail, HE_FailExt, ...); an inspection marked HE_Pass can still list violations, each with its own Pass/Fail status. The source city field holds the neighborhood mailing name (BOSTON covers downtown, Back Bay, Fenway, North End, ...); a trailing / is removed. Coordinates outside Boston (or missing, ~5% of 2026 rows) are null. The licensee name fields are published inconsistently (sometimes a person, sometimes a company). About 0.7% of rows have no inspection date and sort last; with onePerInspection they are grouped by license + violation time (inspectionKey ends in -nodate-<violation time>). HE_NotReq rows (~24,000) are mostly administrative stamps rather than real inspections (only ~600 list a violation); exclude them with results if you only want inspections. A few older rows carry legacy result values without the HE_ prefix (Pass, Fail, Failed, PassViol, DATAERR). A violation is an inspection finding; check violationStatus and later inspections for whether it was corrected.

License and disclaimer

Source: City of Boston, Analyze Boston open data portal (data.boston.gov), Open Data Commons Public Domain Dedication and License (PDDL). This actor uses only the official public open-data API and is not affiliated with or endorsed by the City of Boston.

FAQ

How much does it cost to scrape Boston restaurant inspections?

You pay $0.003 per result ($3 per 1,000) plus a $0.00005 start fee, and nothing else. That is the free-plan price: on paid Apify plans you pay less per result (Bronze 10%, Silver 20%, Gold and above 30% off). Apify's free plan includes $5 of monthly credit, which covers about 1,600 results. See Pricing above for a worked example.

This Actor reads public records from the City of Boston Inspectional Services Department (Health Division) via the official data.boston.gov open-data API, using only public endpoints (no login, no CAPTCHA bypass, no private accounts). See the source/license section above for the dataset's terms. You are responsible for how you use the data; this is not legal advice.

How fresh is the data?

Each run reads the source live, so you get whatever the agency has published at that moment. How often the agency updates, and any known lag, is described in the data caveats/notes section above.

Can I use it via API, on a schedule, or with Google Sheets?

Yes. Every Apify Actor has a REST API and client libraries for Python and JavaScript. You can schedule daily or weekly runs, and send results to Google Sheets, Slack, Zapier, Make, n8n, webhooks, or an AI agent via the Apify MCP server.

I need another city, county or field. Can you add it?

Open an issue on the Issues tab with the city or data source you need. We build new public-records scrapers regularly.

More public-records scrapers by Groundplanes

Same clean output, pay-per-result pricing and official public data sources:

Restaurant & food inspections

Code violations & distressed property leads

Business licenses & new business leads