Coverage
Every jurisdiction we've looked at, its status, and how fresh the data is. This page is meant to be checked, not trusted blindly -- if a state looks stale or wrong, the row count and last-run columns will show it.
Read before you rely on this:
- States marked “municipal” (for example Massachusetts and Georgia) have no single statewide list -- licenses are issued by hundreds of local boards. Those states are covered by an ongoing local-authority crawl, not a daily statewide feed, and coverage grows a handful of authorities at a time rather than all at once.
- States whose “new” signal comes from comparing today's pull to what we saw before (rather than a native application or issue date) mark every row as first-seen on the very first run for that state, with is_new recorded as false. That is expected seeding behavior the first time a state goes live, not a sign of a sudden burst of activity.
- Reporting cadence varies by state and is outside our control. Wisconsin's data depends on municipal clerks reporting to the state, which some towns do as infrequently as once a year, so “newly licensed” there can lag real-world issuance by months. Each state's own last-run timestamp is shown so this is visible rather than hidden.
- A state can move backwards (built -> blocked) if a source changes without notice. This page reflects the last successful run, not a guarantee the source will stay up.
Last job run: 2026-09-12T06:01:35.844131+00:00 -- failed: RuntimeError: adapter(s) failed: {"nj": "blocked: NJ reports page returned HTTP 403"} (0 rows seen, 0 new).
| State | Status | Signal | Method | Rows | Last run | Notes |
|---|---|---|---|---|---|---|
| California | built | pending application | html_form | 1039 | 2026-09-12T05:48:58.134265+00:00 | ABC daily New Applications report; POST admin-post.php action=abclqs_daily_report |
| Texas | built | pending application | socrata | 857 | 2026-09-12T05:48:58.134265+00:00 | data.texas.gov mxm5-tdpj daily; 694/30d; exclude NT/E/TR/LP |
| Florida | built | newly licensed | csv_url | 314 | 2026-09-12T05:48:58.134265+00:00 | bd400lic.csv 42MB no header; status 20 + profession 4006 + orig date window; ~400/mo |
| New York | built | pending application | socrata | 2927 | 2026-09-12T05:48:58.134265+00:00 | data.ny.gov f8i8-k2gm; 440/30d |
| Pennsylvania | built | pending application | csv_url | 1656 | 2026-09-12T05:48:58.134265+00:00 | LicenseExport.aspx; Status=Pending 774 + newly licensed 962/30d |
| Illinois | source_confirmed | newly licensed | playwright_aura | 0 | never | ilccportal Aura ApexAction; ISSUED TYPE=New; pending is municipal |
| Ohio | source_confirmed | pending application | powerbi_public | 0 | never | Power BI Gov publish-to-web 'All permits' (issued + pending, nightly) + 'Transfer applications'; querydata engine; see GATE |
| Georgia | municipal | pending application | municipal_crawl | 0 | never | local issuance; municipal lane |
| North Carolina | built | pending application | form_iterate | 2072 | 2026-09-12T05:48:58.134265+00:00 | abc2.nc.gov/Search/Permit county+status=New |
| Michigan | built | newly licensed | form_iterate | 0 | never | AIMS county+status(Active/Conditional)+group search with CSV export; diff on Business Id; Conditional = pending-equivalent; see GATE |
| New Jersey | built | newly licensed | xlsx_url | 0 | never | njoag.gov daily Excel; municipal issuance recorded by state |
| Virginia | source_confirmed | unknown | powerbi_public | 0 | never | abc.virginia.gov Licensee Search Tool = Power BI publish-to-web (app.powerbi.com/view?r=eyJrIjoiOTk5OGIzNTItZDc4Zi00NTcwLTgzODktYzFkNDZhYTM1ZWRiIiwidCI6ImEzYTBjMDEyLTdhNTQtNDlmNC05MDc5LTdmZjU0ZjZkMGI1ZiIsImMiOjF9); Cloudflare challenge on the site, not on the report; status/pending fields being checked |
| Washington | built | pending application | html_list | 4267 | 2026-09-12T05:48:58.134265+00:00 | EntireStateWeb.asp rolling 30 days; 2,256/30d |
| Arizona | source_confirmed | pending application | html_form_chrome | 0 | never | POSSE guest search by type + effective-date range; INP Interim Permit = pending-equivalent; Phoenix posts received applications; see GATE |
| Massachusetts | municipal | pending application | municipal_crawl | 0 | never | ~351 town boards; municipal lane |
| Tennessee | built | newly licensed | form_iterate | 117 | 2026-09-12T05:48:58.134265+00:00 | rlpsmobile.abc.tn.gov county+status |
| Indiana | built | pending application | html_form | 0 | never | mylicense.in.gov/everification: Profession=Alcoholic Beverage, License Status=Pending Application (also Active, Transfer Pending, Conditional), County, DBA, City; ASP.NET form; volume to measure |
| Maryland | municipal | pending application | municipal_crawl | 0 | never | No state list: licenses are issued by 24 county Boards of License Commissioners (Baltimore City, Montgomery, PG, Anne Arundel, Baltimore County post hearing dockets). Municipal lane, seeded with the 24 boards. |
| Missouri | built | newly licensed | socrata | 434 | 2026-09-12T05:48:58.134265+00:00 | data.mo.gov dymb-xy5c 'New Liquor Licenses', weekly, rolling 3-week window. |
| Wisconsin | built | newly licensed | json_url | 17725 | 2026-09-12T05:48:58.134265+00:00 | ww2.revenue.wi.gov/WebServicesPublicWeb/rest/liquor/all?search=&city=&rn_low=0&sort=0&AB=0&AC=0&AL=0&BB=0&BL=0&CW=0 → JSON {result[250], subject, count}; fields businessName, entityName, agentName, address, city, municipality, munitype, county, zip, class flags AB/AC/AL/BB/BL/CW, lastUpdated, expireDate, rn. Page with rn_low. Municipal clerks report at least annually (July 15), some continuously → new = first-seen rows with a fresh lastUpdated; slow but zero-cost. Hetzner 200. |
| Colorado | built | newly licensed | socrata | 1130 | 2026-09-12T05:48:58.134265+00:00 | data.colorado.gov htyp-tqzh 'Recently Approved Liquor Licenses', rolling 3 months. Columns issue_date/license_number look cross-populated in sample — verify at adapter time. |
| Minnesota | queued | newly licensed | playwright_daf | 0 | never | app.dps.mn.gov/AGEDIS5/DataAccess/pages/license-search (public, no login; 200 from Hetzner) is a Uniface/DAF touch app: fields Iden, Licensee Name, DBA, License Type Code, City, Change Date, with PRINT/DOWNLOAD; state posts go to _invoke/GetPage. Change Date search = daily changed licenses (state-issued classes). Field focus did not take from the extension's synthetic clicks; lane C drives it with real Playwright clicks. Retail on/off-sale is municipal (Minneapolis open data off-sale dataset; St. Paul hearings) → municipal seeds. |
| South Carolina | source_confirmed | pending application | html_form_chrome | 0 | never | scpublicnotices.com (SC Press Association legal-notice aggregator, ASP.NET postback form on Search.aspx). Statutory ABL notice text: '<applicant> intends to apply to the South Carolina Department of Revenue for a license and/or permit that will allow the sale and on/off premises consumption of beer and wine|liquor at <address>'. Popular search Liquor Licenses over 60 days = 100 result pages (mixed with other notices — use Exact Phrase 'intends to apply to the South Carolina Department of Revenue' + date range). Fields parsed by regex: applicant, dba, on/off premises, beverage types, address, newspaper, publish date. Hetzner 200. |
| Alabama | municipal | pending application | municipal_crawl | 0 | never | alabcboard.gov has no public license list or search (only renewal portal + PDFs); applications require local governing-body approval first — city council agendas are the public surface (Birmingham, Huntsville, Montgomery, Mobile, Tuscaloosa); state list via Public Records Request (alabcboard.gov/public-records-request) |
| Louisiana | source_confirmed | newly licensed | playwright_posse | 0 | never | POSSE React SPA (laatcabc.atc.la.gov/laatcprod/webui/#/search/1880013). Guest session; Issued Licenses search has Effective Date preset 'Last 30 Days' + Status (Active/Temporary/...). 66 Active in last 30 days. API is stateful (opaque appServerState blobs) so drive with Playwright, not requests. 100-location cap per search: slice by parish if a month ever exceeds it. Reachable from Hetzner (200). |
| Kentucky | source_confirmed | newly licensed | html_form_chrome | 0 | never | abcportal.ky.gov/BelleExternal/ReportGenerator/Reports — All Active Licenses report with CountyList/CityList/LicenseTypeIDS + FromDate/ToDate; pending approvals are local (Local ABC Admin login) — issued-date window is the signal |
| Oregon | built | pending application | socrata | 236 | 2026-09-12T05:48:58.134265+00:00 | data.oregon.gov qad4-bnxp OLCC Liquor Applications Received; verified live via API (rows current to 2026-09-04); application_status In Review/Payment Pending/Waiting on Information = pending; ~140-150/mo |
| Oklahoma | source_confirmed | pending application | html_form_chrome | 0 | never | aca-prod.accela.com/ABLE (Accela Citizen Access): General Search by License Type incl. '* Application' record types (Mixed Beverage, Retail Beer, Beer and Wine, Retail Wine/Spirits Store, Caterer, Brew Pub...) + Start/End Date + County; no login; ASP.NET VIEWSTATE replay |
| Connecticut | built | pending application | socrata | 122 | 2026-09-12T05:48:58.134265+00:00 | data.ct.gov daily from eLicense: Restaurant Liquor Licenses (All Statuses) gm8q-ur5f, Cafe q22c-zdg8, Tavern rz33-sg3g — Status, CredentialType, IssueDate, EffectiveDate; eLicense rosters also expose APPLICATION FOR ON/OFF PREMISE LIQUOR credential types |
| Utah | built | hearing scheduled | pdf_list | 5 | 2026-09-12T05:48:58.134265+00:00 | Utah Public Notice Website, public body 13 (Alcoholic Beverage Services Commission): utah.gov/pmn/sitemap/publicbody/13.html lists monthly Commission Meeting notices with Final Agenda PDFs (utah.gov/pmn/files/<id>.pdf). Agendas carry 'New Applicants:' blocks per license class (bar, restaurant, off-premise beer…). Text PDFs mostly (June 14K chars); the Aug 27 agenda was printed from Google Docs with no text layer → OCR fallback (tesseract) needed. Hetzner 200. |
| Iowa | built | newly licensed | csv_url | 3051 | 2026-09-12T05:48:58.134265+00:00 | idh-be.iowa.gov/api/v1/datasets/1028/rows.csv (served as a zip containing iowa_liquor_stores_1028_rows.csv; 3,052 rows; columns store, name, store_status, address, city, state, zip_code, store_address POINT, report_date; monthly report_date=2026-09-01). Class E liquor stores only. New = store ids absent last month. The DOR 'retail alcohol licensing changes' page 403s curl — check under Chrome for the broader weekly change list (on-premise classes). |
| Nevada | municipal | pending application | municipal_crawl | 0 | never | Clark County, City of Las Vegas (ArcGIS open data), North Las Vegas, Washoe/Reno |
| Arkansas | built | newly licensed | xlsx_url | 6335 | 2026-09-12T05:48:58.134265+00:00 | Monthly. dfa.arkansas.gov/wp-content/uploads/FullPermit[YYYYMM].xlsx = full permit dump (6,336 rows; Permit Number, Suffix, Company, Alias, Permit Type(s) w/ status, Phone, Owner, Address, City, Zip, County). New = permit numbers not in prior month. Companion PDF [Month]_[YYYY]_PermitChangeList.pdf carries status changes (Inactive/Replacement/Change of Manager/NEWA) with effective dates — pdf_list leg for change events. dfa.arkansas.gov 403s a bare curl from the Mac but 200s from Hetzner with a browser UA. |
| Mississippi | source_confirmed | newly licensed | playwright_gentax | 0 | never | tap.dor.ms.gov (GenTax TAP) → Tools → Search ABC Permits: public, no login. Tabs City / County / Permit Type; Permit Type has 49 values; results grid (DBA, Address, City, County, Permit Type, Permit Number, Wholesaler) with Export. Issued-only, no dates → new = Permit Number diff. Iterate the 49 permit types (or 82 counties) nightly with Playwright; GenTax session tokens make raw requests brittle. |
| Kansas | blocked | none | none | 0 | never | Not covered. Kansas law (K.S.A. 45-230) restricts selling lists of names and addresses drawn from public records for solicitation, and the KDOR lookup requires certifying non-commercial use. See docs/kansas.md for the reasoning, the paths if a customer needs Kansas, and the disclaimer wording. |
| New Mexico | source_confirmed | newly licensed | playwright_aura | 0 | never | nmrldlpi.my.site.com/abc/s/public-search (Salesforce Experience, same Aura ApexAction pattern as IL). Required: License Type (33 values). Status values: Active, Canceled, Expired, Expired - Non Renewable, Hold/Pending Citation, Revoked…, Suspended…, Temporary Approval, Voluntary Temporary Suspension. Results: License Number, DBA, Business Name, Lessee, Type, Status, Expiration, Address, County, Local Option District. No issue date → new = license-number diff; Temporary Approval = leading indicator. Iterate retail types: Dispenser, Restaurant A/B, Retailer, Rural Dispenser/Retailer, Club, Small Brewer, Craft Distiller, Winegrower (+Off-Site). |
| Nebraska | built | pending application | xlsx_url | 22 | 2026-09-12T05:48:58.134265+00:00 | weekly activity report xlsx (New Appl / Issued L / Issued T sheets); scrape page for links; diff on Job Number |
| Idaho | built | pending application | html_form | 0 | never | apps.isp.idaho.gov/AbcReporting/license/search — Status = Issued|Pending, county, type, issue-date range |
| West Virginia | queued | unknown | unknown | 0 | never | ONLY statewide search (wvabca.com/licensesearch.aspx) redirects to SecureLogin; account request form is built for Liquor Store / Vendor-Rep / Licensee / Brewer with an 'Other; specify' option and manual approval — not a public tier. Paths: (1) request an account under Other (his action), (2) WV FOIA for licensee list, (3) county commission agendas (local approval). Closest to taxonomy barrier 1 so far. |
| Hawaii | municipal | hearing scheduled | municipal_crawl | 0 | never | Four county commissions. Honolulu: DocuShare Agenda collection www4.honolulu.gov/docushare/dsweb/View/Collection-3576 (FY subfolders → meeting agenda PDFs; 200 from Hetzner) + Star-Advertiser legal notices; Maui (mauicounty.gov/186), Kauai (kauai.gov Liquor-Control-Commission), Hawaii County (hawaiicounty.gov/departments/liquor-control) seeded into the municipal authorities table. |
| New Hampshire | source_confirmed | pending application | html_form | 0 | never | forms.nh.gov/licenseverification/Search.aspx?facility= (Business Search; same eVerification platform as IN, fields t_web_lookup__*). Profession=Liquor Commission (postback repopulates ~110 license types), Status=Pending → 14 pages × ~75 rows incl. Restaurant, Combination, Tavern, Hotel, Caterers, Beer Specialty plus vendors/tobacco (filter by type). Results: Full Name, Profession, License Type, License Number, Status. WAF returns 403 to curl from both Mac and Hetzner regardless of UA; Brave passes → run under Playwright (headless Chromium) and verify from Hetzner before live. |
| Maine | source_confirmed | newly licensed | playwright_posse | 0 | never | BELLS (Computronix POSSE SPA, alcohol.maine.gov/prod/webui/#/search/1781237) — Guest Licenses Search, no login. Criteria (Search/Config/1781237): PremisesName, LicenseNumber, EffectiveDate (Last/Next 30/60 Days, Custom), LicenseeName, LicenseType (~70 incl. On-Premises: Beer, Wine & Spirits / Off-Premises), County, Municipality, IncludeSpecialEventLicenses, LicenseStatus, PremisesType. Unfiltered search trips a result cap ('Please refine your criteria'), so slice by license type + Last 30 Days. Same engine as LA. Hetzner reaches it (200). |
| Montana | source_confirmed | newly licensed | playwright_gentax | 0 | never | tap.dor.mt.gov → Search for an Alcoholic Beverage License (public GenTax). Criteria radio: City / County / License Number / License Type / Name; License Type requires Account Type (On-Premises, Off-Premises, Domestic Brewery, Winery, Distilled Spirits Mfr, Wholesale, Agency Store, …) with optional license type/category. Results grid (Export): Name, Account Type, License Approval (date, e.g. 07-Jul-2026), License Category (All-Beverages…), License Number, Status (Active/Seasonal…), Cater, Access Control, Delivery, Address, City, County, Zip. On-Premises = 48 pages. New = License Approval in window; pending stays newspaper legal notice + county agendas. |
| Rhode Island | built | hearing scheduled | form_iterate | 0 | never | opengov.sos.ri.gov/OpenMeetings: search PublicBodyName '<Town>, Town of' / '<City>, City of' → Subcommittees table (client-side DataTable) → the licensing board (e.g. Providence Board of Licenses, EntityID 2757) → OpenMeetingDashboard?subtopmenuId=201&EntityID=<id> lists upcoming/past meetings with agenda links. Seed the ~39 EntityIDs once, then poll each dashboard; parse agenda PDFs with the agenda_pdf extractor. Hetzner 200. |
| Delaware | built | hearing scheduled | json_url | 32 | 2026-09-12T05:48:58.134265+00:00 | Two legs. (1) api.publicmeetings.delaware.gov/api/public/search/?q=&agencyid=24 (send Origin/Referer publicmeetings.delaware.gov; bare curl gets a WAF Request Rejected page) → JSON Data[] with MeetingID, Title, Purpose, MeetingStartDateTime; titles like OABCC Virtual Protest Application Hearing: <applicant> = pending applications under protest. (2) oabcc.delaware.gov/decisions html_list = decided/issued with names + dates. Both 200 from Hetzner. |
| South Dakota | municipal | pending application | municipal_crawl | 0 | never | municipal issuance; local governing bodies publish hearing notices |
| North Dakota | source_confirmed | newly licensed | playwright_gentax | 0 | never | tap.tax.nd.gov → Alcohol License Lookup → License Type Search; blank filters return all listings (2026: 102 pages) with Export. Columns: Account Type (Beer Tax/Liquor Tax), License Type, Legal Name, License #, Closed Date, DBA/AKA, Address, City, State, Zip, Contact, Phone, Year. No issue date → new = License # diff; Closed Date gives closures. Same GenTax engine as MS. AG issues retail licenses after city-council approval → council agendas are the pending leg (Fargo/Bismarck/Minot) for the municipal lane later. |
| Alaska | built | newly licensed | html_form | 0 | never | AK-ACCIS (Gov2Biz) public search: accis.elicense365.com/Apps/LicenceSimpleSearch — Type=License + State=AK returns the roster grid (License Number, Permit Number, Business/Trade Name, Landmark, Location, City, State, Lic Expiration Date; Export to Excel; grid reports 1,000 items → slice by city). Row detail shows License Type, Status, Licensee, Expiration. License numbers are sequential → new = numbers above the last seen. Pending leg: ABC Board meeting agenda PDFs (commerce.alaska.gov Portals/9/pub/ABC/Minutes/…) list applications by name; 3 AAC 306.065 objection window. Hetzner reaches accis (200); commerce.alaska.gov 403s curl (browser passes). |
| Vermont | source_confirmed | pending application | playwright_aura | 0 | never | dllportal.my.vermont.gov/DLLLicenseManagment/s/licensing-lists-and-reports (Salesforce Experience, public). Sidebar tabs: Pending Applications (checkbox reveals a 7-page datatable: App Id, App For, Type License/Permit/Non Profit Event, Business Entity, Location, Address 1/2, Town, Date), Licenses Issued This Month, Suspended License, Permitted Events. Loaded by one aura.ApexAction.execute POST → same engine as IL/NM. Filter App For to First Class Restaurant/Bar, First Class Club, Second Class, Commercial Caterer etc.; drop Request to Cater/Festival/Special Events permits. Hetzner 200. |
| Wyoming | built | newly licensed | pdf_list | 1204 | 2026-09-12T05:48:58.134265+00:00 | Wyoming Active Liquor License Holder List PDF (files-us-prod.cms.commerce.dynamics.com/cms/api/srmvxqpxdn/binary/MA8J6v, 751 KB, 200 from Hetzner). Columns: License Class, License Name, Products, DBA, Address, City, State, Zip, Phone. No dates → new = (DBA+address) rows absent from the prior pull. Resolve the binary URL from liquor365.wyo.gov each run in case the CMS hash rotates. Issuance is local (WS 12-4); pending signal would be council/commission agendas → municipal lane later. |
| District of Columbia | built | pending application | pdf_list | 5 | 2026-09-12T05:48:58.134265+00:00 | ABCA Alcohol Protest Notices PDF (name, type, address, ANC/ward, protest deadline); periodic; parse PDF list |