# New Restaurant & Bar Openings: Health Permit & Licence Leads (`signalloom/restaurant-openings-leads`) Actor

Get new restaurants, bars and cafes as they open, from official open data: liquor licence applications, pre-opening health inspections, new licences and business registrations in NYC, NY State, Chicago, Seattle/King County, LA and SF. Address, type, date. $0.01 per lead.

- **URL**: https://apify.com/signalloom/restaurant-openings-leads.md
- **Developed by:** [Signalloom](https://apify.com/signalloom) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 lead returneds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## New Restaurant & Bar Openings Leads: Health Permits & Licences

Find **restaurants, bars and cafes that are about to open or just opened**, straight from official government open data: liquor licence applications, pre-opening health inspections, new food and liquor licences, first inspections and new business registrations. One clean, deduplicated list of **business-level sales leads** with name, address, type, licence number and the date of the first opening signal.

- **6 jurisdictions, 8 official datasets**: New York City, New York State, Chicago, Seattle & King County, Los Angeles and San Francisco
- **Pre-opening signals**: New York State liquor licence applications are filed weeks before opening; pre-permit and licence health inspections happen days before opening day
- **Deduplicated across sources**: the same place seen in a health inspection and a liquor licence is one lead, with every signal and source listed
- **Filter by business type** (restaurant, bar, cafe, bakery, food truck, caterer), **city** and **how recent**
- **Only new since last run**: schedule it weekly and get just the openings you haven't seen
- **Business data only**: no owner or licensee names of private people, no personal phones or emails (see *Data handling and privacy*)

**Price: $10 per 1,000 leads** ($0.01 each). Leads filtered out or already delivered in "only new" mode are free. The prefilled example (NYC + Chicago, last 30 days, 100 leads) finishes in under a minute.

### Use this when…

- you sell to **new restaurants and bars**: food and beverage distribution, POS systems, payroll, linen, waste, pest control, insurance, signage, hiring, delivery platforms
- you want a **weekly list of new restaurant openings** in NYC, New York State, Chicago, Seattle, LA or San Francisco, including new liquor licences and licence applications
- you need **pre-opening leads** — places that passed a pre-permit or licence inspection but may not be open yet
- you're tracking **restaurant market activity** by city or neighbourhood for research, real estate or investing
- an AI agent or automation needs structured "new restaurant" events from official sources

### For AI agents

- **Run** `signalloom/restaurant-openings-leads` (Apify MCP server `call-actor`, or the Apify API) with input like `{"jurisdictions": ["nyc"], "openedWithinDays": 14, "maxResults": 20}`
- **Returns** one JSON row per new business in the default dataset, newest first: `name`, `businessType`, `address`, `city`, `zip`, `signal` (e.g. `pre_opening_inspection`), `firstSeenDate`, `licenceNumber`, `sourceUrl`.
- **Typical cost:** up to 20 leads = **$0.20** at most ($0.01 per lead).

### How to use it

1. Pick **Cities and states** (e.g. *New York City* and *Chicago*).
2. Set **Opened within (days)**, e.g. 30. Optionally choose **Business types** (e.g. only bars) or type **Cities** to narrow a source (e.g. "Brooklyn" for NYC, "Seattle" for King County).
3. Click **Start**. Export to CSV, Excel or JSON, or send the results to Google Sheets, HubSpot or a CRM with Make, Zapier or n8n.

**Recipe: weekly pre-opening leads.** Turn on **Only new since last run**, give it a **Monitor ID** such as `nyc-cafes`, and schedule it every Monday. Each run delivers only openings you haven't received before.

**Recipe: earliest possible leads.** Set **Opening signals** to *Licence application (NY State)* and *Pre-opening / licence inspection* to get places that have applied for a liquor licence or passed inspection but may not be open yet.

### Output

Real records from a run on 2026-11-11 (shortened). A new Caribbean restaurant in Brooklyn, found by its pre-permit health inspection:

```json
{
  "name": "Black Box Eatz",
  "businessType": "restaurant",
  "cuisine": "Caribbean",
  "address": "675 Flatbush Avenue",
  "city": "Brooklyn",
  "state": "NY",
  "zip": "11225",
  "latitude": 40.656714,
  "longitude": -73.960117,
  "signals": [
    "pre_opening_inspection"
  ],
  "firstSeenDate": "2026-11-06",
  "licenceType": "NYC food service establishment permit (pre-permit inspection)",
  "licenceNumber": "50187842",
  "source": "NYC DOHMH Restaurant Inspection Results",
  "sourceUrl": "https://data.cityofnewyork.us/d/43nn-pn8j",
  "leadId": "c0f830ee945e4b74"
}
```

A New York State liquor licence issued on 2026-11-10 (real record from a run on 2026-11-11, shortened). The licence holder is a company, so it appears as `legalEntity`:

```json
{
  "name": "Barbuto",
  "legalEntity": "BARBUTO WEST LLC",
  "businessType": "restaurant",
  "address": "521 West St",
  "city": "New York",
  "state": "NY",
  "zip": "10014",
  "county": "New York",
  "latitude": 40.73906,
  "longitude": -74.00968,
  "signals": [
    "new_licence"
  ],
  "firstSeenDate": "2026-11-10",
  "licenceType": "NY SLA: Restaurant",
  "licenceNumber": "0340-22-111917",
  "jurisdiction": "new-york-state",
  "source": "NY State Liquor Authority - Current Active Licenses",
  "sourceUrl": "https://data.ny.gov/d/9s3h-dpkz",
  "leadId": "c441d3cf593bf77d"
}
```

The same business seen in two Chicago datasets becomes one lead with both signals (`sources` shortened to 2 of 4 entries):

```json
{
  "name": "Portillo's",
  "legalEntity": "PORTILLO'S HOT DOGS, LLC",
  "businessType": "restaurant",
  "category": "Restaurant",
  "address": "304 N Michigan Ave",
  "city": "Chicago",
  "state": "IL",
  "zip": "60601",
  "neighborhood": "Loop",
  "latitude": 41.886959,
  "longitude": -87.624687,
  "signal": "pre_opening_inspection",
  "signals": [
    "pre_opening_inspection",
    "new_licence"
  ],
  "firstSeenDate": "2026-11-03",
  "licenceType": "Chicago business licence (pre-licence health inspection)",
  "licenceNumber": "3086608",
  "status": "Inspection: Pass w/ Conditions",
  "source": "Chicago Food Inspections (licence inspections)",
  "sourceUrl": "https://data.cityofchicago.org/d/4ijn-s7e5",
  "sources": [
    {
      "source": "Chicago Food Inspections (licence inspections)",
      "signal": "pre_opening_inspection",
      "date": "2026-11-03",
      "licenceType": "Chicago business licence (pre-licence health inspection)",
      "licenceNumber": "3086608",
      "sourceUrl": "https://data.cityofchicago.org/d/4ijn-s7e5"
    },
    {
      "source": "Chicago Business Licenses - Current Active",
      "signal": "new_licence",
      "date": "2026-11-06",
      "licenceType": "Retail Food Establishment",
      "licenceNumber": "3086608",
      "sourceUrl": "https://data.cityofchicago.org/d/r5kz-chrr"
    }
  ],
  "leadId": "d024bdc6ca8f7658"
}
```

| Field | Meaning |
|---|---|
| `name` | Business / trade name (DBA) as published |
| `legalEntity` | Licence holder, **only when it's a company** (LLC, Inc, Corp…). Never a person. |
| `businessType` | `restaurant`, `bar`, `cafe`, `bakery`, `food_truck`, `caterer` (and `retail` / `other` if you ask for them) |
| `cuisine`, `category` | Cuisine (NYC) or the licence's business activity / NAICS class, when published |
| `address`, `city`, `state`, `zip`, `county`, `neighborhood`, `latitude`, `longitude` | Premises location, as published |
| `signal`, `signals` | `new_licence`, `licence_application`, `pre_opening_inspection`, `first_inspection` or `new_business_registration` |
| `firstSeenDate` | Date of the earliest opening signal |
| `licenceType`, `licenceNumber`, `status` | Licence, permit or application, its number and status (e.g. "Inspection: Pass", or the NY application status) |
| `source`, `sourceUrl`, `sources` | The official dataset(s) the lead came from |
| `leadId` | Stable ID for the lead |

The run summary (key-value store → `OUTPUT`) shows rows and leads per dataset, merged duplicates, and anything skipped.

### Data sources

All sources are official government open-data portals, read only through their official, documented public API (Socrata SODA), with no login and no web-page scraping. Requests are paced at about one per second per portal, as the portals' robots.txt asks.

| Jurisdiction | Dataset (publisher) | Opening signal | Updated |
|---|---|---|---|
| New York City | [DOHMH New York City Restaurant Inspection Results](https://data.cityofnewyork.us/d/43nn-pn8j) (NYC Dept. of Health) | Pre-permit (initial) inspection | Daily |
| New York State | [Current Liquor Authority Active Licenses](https://data.ny.gov/d/9s3h-dpkz) (NY State Liquor Authority) | New on-premises liquor licence issued (restaurant, tavern, club, caterer…) | Daily |
| New York State | [Current SLA Pending Licenses](https://data.ny.gov/d/f8i8-k2gm) (NY State Liquor Authority) | Liquor licence application received | Daily |
| Chicago | [Food Inspections](https://data.cityofchicago.org/d/4ijn-s7e5) (Chicago Dept. of Public Health) | Licence (pre-opening) inspection | Daily |
| Chicago | [Business Licenses – Current Active](https://data.cityofchicago.org/d/r5kz-chrr) (Dept. of Business Affairs) | New food / liquor licence issued | Daily |
| Seattle & King County, WA | [Food Establishment Inspection Data](https://data.kingcounty.gov/d/r878-4sxa) (Public Health – Seattle & King County) | First inspection on record (data since 2021) | Daily |
| Los Angeles | [Listing of Active Businesses](https://data.lacity.org/d/6rrh-rzua) (LA Office of Finance) | New business location, NAICS 722 | About monthly |
| San Francisco | [Registered Business Locations](https://data.sf.gov/d/g8m3-pdis) (SF Treasurer & Tax Collector) | New business location, NAICS 722 | Daily |

New York State data comes from Open NY (data.ny.gov). The OPEN-NY Terms of Use allow anyone to reuse the state's open data for any lawful purpose, including commercial projects, with no attribution or pre-approval. This tool uses only the official SODA API the portal provides, at about one request per second.

Want another city or state? Open an issue. Sources are added from official open data only.

### Data handling and privacy

- **Business-level data only.** Licence and permit records often name the owner, licensee or principal, who may be a private person. Those names are **never output**. A licensee name appears (as `legalEntity`) only when it is clearly a company (LLC, Inc, Corp, Ltd…). If a business's only published name is a person's name, the record is skipped (counted as `suppressedForPrivacy` in the run summary).
- **No personal contact details.** No phone numbers or emails are output.
- **Official public sources only.** Every record comes from a government open-data portal, published for public reuse (for New York State, under the OPEN-NY Terms of Use), and is read through the portal's official API; a link to the dataset is in each record.
- **New York State liquor licences** list licensees and principals, who are often private people. This tool outputs only the business's trade name (DBA), its premises address and licence details. A licensee name is output (as `legalEntity`) only when it carries a company suffix; principals' names are never requested from the source.
- **Opt-out.** A business can ask to be excluded by opening an issue on the **Issues** tab. Excluded businesses are skipped and never charged.
- Use the results lawfully: follow the anti-spam and privacy laws that apply to you (for example CAN-SPAM, TCPA, GDPR, CASL) when contacting businesses.

### Pricing

- **$10 per 1,000 leads** output ($0.01 each)
- Leads you filter out (type, city, already delivered) are **free**; a business found in several datasets is one lead, charged once
- Use **Max results** to cap the cost of a run.

### Limitations

- Coverage is limited to the jurisdictions above, and to what each agency publishes. Some places open without a new licence (e.g. an existing licence transferred), and some licences are for ownership changes of an existing place.
- New York State liquor licence applications can be withdrawn or denied, so an application is an early signal, not a guarantee the place will open. New York State licences also cover NYC, so an NYC place can appear with both a liquor and a health-inspection signal (merged into one lead).
- "First inspection" (King County) and "new business registration" (LA, SF) are strong but indirect signals; a new owner of an existing restaurant can also appear.
- Los Angeles updates its business list about once a month, so very recent LA openings may appear late.
- Business type is taken from the licence, inspection category or NAICS code; when a source only says "food service" or "liquor licence", it's inferred from the business name and may occasionally be off.
- No phone numbers, emails or websites (see privacy). Combine with your own enrichment if you need them.

### FAQ

**How do I find restaurants that are about to open?**

Pick a city and run with **Opened within** 14–30 days. Liquor licence applications (NY State) and pre-opening health inspections show up before or right at opening day.

**How do I get a weekly list of new restaurant openings?**

Turn on **Only new** (`"onlyNew": true`) with a Monitor ID and schedule it weekly. Each run returns only businesses not delivered before.

**Which cities are covered?**

New York City, New York State, Chicago, Seattle / King County, Los Angeles and San Francisco, from each one's official open-data portal.

**Does it include owner names or personal contacts?**

No. Leads are business-level: name, address, type, licence and date, as published in the public records.

### Feedback

Want another city or state, or a field? Open an issue on the **Issues** tab.

# Actor input Schema

## `jurisdictions` (type: `array`):

Which official open-data sources to search: health inspections, business licences, New York State liquor licences and applications, and new business registrations. API values: "nyc", "new-york-state", "chicago", "king-county-wa", "los-angeles", "san-francisco".

## `openedWithinDays` (type: `integer`):

Only businesses whose first opening signal (new licence, pre-opening or first inspection, licence application, new business registration) is dated within this many days. Example: 14.

## `businessTypes` (type: `array`):

Only these kinds of business. Leave empty for all food-service types (restaurant, bar, cafe, bakery, food truck, caterer). Add "Retail" for groceries, liquor stores and convenience stores, "Other" for schools, daycares and similar. Example: \["restaurant", "bar"].

## `signals` (type: `array`):

Only these kinds of evidence. Leave empty for all. Licence applications (NY State) come earliest, often weeks before opening; new licences and pre-opening inspections are close to opening day; first inspections and new registrations follow soon after.

## `cities` (type: `array`):

Only businesses in these cities, boroughs or counties, e.g. "Brooklyn" for NYC, "Seattle" for King County. Exact name match, case-insensitive. Example: \["Brooklyn"].

## `maxResults` (type: `integer`):

Upper limit on leads output (newest first). Keeps cost predictable. Example: 20.

## `onlyNew` (type: `boolean`):

Output only businesses not delivered by an earlier run with the same monitor ID. The first run outputs everything in the window. Use it with a schedule to get a weekly list of fresh openings without repeats.

## `monitorId` (type: `string`):

Name for the "only new" memory. Use different IDs for different searches (e.g. "nys-bars", "nyc-cafes").

## Actor input object example

```json
{
  "jurisdictions": [
    "nyc",
    "chicago"
  ],
  "openedWithinDays": 30,
  "maxResults": 100,
  "onlyNew": false,
  "monitorId": "default"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (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 = {
    "jurisdictions": [
        "nyc",
        "chicago"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("signalloom/restaurant-openings-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 = {
    "jurisdictions": [
        "nyc",
        "chicago",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("signalloom/restaurant-openings-leads").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "jurisdictions": [
    "nyc",
    "chicago"
  ],
  "maxResults": 100
}' |
apify call signalloom/restaurant-openings-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,signalloom/restaurant-openings-leads"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/VP58aLwCi2S1NU7uc/builds/lAojMIbf5lrgbUCA4/openapi.json
