A new liquor license is one of the clearest public signals that a bar, restaurant, liquor store or venue is about to open or just changed hands. Those businesses need a POS system, beverage suppliers, insurance, linens, staffing and a dozen other vendors in a short window, and the companies that show up first tend to get the account.
This guide shows how to build a fresh lead list from official state records with the New Liquor Licenses Actor on Apify. It covers Texas, New York, Missouri and Colorado.
The problem
Each state publishes liquor licenses in its own open-data portal, with its own columns and update rhythm:
- Texas (TABC, data.texas.gov dataset
7hf9-qc9f): full history, updated daily - New York (State Liquor Authority, data.ny.gov dataset
9s3h-dpkz): active licenses, updated daily, includes coordinates - Missouri (Division of Alcohol & Tobacco Control, data.mo.gov dataset
dymb-xy5c): new licenses from roughly the last three weeks only - Colorado (Liquor Enforcement Division, data.colorado.gov dataset
htyp-tqzh): recently approved licenses, published with about a four-week delay
To use that as a sales list you have to download each source, figure out which date means "first issued," drop wholesale and manufacturer permits if you sell to storefronts, and normalize the fields so Texas and New York land in the same spreadsheet.
The manual way (and why it hurts)
You can browse each portal's filter UI or download a CSV, but the files are large, the column names differ, and Missouri and Colorado only publish a short recent window. Doing that once is fine. Doing it every Monday across four states is a chore, and it is easy to mix up original issue dates with renewals or expiration dates.
Step 1: Configure the Actor
Open the Actor page and click Try for free. The defaults already aim at new retail and on-premise venues:
{ "states": ["TX", "NY", "MO", "CO"], "daysBack": 14, "retailOnly": true, "maxItemsPerState": 25 } Useful options:
-
states: any mix ofTX,NY,MOandCO -
daysBack: first issued in the last N days, or usedateFromanddateTofor an exact range -
retailOnly: whentrue, skip wholesale, manufacturer, importer, nonresident and temporary permits -
licenseTypeKeywords: keep rows whose license type contains words such asRestaurant,Mixed Beverage,By DrinkorGrocery -
maxItemsPerState: newest first, so you can cap cost and still see the latest filings
Step 2: Read the output
Records come back in one shape no matter which state they came from. Here is a trimmed Texas example from a real run:
| state | licenseNumber | businessName | licenseType | status | issueDate | city |
|---|---|---|---|---|---|---|
| TX | 200198590 | Red Rock Steakhouse & Backyard | Mixed Beverage Permit | Active | 2026-10-28 | Red Rock |
Full records also include the licensee name, license code, expiration date, street address, ZIP, county, latitude and longitude when the state publishes them, and a source field so you can trace the row back to the official dataset.
A few things to keep in mind:
- Fields a state does not publish are
null. New York includes coordinates; other states may not. - In the Colorado source, the business-name and licensee columns are sometimes swapped, so the Actor keeps both values rather than guessing.
- Missouri only has about three weeks of new licenses in its public file, and Colorado's file lags about four weeks. Texas and New York refresh daily and go back much further.
You can download the dataset as CSV, Excel, JSON or XML.
Step 3: Schedule it
A one-off export is useful, but the real value is getting new records on a timetable without thinking about it.
- In Apify Console, open Schedules and click Create new.
- Set the cron expression. For example,
0 7 * * 1-5runs it on weekday mornings at 7:00. - Add the Actor (New Liquor Licenses) and paste the same input JSON you used above.
- Optional: under the Actor's Integrations tab, connect Google Sheets, Slack, Zapier, Make or a webhook so each finished run lands where your team already works.
For a daily feed, set daysBack to 7 or 14 (Colorado's delay means a very tight window can look empty there) and keep retailOnly on unless you specifically sell to wholesalers or producers.
Step 4: Run it from Python with apify-client
If you'd rather pull the data into your own scripts or CRM, use the official apify-client package (pip install apify-client). Grab your API token from Settings > API & Integrations in Apify Console and keep it in an environment variable rather than in code.
import os from apify_client import ApifyClient client = ApifyClient(os.environ["APIFY_TOKEN"]) run_input = { "states": ["TX", "NY", "MO", "CO"], "daysBack": 14, "retailOnly": True, "maxItemsPerState": 25, } run = client.actor("perskekits/new-liquor-licenses").call(run_input=run_input) for item in client.dataset(run["defaultDatasetId"]).iterate_items(): print(item.get("issueDate"), item.get("state"), item.get("businessName"), item.get("licenseType"), item.get("city")) Each item is a plain dictionary, so you can de-duplicate on state plus licenseNumber and upsert straight into your CRM.
What it costs
The Actor uses Apify's pay-per-event pricing, so you pay for results, not for server time:
- $0.005 per run start
- $0.005 per license returned
For example, 25 licenses cost about $0.13, and 100 licenses cost about $0.505. Apify's free plan includes a small amount of monthly platform credit, which is enough to try small runs. Check the Actor's pricing tab for the current rates before you run anything large.
FAQ
Which states are covered?
Texas, New York, Missouri and Colorado, from those states' official open-data portals.
Does every record include a phone or email?
Usually not. The official files are strongest on business name, license type, status and address. Fields a state does not publish come back as null, so plan to enrich contacts if you need them.
Can I limit the list to restaurants or bars?
Yes. Keep retailOnly on, and add licenseTypeKeywords such as Restaurant, Mixed Beverage or By Drink.
Why do I see fewer Colorado rows than Texas rows?
Colorado publishes recently approved licenses with about a four-week delay. Missouri's public file only covers roughly the last three weeks. That is a limitation of the source data, not a cap in the Actor.
Is it legal to use for outreach?
The records are public, but you're responsible for following CAN-SPAM, TCPA and any other rules that apply to how you contact people, including do-not-call rules for phone outreach.
Wrapping up
New venues leave a paper trail before they leave a Yelp page. Set up a schedule once and you will have newly licensed bars, restaurants and retailers waiting in a sheet each week. Get started with the New Liquor Licenses Actor.
