> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexusfeed.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ABC License Lookup API

> Verify liquor license status across California, Texas, New York, Florida, and Illinois — by trade name, owner, address, or license number.

The ABC License Lookup API returns the current status of a liquor license issued by a state alcoholic beverage control board. It supports both **name search** (find licenses matching a trade name, owner, or address) and **direct lookup** (fetch a specific record by license number). Every response includes a `_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](/states/california-abc) |
| Texas      | TX TABC                                      | [Texas TABC](/states/texas-tabc)         |
| New York   | NY SLA (Open Data SODA API)                  | [New York SLA](/states/new-york-sla)     |
| Florida    | FL DBPR                                      | [Florida DBPR](/states/florida-dbpr)     |
| Illinois   | IL ILCC (Akamai-protected Salesforce portal) | [Illinois ILCC](/states/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.                            |

At least one of `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

```json theme={null}
{
  "state": "CA",
  "query": {"dba_name": "TRADER JOE"},
  "total_results": 3,
  "results": [
    {
      "license_number": "47-123456",
      "license_type_code": "47",
      "dba_name": "TRADER JOE'S #123",
      "owner_name": "TRADER JOE'S COMPANY",
      "status": "ACTIVE",
      "expiration_date": "2026-09-30",
      "address": "1234 MAIN ST, LOS ANGELES, CA 90001",
      "county": "LOS ANGELES"
    }
  ],
  "_verifiability": {
    "source_timestamp": "2026-04-10T14:22:11Z",
    "extraction_confidence": 1.0,
    "raw_data_evidence_url": "https://www.abc.ca.gov/licensing/license-lookup/?RPTTYPE=15&DBANAME=TRADER%20JOE",
    "extraction_method": "structured_parse",
    "data_freshness_ttl_seconds": 86400
  }
}
```

### Lookup response

```json theme={null}
{
  "state": "CA",
  "license_number": "47-123456",
  "record": {
    "license_number": "47-123456",
    "license_type_code": "47",
    "dba_name": "TRADER JOE'S #123",
    "owner_name": "TRADER JOE'S COMPANY",
    "status": "ACTIVE",
    "expiration_date": "2026-09-30",
    "address": "1234 MAIN ST, LOS ANGELES, CA 90001",
    "county": "LOS ANGELES"
  },
  "_verifiability": {
    "source_timestamp": "2026-04-10T14:22:11Z",
    "extraction_confidence": 1.0,
    "raw_data_evidence_url": "https://www.abc.ca.gov/licensing/license-lookup/?RPTTYPE=15&DBANAME=TRADER%20JOE%27S",
    "extraction_method": "structured_parse",
    "data_freshness_ttl_seconds": 86400
  }
}
```

## License status values

The `status` field normalizes across states to one of:

* `ACTIVE` — license is currently valid
* `EXPIRED` — license is past its expiration date
* `SUSPENDED` — license is actively suspended by the state
* `REVOKED` — license has been permanently revoked
* `PENDING` — application is under review
* `SURRENDERED` — holder voluntarily gave up the license
* `UNKNOWN` — 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

<AccordionGroup>
  <Accordion title="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.
  </Accordion>

  <Accordion title="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.
  </Accordion>

  <Accordion title="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.
  </Accordion>

  <Accordion title="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`.
  </Accordion>
</AccordionGroup>

## Pricing

\$0.05 per request through the [RapidAPI ABC listing](https://rapidapi.com/ladourv/api/abc-license-compliance-api). ABC requests cost more than LTL because the extractors are more expensive to run — TX uses paid CAPTCHA credits, IL uses paid ScraperAPI credits, and all states bypass the 7-day LTL cache TTL.
