Montgomery County MD Restaurant & Food Inspections Scraper
Pricing
from $2.10 / 1,000 inspections
Montgomery County MD Restaurant & Food Inspections Scraper
Scrape Montgomery County, MD restaurant and food facility inspections (July 2024 onward, updated daily) via the official county API: business, owner, address, inspection type and date, Pass/Fail and 16 compliance checks. Rockville, Silver Spring, Bethesda. Filter by date, city, ZIP, name, status.
Pricing
from $2.10 / 1,000 inspections
Rating
0.0
(0)
Developer
Groundplane Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Features
Share
The Montgomery County MD restaurant inspections scraper gives you one row per food facility inspection for Montgomery County, Maryland, straight from the Montgomery County Department of Health and Human Services via the official county 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 restaurant and food facility inspections for Montgomery County, Maryland (Rockville, Silver Spring, Bethesda, Gaithersburg, Germantown and more) as clean JSON, CSV or Excel. The data comes from the Montgomery County Department of Health and Human Services through the official open-data API (data.montgomerycountymd.gov dataset dkrp-gr48), updated daily by the county.
What you get
Each row is one inspection (one county inspectionNumber): business, owner, address, license sub-type, inspection type and date, status (Pass / Fail / Closed / Incomplete / Closed With Complaint / Cancelled), all 16 compliance checks, and an issues list of checks that were not in compliance (e.g. cold_holding_temperature: Corrected Onsite). Sorted newest inspection first with a stable :id tiebreak.
Default = last 30 days. The county file holds 3,503,952 rows and 14,036 distinct inspections since June 2024 (county census checked 2026-11-06), with inspection dates from 2024-06-03, so an empty inspectedSince means "30 days ago" to keep runs fast and cheap. In the default last-30-days window at that census there were 718 distinct inspections; by status filter the window holds Pass 686, Fail 25, and Closed 9 distinct inspections (status counts come from the published copies, so they can overlap slightly).
Sample output (real run)
{"inspectionNumber": "26-9605","registrationNumber": "55676","businessName": "SAINTS CONSTANTINE & GREEK ORTHODOX CHURCH","owner": "STS CONSTANTINE & HELEN GOC","address": "701 NORWOOD RD","city": "Silver Spring","state": "MD","zip": "20905","businessType": "Food Service Facility","businessSubtype": "Food Service Facility License-Non-Profit Charitable Org","inspectionType": "Comprehensive","inspectionDate": "2026-10-09","status": "Pass","issues": ["rodents_and_insects: Not In Compliance"],"issueCount": 1,"compliance": {"food_from_approved_source": "In Compliance","food_protected_from_contamination": "In Compliance","workers_restricted": "In Compliance","proper_hand_washing": "In Compliance","cooling_time_and_temperature": "Not Observed","cold_holding_temperature": "In Compliance","hot_holding_temperature": "Not Observed","cooking_time_and_temperature": "Not Observed","reheating_time_and_temperature": "Not Observed","hot_and_cold_running_water_provided": "In Compliance","proper_sewage_disposal": "In Compliance","toxic_substances_and_pesticides": "In Compliance","rodents_and_insects": "Not In Compliance","nutritional_labeling": "In Compliance","trans_fat_ban": "In Compliance","nosmoking_sign_posted": "In Compliance"},"latitude": 39.11998,"longitude": -77.02191,"source": "Montgomery County MD Department of Health and Human Services via data.montgomerycountymd.gov"}
Use cases
- Food-safety consultants, pest control, cleaning and equipment repair:
statusContains: ["Fail"]for recent failed inspections. - New-restaurant leads:
Pre-Openinginspections show places about to open. - Monitoring: schedule a daily run with the default 30-day window.
How to scrape Montgomery County MD restaurant inspections
- Click Try for free (or Start) on this page. A free Apify account is enough.
- Leave the prefilled input to get a quick sample, or set the filters described below.
- Set maxItems to cap how many rows (and how much) a run returns.
- Click Start and wait a few seconds to a minute.
- Download the results as JSON, CSV or Excel, or connect them to Google Sheets, Zapier, Make or a webhook.
Input
| Field | Description |
|---|---|
| inspectedSince | Optional real date, YYYY-MM-DD. Empty = 30 days ago. Invalid dates fail fast with a clear message. |
| cities | e.g. ROCKVILLE, SILVER SPRING |
| zipCodes | 5-digit ZIPs |
| nameContains | Business or owner name text |
| statusContains | Pass, Fail, Closed, Incomplete, Closed With Complaint, Cancelled |
| onePerInspection | Default on: one row per inspection number, merging all published copies (the county file repeats each inspection ~13×) |
| maxItems | Default 200 |
Pricing (pay per event)
$3 per 1,000 inspections ($0.003 each) plus Apify's minimal $0.00005 start fee. Example: 200 inspections = 200 × $0.003 + $0.00005 ≈ $0.60.
Data caveats
Data is provided as published by Montgomery County. The county file publishes each inspection many times, and the copies are not always identical (about 4% of inspections have copies that disagree on a compliance check, inspection type or license sub-type). With onePerInspection on, all copies of an inspection number are merged: each of the 16 compliance checks takes the worst published value (Not In Compliance > Corrected Onsite > In Compliance > Not Observed / Not Applicable), and inspectionType, businessSubtype and status take the most common published value. statusesPublished lists every status seen and sourceRowCount shows how many source rows were merged. Turn onePerInspection off if you need every published row unchanged. City names with non-breaking spaces are normalised to normal spaces and the broken "u2013" dash in some inspection types is shown as "–". Very large history pulls (full 2024–present) may need a longer timeout.
Troubleshooting
- Status starts with Complete: the run delivered everything it reports. The status states how many inspections matched, how many were delivered, how many source rows were scanned, and the newest inspection date in the source. If maxItems capped the run, the status says so.
- Status starts with PARTIAL: some rows were affected by a source data problem, the source looks stale, or the run hit its charge limit. The status names the reason and the counts. If the reason is a source problem and it keeps happening, open an issue on this actor's Issues tab.
- Complete: 0 inspections matched: your filters matched nothing in a healthy source. Loosen the filters (dates, city spelling, ZIP) and run again.
- Run failed with a source format message: the county file changed shape or a value format changed. Open an issue on the Issues tab so it can be fixed fast.
- maxItems error: maxItems must be a whole number of at least 1.
Changelog
0.2.1 (2026-11-06)
- Completed the per-row type checks: a county field that arrives as a number or a true/false value instead of text now makes the row invalid and counted, including the registration number, state, and inspection number fields and merged rows. Nothing is converted to text silently.
- Inspection dates must now be a complete ISO timestamp: a valid date followed by a garbled or impossible time part ships a null date and is counted, instead of passing silently.
- The status list now names all six values the county publishes, including Closed With Complaint and Cancelled.
0.2 (2026-11-06)
- Added a core-column check: if the county file renames or drops a column this actor reads, the run now fails loudly and names the column instead of shipping nulls.
- Added per-row validation: rows whose core fields are missing or unusable are skipped and counted; a run where over 20 percent of scanned rows are invalid fails as a source problem.
- Strict value checks: inspection dates must be ISO dates, ZIPs must be 5 digits or ZIP+4 (normalized to 5), and coordinates must be a valid numeric pair. Off-format values ship as null and are counted in the run status.
- New status contract: every run ends with Complete: or PARTIAL: plus matched, delivered, and scanned counts. A stale source (newest inspection over 14 days old; the county updates daily) ends PARTIAL and names the newest date.
- Stronger retries against the county API (6 tries with backoff and Retry-After support) and stricter maxItems parsing (0 and non-whole values now fail with a clear message).
- Counts refreshed from a live county census on 2026-11-06: 3,503,952 rows, 14,036 distinct inspections, dates from June 2024 (the description previously said July 2024 in places).
- Dataset schema now documents statusesPublished and sourceRowCount, which merged rows have always carried.
License and disclaimer
The source dataset is Public Domain (Montgomery County, MD open data). This actor uses only the official public open-data API and is not affiliated with or endorsed by Montgomery County, Maryland or its Department of Health and Human Services.
Owner names / outreach: output includes owner names (sometimes individuals) from public inspection records. Handle them as personal data where applicable, and you are responsible for complying with CAN-SPAM, TCPA, GDPR/CCPA and any other applicable laws if you use this data for marketing or outreach.
FAQ
How much does it cost to scrape Montgomery County MD 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.
Is it legal to scrape Montgomery County MD restaurant inspections?
This Actor reads public records from the Montgomery County Department of Health and Human Services via the official county 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
- Maricopa County (Phoenix) Restaurant Inspections Scraper
- Las Vegas Restaurant Inspections & Grades Scraper (SNHD)
- Pittsburgh Restaurant Inspections Scraper (Allegheny County)
- Delaware Restaurant Inspections Scraper - Statewide Violations
- Boulder CO Restaurant Inspections Scraper - 2013–2026 Snapshot
- NY State Restaurant Inspections Scraper - NYSDOH, Non-NYC
- Boston Restaurant Inspections Scraper - Health Violations
- Santa Clara County Restaurant Inspections Scraper - San Jose
Code violations & distressed property leads
- Pittsburgh Code Violations Scraper - Distressed Property Leads
- Orlando FL Code Enforcement Scraper - Code Violation Leads
- New Orleans Code Violations Scraper - Code Enforcement Leads