Chicago Business Licenses - Full History & Active avatar

Chicago Business Licenses - Full History & Active

Pricing

from $0.06 / 1,000 chicago business license records

Go to Apify Store
Chicago Business Licenses - Full History & Active

Chicago Business Licenses - Full History & Active

Chicago business licenses (public open data, 1.2M records, full history since 2002): every license event with licensee and DBA, address / ward / community area, class, business activity and the application-to-expiration lifecycle. Filter by class/status/name/ward/date or pull the live slice.

Pricing

from $0.06 / 1,000 chicago business license records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

Chicago Business Licenses - Full History, Since 2002

The City of Chicago publishes its entire business-license register - every license event back to 2002, live - as open data. This actor turns that file into a charged-per-record business-intelligence tool over 1.2 million records.

Built for: B2B sales and territory teams finding businesses by class and neighborhood, commercial real-estate and retail-site research, food-and-beverage and liquor diligence, vendor onboarding (is this restaurant actually licensed?), and market analysis of where Chicago business is opening and closing.

What it covers

1,206,033 license records since 2002, live (new issuances land within the week). This is the full history, not the current-license view: every original issue, renewal, location change and expiration is a row.

The register is dominated by a few classes:

License classRecords
Limited Business License482,012
Retail Food Establishment187,525
Regulated Business License73,484
Tobacco58,113
Consumption on Premises (incidental)41,030
Home Occupation / Home Repair / Tavern / Package Goods / Manufacturingthe long tail

Each record carries the business, the place, and the full application lifecycle:

  • the legal name and the DBA (they differ - PETSMART LLC doing business as PETSMART, Inc. #2525)
  • the address with ward, community area, neighborhood, police district and latitude/longitude
  • the license code and class, plus the business-activity array (a single license carries a pipe-delimited set of activities, e.g. "Provide Animal Grooming Services | Operate a Pet Shop / Sales of Animals | Retail Sales of General Merchandise")
  • status, and the full timeline: application created -> requirements complete -> payment -> conditional approval -> approved for issuance -> license start -> date issued -> expiration

Licensing clusters where Chicago business is: ward 42 (the Loop and Near North, 104,268 records), ward 34, ward 27, ward 2 - and by community area, Near North Side (97,454), Loop (92,223), Near West Side, West Town, Lake View.

The live slice is 4.6% of the file

Only ~54,000 records are live right now - which is the single most important thing to understand about this dataset. A license is active when it is not terminal (license_status AAI or AAC) and its expiration date is still ahead. Read the status letters alone and you get 1.2 million "active" rows; read the file as "current licenses" and you are 95% wrong. (This figure drifts down as expirations pass - treat it as an order of magnitude, not a constant.)

So the actor separates the two questions cleanly. rows (the default) gives you the full history - every license a business ever held - while active gives you who is licensed right now, and recent gives this month's issuances. Each renewal re-appears as its own row, so "every license this business held" and "is this business licensed today" are genuinely different queries, both supported.

One business can hold several live licenses at once, so the live slice is counted in licences, not businesses: the ~54,000 active rows resolve to roughly 37,000 distinct businesses. Both counts are in the output - licenseNumber and accountNumber - so you can pick the unit your question is about.

Status is the city's 5 exact codes: AAI (active) 1,125,751 / AAC (active, cancellation pending) 78,804 / REV (revoked) 1,464 / REA / INQ. Application type is 6: RENEW 917,580 / ISSUE 269,841 / C_LOC (location change) / C_EXPA / C_SBA / C_CAPA.

Typical questions

  • "Every active Tavern in Chicago, with address and expiration." (~774 active)
  • "Is this restaurant currently licensed - and what is its full license history?"
  • "Every license held by this business name."
  • "New businesses licensed in the last 30 days."
  • "What is licensed in ward 42 / the Loop right now?"
  • "Food-and-beverage licensing across the city: aggregate by class, ward or community area."
  • "Who holds a Tobacco or Package Goods license - retail diligence."

Inputs

InputWhat it does
moderows (full history, default) / active (live now) / recent (last 30 days) / aggregate
licenseClassthe class (fuzzy): 'Retail Food Establishment', 'Tavern', 'Package Goods', 'Peddler', 'Valet Parking', 'Tobacco', ...
statusexact code: AAI / AAC / REV / REA / INQ
applicationTypeexact: RENEW / ISSUE / C_LOC / C_EXPA / C_SBA / C_CAPA
licenseNumberexact number - all events for that license
name / addressbusiness/DBA name and street (fuzzy)
ward / communityAreaexact ward number; fuzzy community-area name
issuedFrom/To, expiresFrom/Toissue and expiration windows
groupByaggregate over licenseClass / status / applicationType / ward / communityArea / issueYear
maxResultscap records (default 50)

Default run = the 50 most recently issued rows (mode defaults to rows) - fast for the daily auto-test. For "who is licensed now" use active; for a broad view use aggregate.

Low cost

From $0.00006 per record - billed only for the rows you use, at the low end of the store. A street-level look at one neighborhood, or a whole food-and-beverage sweep, costs pennies.

The file is the trap. "Active" is a two-column question - a status code and an expiration date - and taking either alone is wrong on 95% of the file; the register is history, so a business appears once per renewal and a naive "licenses in Chicago" count is inflated by decades of past terms. The status letters are opaque (AAI, AAC are not obviously "active"), and the same account number recurs across events, so joining on it to "get the business" silently multiplies rows. The activity array and the class name are free text (~25 headline classes over 150 distinct code values), so a class filter lives or dies on matching the description the city actually writes. Normalizing all of that into a register where active really means active and a licenseClass / ward query returns exactly the businesses you mean is the actual product. Every pull is integrity-checked against the file's known shape, so a degraded source fails loudly instead of returning bad rows.

Source

  • Chicago Open Data: Business Licenses - the City of Chicago's published license register. Reflects the city's record as of each refresh; not a verification of any business's current standing.