_verifiability block linking to the upstream state agency page so a human can independently confirm the data.
Who uses this
- Liquor distributors verifying a new account’s license is active before shipment
- Insurance underwriters binding a liquor liability policy and needing proof of active licensure
- Compliance platforms building watchlists that flag expired, suspended, or revoked licenses
- On-premises software (POS, reservation, rewards) onboarding new bar and restaurant accounts
- Investigators and due-diligence teams running checks on liquor-licensed businesses
- AI agents answering “does this bar have an active liquor license?” during a conversation
Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /v1/abc/search | Search by DBA, owner name, or address within a state |
GET | /v1/abc/license/{license_number} | Direct lookup by license number |
GET | /v1/abc/states | List supported states and per-state notes (e.g. CAPTCHA, Akamai, coverage) |
Covered states
| State | Agency | Page |
|---|---|---|
| California | CA ABC | California ABC |
| Texas | TX TABC | Texas TABC |
| New York | NY SLA (Open Data SODA API) | New York SLA |
| Florida | FL DBPR | Florida DBPR |
| Illinois | IL ILCC (Akamai-protected Salesforce portal) | Illinois ILCC |
Request parameters
GET /v1/abc/search
| Parameter | Type | Required | Description |
|---|---|---|---|
state | string | Yes | Two-letter state code: CA, TX, NY, FL, IL |
dba_name | string | One of three | Trade name / doing-business-as. Partial matches supported. |
owner_name | string | One of three | Owner or applicant name. Partial matches supported. |
address | string | One of three | Street, city, or region filter. |
dba_name, owner_name, or address must be provided. Calling /search with only a state returns 422 MISSING_PARAMS.
GET /v1/abc/license/{license_number}
| Parameter | Type | Required | Description |
|---|---|---|---|
license_number | path | Yes | State-issued license number. Format varies by state (CA uses 47-123456, etc.) |
state | query | Yes | Two-letter state code matching the license number |
Response shape
Search response
Lookup response
License status values
Thestatus field normalizes across states to one of:
ACTIVE— license is currently validEXPIRED— license is past its expiration dateSUSPENDED— license is actively suspended by the stateREVOKED— license has been permanently revokedPENDING— application is under reviewSURRENDERED— holder voluntarily gave up the licenseUNKNOWN— upstream source did not emit a recognizable status value
Caching and freshness
ABC license data caches for 24 hours (86400 seconds). This reflects the fact that license status changes are infrequent but consequential — a 24-hour staleness window is acceptable for compliance checks, insurance binding, and distributor onboarding, but not for real-time point-of-sale decisions. If your workflow requires near-real-time freshness, bypass the cache by contacting support.
State-specific gotchas
Texas — requires CAPTCHA solver on the server
Texas — requires CAPTCHA solver on the server
TX TABC’s public lookup page uses an image CAPTCHA on every submission. NexusFeed solves it via 2Captcha in the backend. If the server doesn’t have a 2Captcha key configured, TX endpoints return
503 CAPTCHA_SOLVER_NOT_CONFIGURED. Production deployments always have a 2Captcha key active.Illinois — Akamai anti-bot bypass
Illinois — Akamai anti-bot bypass
IL ILCC’s portal is a Salesforce Experience Cloud app behind Akamai CDN. Every proxy type (residential, datacenter, direct) is blocked. NexusFeed uses ScraperAPI’s render API to load the page in a managed browser farm. The downside: the portal’s FlexCard component ignores URL search params, so filtering is done client-side against the default 20 records.
New York — daily-updated Open Data feed
New York — daily-updated Open Data feed
NY SLA publishes active licenses through the state’s Open Data SODA API. NexusFeed mirrors it directly, which is faster and more reliable than DOM scraping, but it means only active licenses are returned. Expired and revoked records are not included in the NY feed. Use a different state if you need non-active records.
California — direct lookup falls back to search
California — direct lookup falls back to search
CA ABC’s
RPTTYPE=11 parameter for direct license-number lookup is unconfirmed by upstream documentation. NexusFeed tries it first and, on any error, falls back to a RPTTYPE=15 name search with post-filtering on the license number. Both paths report as structured_parse.