# NY Business Filings: New LLCs, Corps & Active Entity Roster (`jserle/ny-business-filings-feed`) Actor

New York business filings from the NYS Department of State: daily new LLCs and corporations with filer and service-of-process addresses, full filing history since 1800, and the active entity roster, which carries registered agent and chairman. Filter by type, county, name, date or DOS id.

- **URL**: https://apify.com/jserle/ny-business-filings-feed.md
- **Developed by:** [JS Tech Solutions](https://apify.com/jserle) (community)
- **Categories:** Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 business filing records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## NY Business Filings: New LLCs, Corps & Active Entity Roster

Pulls New York business filings from the NYS Department of State's own open datasets into clean JSON records: every new LLC, corporation and foreign entity authorized to do business in New York, with the filer's name and address and the service-of-process address; the full filing history of any entity; and the roster of active entities, which is where the registered agent and chairman come from. Filter by filing type, county, entity name, entity type, date range or DOS id.

Three modes, one record shape:

- **newFilings** (default): the Department's daily feed, a rolling window of roughly 30 days (92,743 rows on 2026-08-23). About 4,700 unique formation filings in the last seven days.
- **history**: every filing on record, 20,876,151 documents dated 1770 to 2026-08-18, with document type and amendment flags. Best with a DOS id, a name or a date range.
- **activeEntities**: the 4,270,956 currently active entities, with DOS process address, registered agent (872,275 entities name one), chairman (473,888) and location.

### Who uses this data

- **B2B lead generation and sales teams** working new-business lists: every new LLC and corporation in a county this week, with the address legal documents are served at.
- **Registered-agent services, formation services and business attorneys** watching who is filing and who is filing for them (`filer` is often the formation service or law firm).
- **Banks, payment processors, insurers and payroll providers** onboarding newly formed New York businesses.
- **Compliance, KYC and due-diligence teams** pulling an entity's complete filing history by DOS id, or confirming an entity is active and who its agent is.
- **Researchers and journalists** tracking business formation by county and entity type over time.

### What you get

One dataset item per filing (`newFilings`, `history`) or per active entity (`activeEntities`), newest first. All three modes emit the same fields, with `null` where a dataset does not carry a value, so they pipe into one table. A real item from the default run on 2026-08-23, trimmed to its populated fields:

```json
{
  "mode": "newFilings",
  "dosId": "8002003",
  "entityName": "M&M COLLECTIBLES & TRADING COMPANY LLC",
  "filingType": "ARTICLES OF ORGANIZATION",
  "entityType": "DOMESTIC LIMITED LIABILITY COMPANY",
  "filingDate": "2026-08-21",
  "approvedDate": "2026-08-21",
  "effectiveDate": "2026-08-21",
  "filmNumber": "260821000001",
  "certificateCode": "01DA A",
  "county": "Monroe",
  "jurisdiction": "NY",
  "law": "LIMITED LIABILITY COMPANY LAW - 203 LIMITED LIABILITY COMPANY LAW",
  "duration": "PERPETUAL",
  "filer": {
    "name": "LEGALZOOM.COM, INC.",
    "address1": "101 N BRAND BLVD",
    "address2": "11TH FLOOR",
    "city": "GLENDALE",
    "state": "CA",
    "zip": "91203",
    "zip4": null,
    "country": "USA"
  },
  "serviceOfProcess": {
    "name": "THE LLC",
    "address1": "123 Elmcrest Rise",
    "address2": null,
    "city": "West Henrietta",
    "state": "NY",
    "zip": "14586",
    "zip4": null
  },
  "registeredAgent": null,
  "chairman": null,
  "location": null,
  "mergerConstituents": null,
  "stock": null,
  "amendmentFlags": null,
  "source": "https://data.ny.gov/resource/k4vb-judh.json",
  "sourceDataset": "k4vb-judh",
  "datasetPage": "https://data.ny.gov/d/k4vb-judh",
  "attribution": "New York State Department of State",
  "sourcePublishedAt": "2026-08-23T11:19:07.000Z",
  "fetchedAt": "2026-08-23T16:37:31.812Z"
}
```

Field notes:

- `filer` (newFilings only) is whoever submitted the document: often a formation service, a law firm or the owner. `serviceOfProcess` is the name and address the Secretary of State mails legal process to; in `newFilings` it comes from the feed's `sop_*` columns, in `activeEntities` from `dos_process_*`.
- `registeredAgent`, `chairman` and `location` come only from `activeEntities`; the daily feed and the history dataset do not publish them.
- `amendmentFlags` (history only) is an object of booleans naming what an amendment changed: `name`, `county`, `registeredAgent`, `stock`, `location`, `chairman`, `duration`, `purposes`, `restatedCertificate`, `deadFile` and so on.
- `stock` (newFilings, corporations) lists the old and new share classes (`shares`, `type`, `parValue`), and `mergerConstituents` lists the entities in a merger.
- `filingDate` is the filing date in `newFilings`, the date filed in `history`, and the initial DOS filing date in `activeEntities`. All dates are ISO 8601 calendar dates. `approvedDate` and `effectiveDate` are `null` in `activeEntities`.
- `sourcePublishedAt` is the dataset's own last-update timestamp, so you can see how fresh the copy you received is.

Records are deduplicated on the filing's natural key (DOS id + film number + filing type + date; DOS id alone for active entities). The daily feed publishes exact duplicate rows (2,527 of the 7,260 formation rows in the last seven days on 2026-08-23 were repeats), and you are charged for unique filings only. Rows missing an id, name, type or date, or carrying an unparseable date, are skipped and counted in the run summary, never delivered.

### Input

Everything is optional. Run it with no input and you get the 100 newest formation filings (Articles of Organization, Certificates of Incorporation and Applications of Authority) from the last seven days.

| Field | Type | Default | Notes |
| --- | --- | --- | --- |
| `mode` | enum | `newFilings` | `newFilings`, `history` or `activeEntities`. |
| `filingTypes` | string\[] | see note | Exact, case-insensitive values of `filing_type` (newFilings) or `documenttype` (history). Default: the three formation types on the plain `newFilings` feed; **all document types** in `history` mode and whenever `dosId` is given. Must be empty in `activeEntities`. |
| `dosId` | string | - | The entity's DOS id, e.g. `8002906`. Switches the filing-type default to all document types and, in `newFilings`, removes the implied 7-day window. |
| `county` | string | - | Case-insensitive exact county name, e.g. `Kings`, `Nassau`, `Erie`. NYC boroughs use county names: `New York`, `Kings`, `Queens`, `Bronx`, `Richmond`. |
| `nameContains` | string | - | Case-insensitive substring on the entity name. |
| `entityTypeContains` | string | - | Case-insensitive substring on the entity type, e.g. `LIMITED LIABILITY`, `BUSINESS CORPORATION`, `NOT-FOR-PROFIT`, `FOREIGN`. |
| `dateFrom` | ISO date | 7 days ago in `newFilings` | Filings dated on or after this date. No default in the other modes. |
| `dateTo` | ISO date | - | Filings dated on or before this date. |
| `hasRegisteredAgent` | boolean | `false` | `activeEntities` only: keep entities that name a registered agent. Fails the run in other modes, which have no such column. |
| `maxResults` | integer | `100` | 1 to 50000. This is your cost cap: you pay per delivered record. |
| `includeRaw` | boolean | `false` | Attach a `raw` object with the Socrata row under its Department of State column names. |

Filing types seen in the daily feed on 2026-08-23, most common first: BIENNIAL STATEMENT, ARTICLES OF ORGANIZATION, CERTIFICATE OF PUBLICATION, CERTIFICATE OF INCORPORATION, CERTIFICATE OF CHANGE BY ENTITY, CERTIFICATE OF ASSUMED NAME, DISSOLUTION BY PROCLAMATION, CERTIFICATE OF DISSOLUTION-CANCELLATION, APPLICATION OF AUTHORITY, CERTIFICATE OF AMENDMENT, SURRENDER OF AUTHORITY, CERTIFICATE OF MERGER and about twenty rarer ones. The history dataset uses its own vocabulary for some documents (for example CERTIFICATE OF DISSOLUTION, ASSUMED NAME CORP INITIAL FILING).

#### Example inputs

**New LLCs and corporations in Brooklyn this week** (lead generation):

```json
{
  "county": "Kings",
  "maxResults": 500
}
```

**Every document an entity has ever filed** (due diligence; no `filingTypes` needed, a DOS id defaults to all document types):

```json
{
  "mode": "history",
  "dosId": "22863"
}
```

**Active Nassau County entities formed this year that name a registered agent** (agent prospecting):

```json
{
  "mode": "activeEntities",
  "county": "Nassau",
  "hasRegisteredAgent": true,
  "dateFrom": "2026-01-01",
  "maxResults": 1000
}
```

**Dissolutions in the last 30 days** (churn and collections):

```json
{
  "filingTypes": ["DISSOLUTION BY PROCLAMATION", "CERTIFICATE OF DISSOLUTION-CANCELLATION"],
  "dateFrom": "2026-07-24",
  "maxResults": 2000
}
```

### Pricing

**$0.002 per record; you pay only for records delivered.** One charge per dataset item, nothing else. Set `maxResults` and you have set your bill: 100 records is $0.20, 1,000 is $2.00. Filters are applied by the source before delivery, duplicates are removed before delivery, and a search that matches nothing is free.

### Data source, refresh and licence

Records come from three Socrata (SODA) datasets published by the **New York State Department of State, Division of Corporations** on data.ny.gov (Open NY):

- newFilings: [Daily Corporation and Other Entity Filing Data](https://data.ny.gov/d/k4vb-judh) (`k4vb-judh`)
- history: [Corporations and Other Entities: All Filings](https://data.ny.gov/d/63wc-4exh) (`63wc-4exh`)
- activeEntities: [Active Corporations: Beginning 1800](https://data.ny.gov/d/n9v6-gdp6) (`n9v6-gdp6`)

**Refresh:** the Department's own metadata gives the posting frequency as **daily** for the feed, **weekly** for the history and **monthly** for the active roster (read 2026-08-23; on that day the feed and the roster had both been updated that morning and the roster's newest filing date was 2026-08-22, so the roster runs ahead of its stated cadence). Each run reports `sourcePublishedAt` so you can see exactly how fresh your copy is. Run the Actor on a schedule and you track the state's own refresh; there is no faster public feed.

**Licence:** none of the three datasets declares a licence in its metadata (the field is empty); each carries the attribution **"New York State Department of State"**, which every record repeats in `attribution`. Open NY publishes its datasets for public reuse and this Actor reads them through the portal's documented SODA API, one request at a time, with the 1-second `Crawl-delay` from data.ny.gov's robots.txt (which allows `/resource/*`), a descriptive User-Agent (`jserle-apify-actor/ny-business-filings-feed`) and no API token. Check the portal's terms of use for your own use case.

The Department's published disclaimer, reproduced from the daily feed's metadata: "New York State Department of State, its employees, officers and agents make no representation, warranty or guarantee as to the accuracy, completeness, currency or suitability of the data for any purpose, real or implied. The Department relies upon information provided to it. Therefore, the accuracy of data cannot be guaranteed."

This Actor is **not affiliated with or endorsed by the New York State Department of State**. A default run makes three requests.

### Limitations

- **As filed, not verified.** Names and addresses are what the filer submitted. The Department itself notes that a service-of-process address "may not reflect the physical location of the corporation or any of its officers".
- **No phone numbers, emails or officers beyond the chairman.** New York does not publish them. The active roster names a chairman for 473,888 of 4,270,956 entities and a registered agent for 872,275.
- **The daily feed is a window, not an archive.** It holds about 30 days of approved filings; `filingDate` can occasionally be older than the window when an older filing was approved recently. Use `history` for anything older.
- **History lags the feed by about a week** (newest date filed 2026-08-18 when the feed ran to 2026-08-21 on 2026-08-23), and a brand-new entity may not appear in it yet.
- **The active roster excludes inactive entities** by the Department's design, and its `county` is the current county of incorporation, which the Department notes can change.
- **Dissolved or merged entities** appear in the feed and the history as filings, never in the roster.
- **A filter that matches nothing returns zero records and succeeds.** That is a valid, free answer. A run only fails when the source itself is broken, and then it exits non-zero having pushed nothing and charged nothing: if a dataset stops publishing a column the normalizer reads, reports an implausibly small row count, returns no rows at all to the default query, hands back fewer rows than its own count for the same query, or the run's charge allowance cannot be read.

### FAQ

#### How do I get a list of new LLCs in New York?

Run with no input for the last seven days of Articles of Organization, Certificates of Incorporation and Applications of Authority statewide, or set `county` and raise `maxResults`. Set `entityTypeContains` to `LIMITED LIABILITY` for LLCs only, or `filingTypes` to `["ARTICLES OF ORGANIZATION"]`.

#### Can I search New York business entities by name?

Yes. `nameContains` is a case-insensitive substring in every mode. Use `activeEntities` for the current roster (name, county, agent, chairman) and `history` for everything matching entities have ever filed (history defaults to all document types).

#### Does it include the registered agent?

Only in `activeEntities`, which carries `registeredAgent` for the 872,275 active entities that name one, plus `serviceOfProcess` for all. The default `newFilings` feed has `registeredAgent: null` on every record: it carries `serviceOfProcess` (the address legal process is served at) and `filer`, and New York does not publish a separate registered-agent column in it.

#### How do I look up a company by DOS id?

Set `dosId`. In `newFilings` it returns that entity's recent filings of every type, in `history` its complete document list, and in `activeEntities` its current record. A DOS id switches the filing-type default to all document types, so nothing is dropped.

#### How current is the New York business filings data?

The feed is posted daily and had been updated the morning this was written; the history weekly; the roster is stated as monthly but was also current to the previous day. Every record carries `sourcePublishedAt`.

#### Does it cover assumed names (DBAs), dissolutions or biennial statements?

Yes, in `newFilings` and `history`: set `filingTypes` to the document types you want, for example `CERTIFICATE OF ASSUMED NAME`, `DISSOLUTION BY PROCLAMATION` or `BIENNIAL STATEMENT`.

### Related datasets

Other datasets by the same author, all pay-per-record with source, refresh cadence and licence stated on each listing:

**Public records and procurement feeds**

- [NYC PASSPort Procurement Scraper (RFPs, Bids & Contracts)](https://apify.com/jserle/nyc-passport-procurement)
- [E-Rate Form 470 RFP Scraper (USAC School & Library Bids)](https://apify.com/jserle/erate-form-470-rfp-feed)

**New York health data**

- [New York Nursing Home Bed Availability (NYSDOH) Scraper](https://apify.com/jserle/ny-nursing-home-bed-census)

**Medicare provider enrollment data**

- [Medicare Revoked Providers List (CMS Revocations) Scraper](https://apify.com/jserle/medicare-revoked-providers)
- [Medicare Opt-Out Providers List (CMS Affidavits) Scraper](https://apify.com/jserle/medicare-opt-out-physicians)
- [Medicare Revalidation Due Date List (CMS) Scraper](https://apify.com/jserle/medicare-revalidation-due-leads)

**Nursing home and long-term care data**

- [Nursing Home Deficiency Citations (CMS) Scraper](https://apify.com/jserle/nursing-home-deficiency-citations)
- [Nursing Home Fines & Civil Money Penalties (CMS) Scraper](https://apify.com/jserle/nursing-home-penalties-fines)
- [Nursing Home Directory & Ownership (CMS Form 671) Scraper](https://apify.com/jserle/ltc-facility-characteristics)
- [Nursing Home Daily Nurse Staffing (CMS PBJ) Scraper](https://apify.com/jserle/cms-nursing-home-staffing-daily)
- [Nursing Home Change of Ownership (CMS SNF CHOW) Scraper](https://apify.com/jserle/snf-change-of-ownership-tracker)

**Developer and AI test data**

- [Synthetic Invoice OCR Ground Truth Dataset Generator](https://apify.com/jserle/ocr-ground-truth-document-factory)

# Actor input Schema

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

newFilings: the Department of State's daily feed, a rolling window of about 30 days of filings with filer and service-of-process addresses. history: every filing since 1800 (about 20.9 million), with document type and amendment flags; best with a DOS id, a name or a date range. activeEntities: the roster of about 4.3 million active entities with DOS process address, registered agent, chairman and location.

## `filingTypes` (type: `array`):

Keep only these filing types (newFilings: filing\_type; history: documenttype). Case-insensitive exact values, for example ARTICLES OF ORGANIZATION, CERTIFICATE OF INCORPORATION, APPLICATION OF AUTHORITY, BIENNIAL STATEMENT, CERTIFICATE OF ASSUMED NAME, CERTIFICATE OF AMENDMENT, CERTIFICATE OF MERGER, DISSOLUTION BY PROCLAMATION. Default: the three formation types (Articles of Organization, Certificate of Incorporation, Application of Authority) for the plain newFilings feed; ALL document types in history mode and whenever a DOS id is given. Leave empty to accept the default. Must be empty in activeEntities mode, which has no filing-type column.

## `dosId` (type: `string`):

The entity's Department of State id, for example 8002906. Works in every mode. With a DOS id the filing-type default switches to all document types and the newFilings 7-day window is dropped, so you get the entity's complete recent (newFilings) or lifetime (history) document list.

## `county` (type: `string`):

Case-insensitive exact match on the county of the principal office (newFilings, history) or the entity's county (activeEntities). Examples: Kings, Queens, Nassau, Westchester, Erie. New York City boroughs use their county names: New York (Manhattan), Kings (Brooklyn), Queens, Bronx, Richmond (Staten Island).

## `nameContains` (type: `string`):

Case-insensitive substring matched against the entity name. Example: bakery

## `entityTypeContains` (type: `string`):

Case-insensitive substring matched against the entity type, for example LIMITED LIABILITY, BUSINESS CORPORATION, NOT-FOR-PROFIT, FOREIGN, PROFESSIONAL SERVICE.

## `dateFrom` (type: `string`):

ISO date, for example 2026-01-01. Keeps filings dated on or after this date (newFilings: filing date; history: date filed; activeEntities: initial DOS filing date). In newFilings mode this defaults to 7 days ago unless a DOS id is given.

## `dateTo` (type: `string`):

ISO date, for example 2026-06-30. Keeps filings dated on or before this date.

## `hasRegisteredAgent` (type: `boolean`):

activeEntities mode only: keep entities that name a registered agent (about 872,000 of the 4.27 million active entities on 2026-08-23). Setting it in another mode fails the run, because those datasets carry no registered-agent column.

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

How many records to deliver, newest first. You are charged per delivered record, so this is also your cost cap.

## `includeRaw` (type: `boolean`):

Attach a `raw` object with the Socrata row this record was built from, under its Department of State column names. Useful for auditing the normalization; roughly doubles item size.

## Actor input object example

```json
{
  "mode": "newFilings",
  "hasRegisteredAgent": false,
  "maxResults": 100,
  "includeRaw": false
}
```

# Actor output Schema

## `results` (type: `string`):

One item per filing or active entity delivered by this run.

## `summary` (type: `string`):

Source dataset, row counts, duplicates dropped, malformed rows skipped, filters applied, delivered records and whether the charge limit stopped the run.

# 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 = {
    "mode": "newFilings",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("jserle/ny-business-filings-feed").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 = {
    "mode": "newFilings",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("jserle/ny-business-filings-feed").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 '{
  "mode": "newFilings",
  "maxResults": 100
}' |
apify call jserle/ny-business-filings-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jserle/ny-business-filings-feed"
        }
    }
}

```

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/tswjUduhNeYe5d3O3/builds/xiDpzkstrT0MUtUhV/openapi.json
