# East Baton Rouge Business Registry - NAICS & Ownership (`j0401/ebr-business-registry`) Actor

East Baton Rouge Parish's business registry (80,559 businesses): trade and legal name, Open/Closed with dates, ownership type, licensed account type, the NAICS industry code with category and group, and mailing and physical addresses. Good for lead lists and industry sizing.

- **URL**: https://apify.com/j0401/ebr-business-registry.md
- **Developed by:** [Wenhao Yang](https://apify.com/j0401) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.03 / 1,000 east baton rouge registered businesses

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## East Baton Rouge Business Registry - NAICS, Ownership & Status

Every business registered with East Baton Rouge Parish - Baton Rouge, Baker,
Central and Zachary - straight from the City-Parish's own open data portal.
**~80.6k registered businesses** (as of 2026-09-28), each with the industry it
is actually in and whether it is still open.

### Low cost

**From $0.00005 per record, down to $0.00003 at Gold.** Pay only for the
records you actually receive - the whole register stays queryable, you are
never billed for the scan behind it.

### What you get

- **Who** - the trade name, the registered legal name, and the account number
- **Open or closed** - the status, plus the business open date and, for closed
  businesses, the close date
- **What kind of business** - the ownership type (LLC, Corporation, Sole
  Proprietor, Partnership, Non-Profit, Government, LLP) and the licensed
  account type (Retail Dealer, Contractor, Professional, Wholesale Dealer,
  Insurance Company, )
- **The industry** - the NAICS code **and both of its descriptive levels**: the
  NAICS category and the NAICS group
- **Where** - a physical address and a separate mailing address, each with
  city, state and ZIP
- **Who to contact** - the contact person on the account

### Modes

- **rows** (default) - registered businesses matching your filters
- **aggregate** - counts by status, ownership type, account type or NAICS
  category

### Filters

Account number, business name, legal name, status, ownership type, account
type, NAICS code (prefix), NAICS category, contact person, address, city, ZIP,
and an open-date range.

### Example inputs

**Every open LLC in the food business**

```json
{ "status": "Open", "ownershipType": "LLC", "naicsCode": "722", "maxResults": 25 }
```

**Registrations opened in a window**

```json
{ "openedFrom": "2026-01-01", "openedTo": "2026-09-30", "maxResults": 100 }
```

**Contractors in one ZIP**

```json
{ "accountType": "Contractor", "zip": "70809", "maxResults": 50 }
```

**One business by account number**

```json
{ "accountNumber": "00946481" }
```

**How the register splits by industry**

```json
{ "mode": "aggregate", "groupBy": "naicsCategory" }
```

### Example output

**One registration** - `accountNumber=00946481`:

```json
{
 "platform": "ebr-business-registry",
 "source": "east-baton-rouge-parish-registered-businesses",
 "mode": "rows",
 "recordType": "business",
 "groupKey": "",
 "groupCount": "",
 "groupBy": "",
 "accountNumber": "00946481",
 "businessName": "VELOUR BAYOU MARKETING LLC",
 "legalName": "VELOUR BAYOU MARKETING LLC",
 "status": "Open",
 "accountLocation": "0022",
 "contactPerson": "",
 "openDate": "2026-03-01",
 "closeDate": "",
 "ownershipType": "LLC",
 "accountTypeCode": "9999",
 "accountType": "No Occupational License",
 "homeBased": "False",
 "naicsCode": "453000",
 "naicsCategory": "Miscellaneous Store Retailers",
 "naicsGroup": "Retail Trade",
 "filingReference": "N-16187",
 "classificationCode": "M",
 "mailAddress1": "12232 INDUSTRIPLEX BLVD D-19",
 "mailAddress2": "",
 "mailCity": "BATON ROUGE",
 "mailState": "LA",
 "mailZip": "70809",
 "physicalAddress1": "12232 INDUSTRIPLEX BLVD D-19",
 "physicalAddress2": "",
 "physicalCity": "BATON ROUGE",
 "physicalState": "LA",
 "physicalZip": "70809",
 "mailingAddress": "12232 INDUSTRIPLEX BLVD D-19",
 "physicalAddress": "12232 INDUSTRIPLEX BLVD D-19",
 "sourceUpdatedAt": "2026-12-20"
}
```

**`mode=aggregate`, `groupBy=naicsCategory`** - one count row per industry:

```
Miscellaneous Other Services                    13,459
Nonstore Retailers                              11,545
Miscellaneous Store Retailers                    8,423
Food Services & Drinking Places                  4,582
Specialty Trade Contractors                      4,063
Professional, Scientific & Technical Services    3,494
```

### Notes on the data, from the source

- **`status` has exactly two values: 37,405 Open and 43,154 Closed** (measured
  2026-09-28). The check that fixes their meaning: of the 43,154 rows marked
  Closed, 43,154 carry a close date; of the 37,405 marked Open, none does.
- **The industry classification is the deep part.** 79,647 of ~80.6k rows
  (98.9%) carry a NAICS code, and every one of those also carries the NAICS
  category name and the NAICS group name - so the register can be sliced by
  industry rather than by name alone.
- **Open dates carry outliers at both ends, and they are blanked rather than
  served as business dates:** 4,403 rows sit before 1990 (1,808 of them still
  Open) and 2 sit at 2027-01-01. Anything outside 1901-01-01 to 2027-01-01
  comes back empty. The close-date column has no such outliers.
- **A mailing address is often a different place from the physical one.**
  45,319 of ~80.6k rows (56%) have the two street lines identical; the rest are
  landlords, registered agents and out-of-state headquarters - **17,797 rows
  (22%) mail to a different city**, and 9,631 mail to a different state. Both
  blocks are returned, and the mailing side is populated on 80,345 rows
  (99.7%).
- **The contact person is blank on 3,315 rows** and a handful of address parts
  are missing on well under 1% of rows.
- **Three columns restate each other.** The numeric account-type code maps one
  to one onto the account-type label (code `9999` is "No Occupational License"
  on 29,856 rows both ways), so the label is what the filter and the aggregate
  use and the code is carried alongside.
- **Two columns are carried under neutral names on purpose.** The portal labels
  one of them "ADDRESS\_ID" and the other "FILING FREQUENCY", and the content
  contradicts both labels and swaps them: the first holds filing references
  (`N-16187`, `A-71965`) on 48% of rows, the second holds a single letter
  (M/L/I/Q/H/A/O/S) on 100% of rows, and the portal publishes no legend for the
  letters. They are returned as `filingReference` and `classificationCode` -
  neither is described as something it is not, and neither is offered as a
  filter, because a filter on an undocumented code is a guess.
- Invalid filter inputs (a `%` in a search, a non-numeric NAICS code, a
  malformed date, a status the source does not use) are rejected rather than
  passed to the source.

### Coverage and freshness

East Baton Rouge Parish registered businesses, all ~80.6k records, kept current
by the City-Parish. The newest business open date on the register at the time of
writing was 2026-12-20. Every record carries `sourceUpdatedAt`; the actor also
carries a count guard and a whole-corpus field-coverage guard, so a source that
collapses or changes shape fails loudly instead of returning an empty page as
success.

# Actor input Schema

## `mode` (type: `string`):

rows = businesses matching your filters (default). aggregate = one count row per group (see groupBy).

## `accountNumber` (type: `string`):

Exact Parish account number. Blank = any.

## `businessName` (type: `string`):

Trade name substring, e.g. 'MARKET'. Blank = any.

## `legalName` (type: `string`):

Registered legal name substring. Populated on about 53% of records - the rest carry only a trade name. Blank = any.

## `status` (type: `string`):

Open or Closed. 37,405 open and 43,154 closed. Blank = any.

## `ownershipType` (type: `string`):

Substring, e.g. 'LLC', 'Corporation', 'Sole Proprietor', 'Partnership', 'Non-Profit', 'Government', 'LLP'. Blank = any.

## `accountType` (type: `string`):

The licensable account type, e.g. 'Retail Dealer', 'Contractor', 'Professional', 'No Occupational License'. Blank = any.

## `naicsCode` (type: `string`):

NAICS industry code prefix, e.g. '722' for food services. 98.9% of records carry a code. Blank = any.

## `naicsCategory` (type: `string`):

NAICS category name substring, e.g. 'Food Services', 'Retail'. Blank = any.

## `contactPerson` (type: `string`):

Contact person substring. Blank = any.

## `address` (type: `string`):

Physical street address substring. Blank = any.

## `city` (type: `string`):

Physical city substring, e.g. 'BATON ROUGE'. Blank = any.

## `zip` (type: `string`):

Physical ZIP, matched as a prefix. Blank = any.

## `openedFrom` (type: `string`):

Earliest business open date (YYYY-MM-DD). Blank = any.

## `openedTo` (type: `string`):

Latest business open date (YYYY-MM-DD), inclusive. Blank = any.

## `maxResults` (type: `integer`):

Maximum records to return in rows mode (1-10000). Default 50.

## `groupBy` (type: `string`):

aggregate mode only: the dimension to count by.

## Actor input object example

```json
{
  "mode": "rows",
  "accountNumber": "",
  "businessName": "",
  "legalName": "",
  "status": "",
  "ownershipType": "",
  "accountType": "",
  "naicsCode": "",
  "naicsCategory": "",
  "contactPerson": "",
  "address": "",
  "city": "",
  "zip": "",
  "openedFrom": "",
  "openedTo": "",
  "maxResults": 50,
  "groupBy": "status"
}
```

# Actor output Schema

## `recordsUrl` (type: `string`):

East Baton Rouge registered businesses - as JSON

## `datasetUrl` (type: `string`):

No description

## `runUrl` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("j0401/ebr-business-registry").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("j0401/ebr-business-registry").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call j0401/ebr-business-registry --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,j0401/ebr-business-registry"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OGv4rmhGqs3RStHLd/builds/usO92fRn3aIFuYNQ1/openapi.json
