TTB Alcohol Permittee Scraper
Pricing
from $1.50 / 1,000 results
TTB Alcohol Permittee Scraper
Scrape federal alcohol permit records from TTB (Alcohol and Tobacco Tax and Trade Bureau). Download winery, distillery, importer and wholesaler permit lists with owner names, operating names, locations and new permit flags. No browser needed, direct CSV download.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
19 hours ago
Last modified
Categories
Share
TTB Alcohol Permittee Scraper — Federal Winery, Distillery, Importer & Wholesaler Permit Data Extractor
The most complete TTB (Alcohol and Tobacco Tax and Trade Bureau) federal permittee data extraction tool on Apify. Download the official US federal list of permittees — every licensed winery, distilled spirits plant (DSP), basic permit importer, and wholesaler — directly from ttb.gov. Structured JSON, weekly refresh, new-permit flagging, no auth, no browser, ready for compliance, lead generation, market intelligence, and beverage industry research workflows.
What This Actor Does
The TTB Alcohol Permittee Scraper is a production-grade Apify Actor that extracts the official Federal List of Permittees published by the United States Alcohol and Tobacco Tax and Trade Bureau (TTB) — the federal regulator that issues every basic permit required to legally produce, import, or wholesale alcoholic beverages in the United States.
In a single run, the actor discovers the current weekly CSV downloads on the TTB FOIA permittee page, parses them in memory, normalizes column variations, decodes permit numbers, applies state and "new permit" filters, and pushes clean, structured JSON records to your Apify dataset.
The actor returns federal alcohol permit records across the following categories:
- Wineries — bonded wineries, wine cellars, and bottling houses (permit type
W) — from Napa Valley estates and Sonoma County boutiques to Finger Lakes producers, Willamette Valley Pinot houses, Virginia AVAs, and emerging Texas Hill Country wineries - Distilleries (DSPs) — Distilled Spirits Plants (permit type
DSP) — including the entire Kentucky bourbon trail, Tennessee whiskey producers, the Brooklyn craft distillery scene, San Diego craft distillers, and thousands of farm distilleries nationwide - Importers — Basic Permit Importers (permit type
IMP) — every federally permitted alcohol importer bringing wine, spirits, and other beverages into the US - Wholesalers — Basic Permit Wholesalers (permit types
BWS,BWW,BWL) — the federally permitted three-tier distribution layer between producers and retailers - Other permittees — Alcohol Fuel Plants (
AFP) and additional permit subtypes as published by TTB
Each record includes the TTB permit number, legal owner name, operating/trade (DBA) name, decoded state, inferred permit year, premises street, city, ZIP, and county, permit type code, human-readable permit category, and a isNewPermit flag that lets you immediately spot newly issued permits (TTB updates the list every Monday and marks fresh permits with New_Permit_Flag = 1).
Important coverage note: Brewer's Notice (
BWN) data — i.e. breweries — is not publicly available in this list. Brewery records are protected under IRC Section 6103 and excluded by TTB from the public permittee export. Brewery COLA filings remain searchable via TTB's public COLA Online tool, but the entity-level brewery permit list is restricted. This scraper covers everything else TTB publishes publicly.
Why scrape TTB yourself when this exists?
TTB publishes the Federal List of Permittees (FRL) as several CSV files updated every Monday, but the data shipping route is famously fragile and the average team that tries to roll their own loader runs into the same pain points within an afternoon:
- The CSV download URLs contain a YYYY-MM date path (
/system/files/2026-05/FRL_*.csv) that changes every month — naive bookmarked URLs silently 404 - File names differ across categories (
FRL_DSP.csv,FRL_Wine_Producers.csv, etc.) with inconsistent casing and underscoring between releases - Some monthly drops re-letter the columns (e.g.
Prem_ZipvsPremZipvsZip) — your loader must do fuzzy header mapping or it breaks at the start of every month - The permit number is a compound key (
{STATE}-{TYPE}-{YEAR_SEQ}, e.g.CA-W-15651) — without decoding, you can't filter by state, type, or vintage - The
New_Permit_Flagcolumn ships as0/1strings (sometimesY/N) and is the only signal for newly issued permits — easy to miss - Brewery data is not in the export — teams waste hours trying to find a brewery file that does not exist
- There's no incremental API — you must redownload the entire file weekly even if only 30 permits changed
- TTB occasionally returns HTML error pages with
200 OKwhen the file is being regenerated — naive scripts happily save the HTML as CSV - Building, hosting, scheduling, and monitoring this pipeline is 8-16 hours of one-off dev work that nobody on the team wants to own
This actor solves all of that: it discovers the current month's CSV URLs from the landing page, downloads them with realistic browser headers, parses with csv-parse (BOM-aware, lax column count), normalizes columns via an alias table, decodes the permit number into state/type/year, sets isNewPermit, filters by state if requested, and writes clean JSON. No glue code, no header babysitting, no monthly URL refreshes.
Quick Start
One-Click Run
- Open the actor page on Apify: haketa/ttb-alcohol-permittee-scraper
- Click "Try for free" (or "Run" if you already have an Apify account)
- Accept the defaults to scrape wineries and distilleries (top 200 records as a smoke test), or tick more boxes to add wholesalers and importers
- Hit Start — your dataset is ready in well under a minute and downloadable as JSON, CSV, Excel, HTML, XML, or JSON Lines
API Run (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/ttb-alcohol-permittee-scraper").call(run_input={"permitCategories": ["wine", "spirits"],"stateFilter": ["CA", "OR", "WA"],"newPermitsOnly": False,"maxRecords": 0})for record in client.dataset(run["defaultDatasetId"]).iterate_items():print(record["permitNumber"], record["operatingName"], record["city"], record["state"])
API Run (Node.js / TypeScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/ttb-alcohol-permittee-scraper').call({permitCategories: ['spirits'],stateFilter: ['KY', 'TN'],newPermitsOnly: true,maxRecords: 0,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} brand-new Kentucky/Tennessee DSP permits this week`);
API Run (cURL)
curl -X POST "https://api.apify.com/v2/acts/haketa~ttb-alcohol-permittee-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"permitCategories": ["wine"],"stateFilter": ["CA"],"newPermitsOnly": false,"maxRecords": 0}'
How It Works
The TTB publishes its Federal List of Permittees as monthly-versioned CSV downloads linked from the official landing page:
Landing page: https://www.ttb.gov/public-information/foia/list-of-permittees
The actor performs the following pipeline on each run:
- Landing-page discovery —
gotScrapingGET on the FOIA landing page with realistic Chrome desktop headers (User-Agent, Accept, Accept-Language). HTML is parsed with two regexes (absolute and relativehref) to extract all.csvlinks. - Category matching — each discovered URL is checked against keyword patterns (
'spirit','dsp','distill','wine','winery','wholesal','bws','import','imp') and mapped to the user's requested categories. - CSV download — direct HTTPS GET to each matched URL with browser-style headers. Files typically arrive in 1-5 MB compressed.
- CSV parsing —
csv-parse/syncruns withrelax_column_count,bom: true, andtrim: trueto survive TTB's occasional column drift and UTF-8 BOMs. - Header alias mapping — column names are lowercased, punctuation collapsed, then looked up in a 40+ entry alias table. Unknown columns are kept under
_raw_*keys for traceability in logs. - Permit number decoding — the permit number is split on
-. The first part is the state code (CA,AK,NY, …). The middle part(s) are the type code (W,DSP,BWS,IMP, …). The last part starts with a 2-digit year which is expanded to19xxor20xxheuristically. - Type → category mapping — type codes are mapped to human-readable categories (
W→Winery,DSP→Distillery,BWS→Wholesaler,IMP→Importer,BWW→Wholesaler (Wine),BWL→Wholesaler (Liquor),AFP→Alcohol Fuel Plant). - New-permit flagging — the
New_Permit_Flagcolumn is normalized to a booleanisNewPermit(true when the source says1ortrue). - Filtering — optional
newPermitsOnlyandstateFilter(case-insensitive) are applied before push. - Dataset push — each surviving record is appended to the run's Apify dataset with an ISO-8601
scrapedAttimestamp.
Source endpoint reference
| Category | URL pattern | TTB file (typical) | Cadence |
|---|---|---|---|
| Distilleries (DSP) | https://www.ttb.gov/system/files/{YYYY-MM}/FRL_DSP*.csv | Distilled Spirits Plants | Weekly (Monday) |
| Wineries | https://www.ttb.gov/system/files/{YYYY-MM}/FRL_Wine*.csv | Wine Producers & Blenders | Weekly (Monday) |
| Wholesalers | https://www.ttb.gov/system/files/{YYYY-MM}/FRL_*Wholesal*.csv | Basic Permit Wholesalers | Weekly (Monday) |
| Importers | https://www.ttb.gov/system/files/{YYYY-MM}/FRL_*Import*.csv | Basic Permit Importers | Weekly (Monday) |
| Brewer's Notice (BWN) | not publicly released | Protected under IRC §6103 | n/a |
Engineering details
- No headless browser — direct HTTPS only via
got-scraping. Predictable, fast, low-memory. - Auto URL discovery — the actor re-reads the landing page each run, so the monthly
YYYY-MMrotation never breaks it. - BOM-safe CSV parsing with
relax_column_countto survive TTB column drift. - Permit number decoder infers state and year even if the CSV omits a dedicated state column.
- Configurable request delay between file downloads — defaults to 300ms to stay polite.
- Optional Apify proxy — almost never needed (TTB serves public files without rate limits) but available for environments that must originate traffic from a US datacenter pool.
- Deterministic output — same input produces the same dataset shape, run after run.
- Soft retry on landing-page discovery — if the first GET returns zero URLs, the actor waits 3 seconds and tries again before exiting gracefully.
Input Parameters
{"permitCategories": ["spirits", "wine"],"newPermitsOnly": false,"stateFilter": ["CA"],"maxRecords": 200,"requestDelay": 300,"proxyConfiguration": { "useApifyProxy": false }}
Parameter reference
| Parameter | Type | Default | Description |
|---|---|---|---|
permitCategories | array<string> | ["spirits", "wine"] | TTB permit categories to scrape. Allowed values: spirits (Distilled Spirits Producers & Bottlers), wine (Wine Producers & Blenders), wholesalers (Basic Permit Wholesalers), importers (Basic Permit Importers). Leave empty [] to scrape all categories the landing page exposes. |
newPermitsOnly | boolean | false | When true, only return records flagged as new this week (New_Permit_Flag = 1). Perfect for spotting newly opened wineries and distilleries in near-real-time. |
stateFilter | array<string> | [] | Filter by two-letter US state code (case-insensitive). Examples: ["CA"], ["KY", "TN"], ["NY", "NJ", "CT"]. Empty array returns all 50 states + territories. |
maxRecords | integer | 200 | Hard cap on total records saved across all categories. Set 0 for unlimited. Useful for smoke testing. |
requestDelay | integer (ms) | 300 | Delay between file downloads. Max 10000. Set higher if you want to be extra polite to ttb.gov. |
proxyConfiguration | object | { useApifyProxy: false } | Optional Apify proxy settings. Rarely needed — TTB does not rate-limit the FOIA download endpoint. |
Output Schema
Every record returned to the Apify dataset shares one flat schema, regardless of whether it represents a winery, distillery, importer, or wholesaler — so downstream consumers (Postgres, Snowflake, BigQuery, Sheets, Salesforce) can ingest the whole feed without per-category branching.
Field reference
| Field | Type | Always Present | Description |
|---|---|---|---|
permitNumber | string | yes | TTB-assigned permit number, e.g. CA-W-15651, KY-DSP-20089, NY-IMP-19045 |
ownerName | string | yes | Legal entity / owner-of-record as filed with TTB |
operatingName | string | usually | Trade name / DBA (often differs from ownerName, e.g. owner Smith Spirits LLC operating as Hudson Valley Distilling Co) |
permitType | string | yes | Permit type code parsed from the permit number (W, DSP, BWS, IMP, BWW, BWL, AFP, …) |
permitCategory | string | yes | Human-readable category (Winery, Distillery, Wholesaler, Importer, Wholesaler (Wine), …) |
sourceFile | string | yes | Input category slug this record was discovered under (spirits, wine, wholesalers, importers) |
state | string | usually | Two-letter US state code decoded from the permit number (fallback: CSV Premises_State) |
permitYear | string | usually | Four-digit issue year inferred from the permit number sequence prefix |
street | string | usually | Premises street address as filed with TTB |
city | string | usually | Premises city |
zipCode | string | usually | Premises ZIP code (5 or 9 digits) |
county | string | usually | Premises county |
isNewPermit | boolean | yes | true if this permit was flagged new this week (New_Permit_Flag = 1) |
scrapedAt | string | yes | ISO-8601 timestamp marking when this record was extracted |
Note: TTB does not publish phone numbers, email addresses, or financial information in the public permittee list. Owner name and premises address are the only contact-style fields included.
Example: Napa Valley winery record
{"permitNumber": "CA-W-15651","ownerName": "EXAMPLE NAPA CELLARS LLC","operatingName": "EXAMPLE NAPA CELLARS","permitType": "W","permitCategory": "Winery","sourceFile": "wine","state": "CA","permitYear": "2015","street": "9999 SILVERADO TRAIL","city": "NAPA","zipCode": "94558","county": "NAPA","isNewPermit": false,"scrapedAt": "2026-05-16T09:00:00.000Z"}
Example: Kentucky bourbon distillery (DSP) record
{"permitNumber": "KY-DSP-20089","ownerName": "EXAMPLE BOURBON COMPANY INC","operatingName": "EXAMPLE BOURBON DISTILLERY","permitType": "DSP","permitCategory": "Distillery","sourceFile": "spirits","state": "KY","permitYear": "2020","street": "999 DISTILLERY ROW","city": "BARDSTOWN","zipCode": "40004","county": "NELSON","isNewPermit": false,"scrapedAt": "2026-05-16T09:00:00.000Z"}
Example: Brand-new Portland craft distillery flagged this week
{"permitNumber": "OR-DSP-26012","ownerName": "EXAMPLE PORTLAND CRAFT SPIRITS LLC","operatingName": "EXAMPLE TAPROOM DISTILLERY","permitType": "DSP","permitCategory": "Distillery","sourceFile": "spirits","state": "OR","permitYear": "2026","street": "999 SE DIVISION ST","city": "PORTLAND","zipCode": "97202","county": "MULTNOMAH","isNewPermit": true,"scrapedAt": "2026-05-16T09:00:00.000Z"}
Permit Type Reference
TTB encodes the permit type as a short letter code embedded in the permit number. The actor decodes these into human-readable categories.
| Code | Category | What it means |
|---|---|---|
W | Winery | Bonded winery, wine cellar, or bottling house — produces, blends, or bottles wine |
DSP | Distillery | Distilled Spirits Plant — produces, processes, bottles, or warehouses distilled spirits |
BWS | Wholesaler | Basic Permit Wholesaler — distributes alcohol from producers/importers to retailers |
BWW | Wholesaler (Wine) | Wine-specific wholesale permit |
BWL | Wholesaler (Liquor) | Distilled spirits wholesale permit |
IMP | Importer | Basic Permit Importer — imports alcohol into the United States |
AFP | Alcohol Fuel Plant | Produces alcohol for fuel use (not beverage) |
BWN | Brewer's Notice | Brewery — not publicly available (IRC §6103) |
TPP | Tobacco Permit | Tobacco product permittee (out of scope for this actor) |
New Permit Flag Reference
| Source value | Decoded isNewPermit | Meaning |
|---|---|---|
1 or true | true | Brand-new permit added in this week's TTB release |
0, empty, or anything else | false | Existing permit |
Tip: Schedule the actor to run every Tuesday morning with
newPermitsOnly: trueand you'll get a weekly feed of every new winery, distillery, importer, and wholesaler permit issued in the United States — typically 30-150 net-new records per week depending on season.
Use Cases
Beverage Industry B2B Sales & Distribution
Spirits brokers, wine sales agencies, glass/cork/closure vendors, label printers, bottling-line equipment OEMs, barrel coopers, and yeast/enzyme suppliers use TTB permittee data to:
- Build the most comprehensive US winery and distillery prospect list that exists anywhere — every federally permitted producer in all 50 states, refreshed weekly
- Spot newly opened DSPs the week they get their permit via
isNewPermit: true— first-mover advantage on selling them tanks, stills, barrels, and consulting services - Segment by state and metro to assign territory — Napa/Sonoma reps, Kentucky bourbon trail reps, San Diego craft brewers liaison (note: brewery data not in TTB), Brooklyn craft spirits, Asheville/Western NC, Willamette Valley
- Enrich CRM accounts (Salesforce, HubSpot, Pipedrive) with permit number, owner-of-record, DBA, and current premises
- Identify import partner candidates for foreign producers entering the US three-tier system
Distributor & Three-Tier Compliance
Wine/spirits distributors and beverage compliance teams use the dataset to verify a supplier holds a current federal basic permit before opening an account, cross-reference owner name vs DBA to surface ownership changes that affect distribution agreements, pre-screen new permittees for COLA filings and brand registrations, maintain SOX-grade audit trails with timestamped scrapedAt evidence of when verification was performed, and map producer permits to wholesaler permits to model existing three-tier relationships.
Market Research & Beverage Industry Intelligence
Beverage market research firms, IWSR-style analysts, trade publications, and venture capital deal teams use the data to:
- Quantify craft distillery growth — count new DSP permits per state per year
- Map winery density across AVAs (American Viticultural Areas) — Napa, Sonoma, Paso Robles, Walla Walla, Finger Lakes, Texas Hill Country, Virginia, Yadkin Valley
- Track the Kentucky bourbon boom — every new DSP in Bourbon, Nelson, Anderson, Franklin, Marion, and Daviess counties
- Quantify the Brooklyn / Hudson Valley craft distilling scene — NY DSP permits by ZIP and year
- Analyze the Pacific Northwest spirits surge — Portland, Seattle, Bend taproom-distilleries by year of permit
- Identify the next wine region to invest in by spotting clusters of newly permitted wineries in non-traditional states
Mergers & Acquisitions Due Diligence
PE firms, beverage strategics, and M&A advisors deploy the dataset for target list construction (every independent winery in Sonoma County, every DSP in Tennessee, every importer in NY/NJ), pre-LOI ownership verification (confirm the target's permit is current and ownership matches the data room), roll-up screening (identify multi-property operators by grouping on ownerName), competitive landscape mapping before bidding, and post-close compliance integration to ensure acquired entities' permits stay current under the new parent.
Compliance, Legal & Regulatory
Beverage law firms, in-house compliance counsel, and state ABC investigators use TTB data to confirm federal permit existence as a prerequisite for state alcohol licensing, investigate suspected unlicensed producers by absence from the federal list, build legal exhibits documenting a permittee's premises and operating name as filed, monitor permit churn as a leading indicator of business distress, and detect change-of-control events by tracking owner name changes against the same premises.
Real Estate, Site Selection & Commercial Brokerage
Commercial brokers, hospitality real estate funds, and agritourism developers use permittee density data to identify the densest distillery clusters for tour-route planning (Kentucky Bourbon Trail, Tennessee Whiskey Trail, NYC Craft Distillers Guild), find adaptive reuse opportunities near existing DSP clusters with cooperage and stillhouse infrastructure, value tasting-room real estate in Napa, Sonoma, Paso Robles, Willamette Valley, Walla Walla, and Finger Lakes wine country, source agritourism wineries as venue and event partners, and map the San Diego craft-beverage corridor.
Insurance & Risk
Commercial insurance carriers and brokers writing winery, distillery, and importer policies use the data to verify federal permit currency at bind and renewal, validate insured premises against the address on file with TTB, detect new entrants (isNewPermit as a leading indicator of new-business submissions), risk-rate operations by permit type (DSP vs winery vs wholesaler carry materially different risk profiles), and reconcile schedules of locations during multi-state risk surveys.
Hospitality, Tourism & Trade Events
Wine clubs, spirits-of-the-month subscriptions, tasting-tour operators, trade-show organizers, and culinary publications use the dataset to curate winery/distillery touring itineraries by region and permit year, recruit exhibitors for trade events (WSWA Convention, ACSA, Unified Wine & Grape Symposium), build "every distillery in [state]" content for editorial SEO, identify Asheville breweries' winery and distillery neighbors for combined craft-beverage itineraries, and source partners for collaboration releases by spotting clusters of new DSPs in the same metro.
Academic, Journalism & Public Policy Research
Universities, USDA rural economics researchers, state ag economists, and investigative journalists use TTB permittee data to study craft-beverage industry growth as economic development data, quantify post-Prohibition state-by-state distillery recovery through permit-year time series, investigate concentration vs. fragmentation in US wine and spirits production, map agritourism's role in rural revitalization by overlaying winery counts with rural population data, and report on the wholesaler tier with concentration analyses powered by BWS/BWW/BWL records.
Recruiting & Talent Sourcing
Beverage recruiters and head-hunters for winemakers, master distillers, blenders, cellar masters, plant managers, and brand ambassadors use TTB data to build target-employer lists (every DSP in Kentucky, every winery in Napa, every importer in NY), spot newly opened DSPs that will need head distillers and operations staff within 6-12 months, track ownership changes as predictive signals of executive turnover, and cross-reference with LinkedIn to identify decision-makers at each permitted producer.
Sample Queries & Recipes
Recipe 1: Every Napa & Sonoma winery (California wine baseline)
{"permitCategories": ["wine"],"stateFilter": ["CA"],"newPermitsOnly": false,"maxRecords": 0}
Then filter county for NAPA or SONOMA downstream.
Recipe 2: Every Kentucky bourbon distillery (DSP only)
{"permitCategories": ["spirits"],"stateFilter": ["KY"],"newPermitsOnly": false,"maxRecords": 0}
Recipe 3: New permits issued this week (weekly Tuesday cron)
{"permitCategories": [],"newPermitsOnly": true,"maxRecords": 0}
Schedule this on Apify cron every Tuesday 09:00 ET — the actor will return only entities flagged new by TTB this Monday.
Recipe 4: Brooklyn craft-spirits scene
{"permitCategories": ["spirits"],"stateFilter": ["NY"],"maxRecords": 0}
Then filter downstream on city == "BROOKLYN" or ZIP prefix 112.
Recipe 5: Pacific Northwest taproom-distillery wave (Portland, Seattle, Bend)
{"permitCategories": ["spirits"],"stateFilter": ["OR", "WA"],"newPermitsOnly": false,"maxRecords": 0}
Recipe 6: Federal wine importer directory (importers permit list)
{"permitCategories": ["importers"],"stateFilter": [],"maxRecords": 0}
Recipe 7: Asheville / Western NC craft-beverage market scan
{"permitCategories": ["wine", "spirits"],"stateFilter": ["NC"],"maxRecords": 0}
Then filter downstream on Buncombe, Henderson, Madison, and Polk counties.
Recipe 8: Smoke test — pull 50 records to validate pipeline
{"permitCategories": ["wine"],"maxRecords": 50}
Integration Examples
Google Sheets (via Apify Integration)
- Open the actor's Schedules tab and create a weekly run for every Tuesday 09:00 ET
- Attach the "Export dataset to Google Sheets" integration to the schedule
- Receive a fresh TTB permittee tab in your sheet every week — perfect for sales territory reviews
Make.com / Zapier / n8n
Use the Apify connector available on Make, Zapier, n8n, and Pipedream. Trigger downstream workflows on:
- New DSPs — filter
permitCategory == "Distillery"andisNewPermit == true, push to Slack - New wineries in your sales territory — filter by
stateandisNewPermit, create Salesforce Lead - Owner name changes — diff this week's run vs last, push to HubSpot as task
- New importer registrations — pipe to a webhook for compliance review
Power BI / Tableau / Looker / Metabase
Connect Apify's REST API as a data source (or stage runs into BigQuery/Snowflake). Build dashboards for:
- Craft distillery growth by state, year, county
- Wine region permit density heatmaps
- Three-tier concentration analysis (BWS/BWW/BWL counts by state)
- New-permit time series as an industry-growth indicator
Postgres / Snowflake / BigQuery / Redshift
Use Apify webhooks to POST run results to your warehouse ingestion endpoint after every weekly run. Key on permitNumber for idempotent upserts. Maintain a slowly-changing-dimension table on (permitNumber, ownerName, operatingName, street, city) to capture changes over time.
Salesforce / HubSpot / Pipedrive CRM Enrichment
Run weekly, upsert against Account records keyed on permitNumber. Use isNewPermit to trigger Lead creation. Use permitCategory to route into the correct sales pod (Wine team vs Spirits team vs Wholesaler/Importer team).
Slack / Teams Notifications
Pipe new permits into a #new-ttb-permits Slack channel via webhook. Each Tuesday, your team sees every brand-new winery and distillery the federal government just licensed.
Major US Beverage Markets Covered
The TTB list is national in scope — these are the markets where the data is most strategically valuable.
| Region / Metro | Permit Concentration | Why it matters |
|---|---|---|
| Napa Valley (CA) | Very high | World's most valuable wine region — densely permitted wineries across 16 sub-AVAs |
| Sonoma County (CA) | Very high | Russian River, Dry Creek, Alexander Valley wineries plus growing distillery cluster |
| Paso Robles (CA) | High | Fast-growing Central Coast wine region |
| Willamette Valley (OR) | High | Pinot Noir capital; rapidly expanding distillery scene around Portland |
| Walla Walla / Columbia Valley (WA) | High | Washington's premier wine corridor |
| Finger Lakes (NY) | High | Riesling country plus craft distilleries |
| Hudson Valley & Brooklyn (NY) | High | Craft distillery hotbed; federal importer concentration |
| Kentucky Bourbon Trail | Very high | Bourbon County, Nelson, Anderson, Franklin, Marion — global bourbon HQ |
| Tennessee Whiskey country | High | Lincoln, Moore, Coffee Counties — Tennessee whiskey DSPs |
| Asheville / Western NC | Medium-high | Booming craft-beverage corridor (wineries + DSPs; TTB excludes breweries) |
| San Diego / North County (CA) | Medium-high | Strong craft distillery and emerging winery presence |
| Texas Hill Country (TX) | Medium-high | Fredericksburg-Stonewall winery corridor; growing DSP count |
| Virginia (Charlottesville, Loudoun) | Medium-high | Monticello AVA wineries plus emerging DSPs |
| NJ / NYC wholesaler corridor | Very high | National concentration of BWS/BWW/BWL wholesalers |
| Florida (Miami, Tampa) | High | Importer hub for Latin American spirits |
| Illinois (Chicago) | High | Midwest wholesaler hub |
Cost & Performance
| Metric | Value |
|---|---|
| Engine | Direct CSV download — no headless browser |
| Runtime (all 4 categories, unfiltered) | typically under 2 minutes |
| Runtime (single category) | typically 15-45 seconds |
| Cost per full run | very low (varies by dataset size; usually under $0.05) |
| Pricing model | Pay-per-event (transparent line-item billing) |
| Data freshness | Weekly (TTB updates every Monday) |
| Auth required | None |
| Proxy required | No (optional Apify proxy supported) |
| Concurrency | Safe to run multiple parallel filtered configurations |
| Memory footprint | 256 MB minimum, 512 MB recommended for full unfiltered runs |
| Free-tier compatible | Yes — fits comfortably in Apify Free Plan compute |
Compliance, Privacy & Legal Notes
- Public data only — every field returned is part of the TTB Federal List of Permittees, published by the US Department of the Treasury under the Freedom of Information Act at ttb.gov/public-information/foia/list-of-permittees
- No PII — the dataset contains no SSNs, dates of birth, financial account numbers, individual phone numbers, or personal email addresses
- No PHI — alcohol regulatory data does not contain protected health information
- Owner-of-record names are entity names (LLCs, Inc., Corp.) and, where individuals personally hold the permit, those names are already part of the public federal record
- Premises addresses are the business / bonded premises address as filed with TTB — not a residence (in most cases)
- No brewery (BWN) data — protected under IRC Section 6103. Anyone offering "TTB brewery data" sourced from this endpoint is misrepresenting the dataset. For brewery information, use TTB's public COLA Online label registration data instead (different scope).
- GDPR / CCPA — owner names that are personal names of natural persons could be considered personal data in some jurisdictions. The data consumer is responsible for compliance with applicable privacy law
- CAN-SPAM, TCPA, state Do-Not-Call — the dataset includes no email or phone, but compliance with marketing law on derivative outreach is the data consumer's responsibility
- TTB Terms of Use — the FOIA-published list is intended for public information use; do not use the data for unlawful purposes including identity fraud, harassment, or attempts to circumvent state liquor licensing
Important: This actor returns only data that TTB itself publishes openly. It does not bypass authentication, scrape protected endpoints, or extract anything outside the FOIA Reading Room scope.
Frequently Asked Questions
How fresh is the data?
TTB updates the Federal List of Permittees every Monday. The actor pulls the current live files on each run — typically less than 7 days behind the federal data of record.
Does this include breweries?
No. Brewer's Notice (BWN) data is not publicly available — it's protected under IRC Section 6103 and excluded from the TTB FOIA permittee export. This is a federal restriction, not a limitation of the actor. For brewery-related data, use TTB's COLA Online label registration data (covers label approvals, not entity-level permits) or state-level brewery licensing boards.
How many records will I get?
Numbers vary by category and weekly fluctuation. As a rough order of magnitude: thousands of DSPs, tens of thousands of wineries, and hundreds to low thousands of importers and wholesalers respectively. Exact counts shift weekly as new permits are issued and old ones are surrendered. Set maxRecords: 0 to get everything in scope.
Does the scraper need a TTB API key or login?
No. TTB publishes the permittee files as public FOIA downloads — no authentication, no token, no API key. You only need an Apify account.
Why does the URL path contain 2026-05? Will it break next month?
The URL path embeds the current month (YYYY-MM), and TTB rotates it monthly. The actor solves this by discovering the CSV URLs from the landing page on every run rather than hardcoding them. The monthly rotation never breaks the actor.
Can I filter by county or city?
The actor filters by state at the source level. For county or city filtering, set stateFilter to narrow the geographic scope, then apply your county/city filter downstream (SQL WHERE, Pandas, Sheets filter, etc.). The dataset includes county, city, street, and zipCode fields ready for filtering.
How does the isNewPermit flag work?
TTB tags each row in the weekly file with New_Permit_Flag = 1 if the permit was issued in the most recent week. The actor decodes this into a boolean isNewPermit. Set newPermitsOnly: true to get only this week's net-new permits — perfect for sales prospecting and journalism.
Are emails or phone numbers included?
No. TTB does not publish licensee email or phone in the permittee export. Use the owner/operating name + city + state to enrich via downstream B2B contact APIs.
Can I cross-reference these to state ABC licenses, schedule weekly, or run on the Free Plan?
Yes to all three. Federal TTB permits are a prerequisite for state ABC licensing — match on owner name + premises city/state + DBA against state ABC databases (we maintain Apify actors for several state licensing boards, see Related Actors). Use Apify's Scheduler to trigger this actor every Tuesday 09:00 ET (after TTB's Monday refresh) for a fully automated weekly feed. Typical unfiltered full runs cost a small fraction of the Free Plan's monthly compute allocation.
What's a DSP vs a winery vs a wholesaler?
- DSP (Distilled Spirits Plant) — federally permitted to produce, process, bottle, or warehouse distilled spirits (whiskey, vodka, gin, rum, tequila, brandy)
- Winery (W) — bonded to produce, blend, or bottle wine (including bonded wine cellars and bottling houses)
- Wholesaler (BWS / BWW / BWL) — federally permitted to distribute alcohol from producers/importers to retailers under the three-tier system
- Importer (IMP) — federally permitted to import alcoholic beverages into the United States
What about Alcohol Fuel Plants (AFPs)?
AFPs produce alcohol intended for fuel use (not human consumption). They appear in the dataset under permitCategory: "Alcohol Fuel Plant" when TTB includes them in the public files.
Can I get COLA (Certificate of Label Approval) data with this?
Not directly. COLA filings are searchable through TTB's separate COLA Online public tool. This actor scrapes the entity-level List of Permittees — a different (and more comprehensive) source for the businesses themselves.
Is residential proxy required, and what if the landing page returns no CSV URLs?
No proxy is needed — TTB serves the FOIA files globally without geo-blocking or rate-limiting (Apify proxy is supported but rarely necessary). If the first landing-page GET returns zero CSV URLs, the actor automatically retries once after a 3-second delay. If TTB is temporarily down or restructuring the page (which has happened during major CMS changes), the actor exits with a clear status message rather than producing garbage data — re-run later.
Can I get historical snapshots / a longitudinal series?
TTB only publishes the current list. To build history, schedule the actor weekly and archive each run's dataset — Apify retains run datasets on most plans, giving you a snapshot series for trend analysis.
Does this overlap with the SAM.gov federal contractor data?
No overlap. SAM.gov is the federal contractor / grantee registration system. TTB permittee data is the federal alcohol producer / importer / wholesaler permit list. They're independent datasets serving completely different regulatory regimes — but a brand-new DSP might appear in both if they pursue federal contracts.
What formats can I export the data in?
JSON, CSV, Excel (XLSX), HTML, XML, JSON Lines, and RSS — directly from the Apify dataset view. The API also supports streaming JSON Lines for warehouse ingestion.
Related Apify Actors by Haketa
If you need licensing data from other US regulators or related compliance datasets, check these complementary actors:
- SAM.gov Federal Contractor Entity Scraper — the other major federal entity registration dataset
- BBB Business Scraper — Better Business Bureau profiles for B2B enrichment
- Texas Pharmacy License Scraper — TSBP — Texas state pharmacist & pharmacy records
- Arizona ROC Contractor License Scraper — Arizona contractor licensing
- California DCA Professional License Scraper — CA Department of Consumer Affairs licensing (covers many beverage-adjacent occupations)
- Colorado Professional License Scraper — Colorado DORA professional licenses
- Virginia DPOR Professional License Scraper — Virginia regulated occupations
- Washington L&I Contractor License Scraper — Washington state contractor licensing
- Ohio eLicense Scraper — Ohio professional licensing
- Illinois IDFPR License Scraper — Illinois professional licensing
- Minnesota DLI Professional License Scraper — Minnesota Department of Labor & Industry
- NC Licensing Board for General Contractors Scraper — NC contractor licensing
Pair the TTB Alcohol Permittee Scraper with SAM.gov and BBB for the strongest US business-graph enrichment pipeline.
Comparison vs. Alternatives
| Approach | Setup time | Data freshness | Cost (full feed) | URL rotation handling | New-permit flag | Permit-number decoding |
|---|---|---|---|---|---|---|
| This actor | under 1 minute | Weekly | very low | Automatic landing-page discovery | Built-in isNewPermit | Built-in state/type/year decoder |
| Manual CSV download | ~5-10 min/week | Weekly | Free | Manual URL fixup monthly | Raw New_Permit_Flag column | None |
| Custom Node/Python script | 8-16 hours dev | Weekly | Free + infra | DIY | DIY | DIY |
| Paid beverage industry list | Days-weeks | Monthly or quarterly | $$$ per seat | Vendor handles | Often missing | Often missing |
| FOIA request to TTB | Weeks | Stale by the time it arrives | Free but slow | n/a | n/a | n/a |
Why Pay-Per-Event Pricing?
The actor uses Apify's pay-per-event pricing model rather than a flat subscription or per-CU billing. That means:
- You only pay when the actor actually runs
- Pricing scales with what you actually consume — not what a sales rep guessed for your account
- Transparent, line-item billing visible inside the Apify console
- No monthly minimums or annual commitments
- Cheap to evaluate — kick the tires with
maxRecords: 50for pennies - Predictable cost-of-goods for downstream products you build on top of the data
Changelog
| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-05 | Initial public release — landing-page URL auto-discovery, four permit categories (wine, spirits, wholesalers, importers), permit-number decoder, isNewPermit flag, state filter, pay-per-event pricing |
Keywords
TTB scraper · TTB permittee data · TTB alcohol permittee scraper · TTB API · TTB List of Permittees · federal alcohol permit data · TTB winery list · TTB distillery list · TTB DSP data · distilled spirits plant data · winery brewery distillery license lookup · alcohol distributor database · DSP distilled spirits plant data · TTB COLA permittee search · BWN brewer's notice · TTB FOIA download · TTB CSV scraper · Alcohol Tobacco Tax and Trade Bureau data · US winery database · US distillery directory · craft distillery prospect list · craft winery prospect list · Napa Valley winery data · Sonoma winery list · Kentucky bourbon distillery list · Tennessee whiskey distillery data · Brooklyn craft distillery data · Asheville winery data · San Diego craft distillery list · Portland Oregon distillery data · Willamette Valley winery list · Texas Hill Country winery data · Finger Lakes winery data · Walla Walla winery list · Paso Robles winery list · Virginia winery data · Yadkin Valley winery data · US alcohol importer directory · US wine importer list · alcohol wholesaler database · three-tier distribution data · federal alcohol basic permit lookup · winery permit verification · distillery permit verification · craft beverage market research · beverage industry B2B leads · alcohol industry compliance data · Apify alcohol actor · ttb.gov scraper · beverage M&A target list · weekly new alcohol permits feed
Support
- Bug reports: Use the Issues tab on the Apify Store actor page
- Feature requests: Same place — please describe your beverage industry use case so we can prioritize correctly
- Direct contact: Through the Apify developer profile messaging
If this actor saves you time, a 5-star rating on the Apify Store helps other beverage industry, compliance, and B2B sales teams discover it. Cheers!