# Nyc Restaurant Health Inspection Leads Scraper (`gocreative.ai/nyc-restaurant-health-inspection-leads`) Actor

Scrapes every NYC restaurant from the official DOHMH inspection registry (data.cityofnewyork.us). Returns 31,000+ B2B leads with verified phone, address, cuisine, and latest health grade (A/B/C). Filter by borough, cuisine, ZIP, or grade.

- **URL**: https://apify.com/gocreative.ai/nyc-restaurant-health-inspection-leads.md
- **Developed by:** [GoCreative AI](https://apify.com/gocreative.ai) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## NYC Restaurant Health Inspection + Contact Leads

### 📊 Example output (real run)

![Sample output](https://api.apify.com/v2/key-value-stores/1ztQFHwG8acESTazI/records/nyc-restaurant-health-inspection-leads-sample)

A real record from a live run — clean structured data, exported as CSV / JSON / Excel or via API.


**Export every restaurant in New York City** — with a **verified phone number**, street address, cuisine type, and its latest official **health inspection grade (A/B/C)** — straight from the **NYC Department of Health and Mental Hygiene (DOHMH)** inspection registry. The data is pulled live from the [NYC Open Data portal](https://data.cityofnewyork.us/Health/DOHMH-New-York-City-Restaurant-Inspection-Results/43nn-pn8j), so every record is **authoritative and free of third-party scraping risk**. Filter by borough, cuisine, ZIP, or grade and download a phone-ready B2B lead list as JSON, CSV, or Excel.

This Actor runs on the Apify platform, so you get scheduled runs, an HTTP API, dataset storage, webhooks, and integrations (Zapier, Make, Google Sheets) on top of the data.

### What does this Actor do?

It queries the official DOHMH restaurant inspection registry (~296,000 inspection records covering ~31,000 distinct restaurants) and returns ONE clean lead per restaurant — its **most recent** inspection — with the restaurant's name, borough, street address, ZIP, phone number, cuisine, latest letter grade, inspection score, inspection date, and whether the last inspection cited a critical violation.

### Why use NYC Restaurant Health Inspection + Contact Leads?

- **Phone number included.** Unlike most government contractor/license registries (which publish name + license only), NYC's restaurant registry publishes a working phone number for the large majority of active restaurants — this is a ready-to-call lead list, not just a name list.
- **Built-in intent signal.** Filter to **Grade C** or critical-violation restaurants to reach owners who visibly need food-safety consulting, pest control, or equipment service RIGHT NOW — a warmer lead than a random cold list.
- **Territory + niche targeting.** Filter by borough, ZIP, or cuisine (pizza, Chinese, bakery, etc.) to build a route-density or vertical-specific list for a sales rep or campaign.
- **Authoritative source.** Data comes directly from the city health department, not a scraped directory or stale aggregator.

#### Who buys this data?

- **Restaurant POS / ordering-platform** and **payment-processor** sales teams prospecting new merchants
- **Food-safety consultants, pest-control companies, and commercial kitchen-equipment service providers** — target Grade C / critical-violation restaurants directly
- **Restaurant insurance brokers and equipment/supply vendors** building territory lead lists
- **Marketing agencies and local SEO firms** pitching restaurants by cuisine or neighborhood

### How to use it

1. Click **Try for free / Start**.
2. (Optional) Choose a **Borough**, enter a **Cuisine** keyword, or a **ZIP Code Prefix** to narrow the territory.
3. (Optional) Set **Health Grade** to `C` to surface restaurants most likely to need help.
4. Leave **Require Phone Number** on (default) for a call-ready list.
5. Run it, then download the results from the **Output** tab as JSON, CSV, or Excel.

### Input

| Field | Description |
|---|---|
| `boro` | `all`, `manhattan`, `brooklyn`, `queens`, `bronx`, or `staten island`. |
| `cuisine` | Cuisine keyword filter (case-insensitive, partial match), e.g. `Pizza`. |
| `zip_prefix` | ZIP or ZIP prefix, e.g. `112` for parts of Brooklyn, `10023` for one ZIP. |
| `grade` | `all`, `A`, `B`, or `C` — filters on the restaurant's latest DOHMH grade. |
| `require_phone` | If on (default), only returns restaurants with a phone number on file. |
| `max_results` | Cap on rows returned (default 5,000; up to 35,000 — there are ~31,000 distinct restaurants citywide). |

Example input:

```json
{
  "boro": "manhattan",
  "grade": "A",
  "require_phone": true,
  "max_results": 5000
}
````

### Output

Each item looks like this (real record from the live registry):

```json
{
  "camis": "41685153",
  "restaurant_name": "RIVERSIDE CAFE",
  "boro": "Manhattan",
  "address": "475 RIVERSIDE DRIVE",
  "zip_code": "10115",
  "phone": "(212) 870-3043",
  "cuisine": "American",
  "latest_grade": "A",
  "grade_label": "A (Grade A)",
  "latest_score": "12",
  "latest_inspection_date": "2026-07-02",
  "critical_violation": true,
  "latest_violation_description": "After cooking or removal from hot holding, TCS food not cooled by an approved method...",
  "latitude": "40.811094482579",
  "longitude": "-73.964167591037",
  "verify_url": "https://a816-health.nyc.gov/ABCEatsRestaurants/#!/Search",
  "source": "NYC DOHMH Restaurant Inspection Results (data.cityofnewyork.us 43nn-pn8j)",
  "scraped_at": "2026-07-09T00:00:00Z"
}
```

You can download the dataset in JSON, HTML, CSV, or Excel. A CRM-ready CSV of the full run is also saved to the run's key-value store.

#### Data fields

| Field | Description |
|---|---|
| `camis` | NYC's permanent restaurant ID (stable across inspections/renames) |
| `restaurant_name` | Restaurant's DBA name |
| `boro` / `address` / `zip_code` | Location |
| `phone` | Phone number on file, formatted `(XXX) XXX-XXXX` |
| `cuisine` | DOHMH cuisine category (150+ categories) |
| `latest_grade` / `grade_label` | Current letter grade: A, B, C, or pending/not-yet-graded |
| `latest_score` | Numeric inspection score (lower is better) from the latest inspection |
| `latest_inspection_date` | Date of the most recent inspection on file (YYYY-MM-DD) |
| `critical_violation` | `true` if the latest inspection cited a critical violation |
| `latest_violation_description` | Text of the violation cited at the latest inspection |
| `verify_url` | Official NYC "ABC Eats" restaurant grade lookup |

### How much does it cost?

This Actor uses **Pay-Per-Result** pricing — you only pay for the restaurant records you actually receive, no monthly subscription. A borough or cuisine segment is a few cents; the full citywide list is still inexpensive. The Actor uses lightweight HTTP requests against an official open-data API (no proxies or browsers required), so platform compute cost is minimal.

### Tips

- Start with a **borough** or **ZIP prefix** to keep runs small and targeted, then widen.
- Combine **grade = C** with a borough filter to build a tight "needs help now" outreach list.
- Schedule a monthly run to catch newly graded restaurants and re-inspections as your CRM stays in sync.

### FAQ, disclaimers & support

**Is this legal?** Yes. This Actor reads publicly available inspection data the City of New York publishes as open data for public use.

**Does every restaurant have a phone number?** The large majority of active restaurants do; a small number have no phone on file. Enable **Require Phone Number** (default) to only return leads with a working phone.

**How fresh is the data?** It is fetched live from the NYC Open Data portal on every run; DOHMH updates the underlying registry regularly as new inspections happen.

**Does this cover other cities?** This Actor is scoped to New York City. Similar registry scrapers for other cities/states are available on request.

For feature requests or issues, use the **Issues** tab.

# Actor input Schema

## `boro` (type: `string`):

Filter by NYC borough. Leave as 'all' for the whole city.

## `cuisine` (type: `string`):

Filter by cuisine keyword (e.g. 'Pizza', 'Chinese', 'Mexican'). Case-insensitive, partial match. Leave blank for all cuisines.

## `zip_prefix` (type: `string`):

Filter by a ZIP code or ZIP prefix (e.g. '112' for parts of Brooklyn, '10023' for one ZIP). Leave blank for all ZIPs.

## `grade` (type: `string`):

Filter by the restaurant's latest DOHMH letter grade. 'C' surfaces restaurants most likely to need food-safety help.

## `require_phone` (type: `boolean`):

If enabled (default), only return restaurants with a published phone number — the core lead-gen wedge. Disable to also include restaurants missing a phone on file.

## `max_results` (type: `integer`):

Maximum number of restaurant leads to return. Default 5,000. There are ~31,000 distinct restaurants citywide.

## Actor input object example

```json
{
  "boro": "all",
  "cuisine": "Pizza",
  "zip_prefix": "112",
  "grade": "all",
  "require_phone": true,
  "max_results": 5000
}
```

# Actor output Schema

## `restaurants` (type: `string`):

No description

## `csvExport` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gocreative.ai/nyc-restaurant-health-inspection-leads").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("gocreative.ai/nyc-restaurant-health-inspection-leads").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call gocreative.ai/nyc-restaurant-health-inspection-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=gocreative.ai/nyc-restaurant-health-inspection-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Nyc Restaurant Health Inspection Leads Scraper",
        "description": "Scrapes every NYC restaurant from the official DOHMH inspection registry (data.cityofnewyork.us). Returns 31,000+ B2B leads with verified phone, address, cuisine, and latest health grade (A/B/C). Filter by borough, cuisine, ZIP, or grade.",
        "version": "0.1",
        "x-build-id": "fpue6rQJuozf0t3le"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/gocreative.ai~nyc-restaurant-health-inspection-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-gocreative.ai-nyc-restaurant-health-inspection-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/gocreative.ai~nyc-restaurant-health-inspection-leads/runs": {
            "post": {
                "operationId": "runs-sync-gocreative.ai-nyc-restaurant-health-inspection-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/gocreative.ai~nyc-restaurant-health-inspection-leads/run-sync": {
            "post": {
                "operationId": "run-sync-gocreative.ai-nyc-restaurant-health-inspection-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "boro": {
                        "title": "Borough",
                        "enum": [
                            "all",
                            "manhattan",
                            "brooklyn",
                            "queens",
                            "bronx",
                            "staten island"
                        ],
                        "type": "string",
                        "description": "Filter by NYC borough. Leave as 'all' for the whole city.",
                        "default": "all"
                    },
                    "cuisine": {
                        "title": "Cuisine",
                        "type": "string",
                        "description": "Filter by cuisine keyword (e.g. 'Pizza', 'Chinese', 'Mexican'). Case-insensitive, partial match. Leave blank for all cuisines.",
                        "default": ""
                    },
                    "zip_prefix": {
                        "title": "ZIP Code Prefix",
                        "type": "string",
                        "description": "Filter by a ZIP code or ZIP prefix (e.g. '112' for parts of Brooklyn, '10023' for one ZIP). Leave blank for all ZIPs.",
                        "default": ""
                    },
                    "grade": {
                        "title": "Health Grade",
                        "enum": [
                            "all",
                            "A",
                            "B",
                            "C"
                        ],
                        "type": "string",
                        "description": "Filter by the restaurant's latest DOHMH letter grade. 'C' surfaces restaurants most likely to need food-safety help.",
                        "default": "all"
                    },
                    "require_phone": {
                        "title": "Require Phone Number",
                        "type": "boolean",
                        "description": "If enabled (default), only return restaurants with a published phone number — the core lead-gen wedge. Disable to also include restaurants missing a phone on file.",
                        "default": true
                    },
                    "max_results": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 35000,
                        "type": "integer",
                        "description": "Maximum number of restaurant leads to return. Default 5,000. There are ~31,000 distinct restaurants citywide.",
                        "default": 5000
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
