NY Corporation Registry - Companies & Filing History avatar

NY Corporation Registry - Companies & Filing History

Pricing

from $0.06 / 1,000 ny corporation records

Go to Apify Store
NY Corporation Registry - Companies & Filing History

NY Corporation Registry - Companies & Filing History

New York's corporation register (4.28M companies) and its complete Department of State filing history (20.9M documents): entity type, county, CEO, registered agent and address, plus every filed document, the status trail, the name trail and every address of record - joined on the exact DOS id.

Pricing

from $0.06 / 1,000 ny corporation records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Categories

Share

New York's corporation register, its complete filing history, its status trail, its name trail and its address-of-record trail - all on one exact key.

Every corporation in New York has a DOS id. That id is the same in the register and in the 20.9-million-document filing history, so a company's current record and every document it ever filed line up exactly - no name matching, no fuzzy joins.

Low cost

From $0.0001 per record, down to $0.00006 at Gold Pay-per-event: you are charged per record delivered, and nothing for the query.

What you get

CorpusRowsRow is
entities4,280,630one corporation on the register
filings20,946,484one document filed against a corporation
statuses20,946,484a filing carrying the corporation's status at that time
names7,493,463one recorded name, in use or superseded
addresses18,395,004one address of record on a filing

The history covers 7,188,809 distinct DOS ids against the register's 4,280,630 - it reaches corporations that have since been dissolved, merged or administratively removed. Ask for an id and you get the entire filing chain of a business that no longer appears on the register at all.

The register (entities)

  • Status - the corporation's standing, stamped on every entity record from the most recent filing that states one: Active (17.4M filings), Inactive (2.86M), Suspended (12,108), Discontinued (3,956). The register itself carries no status column, so this is the only place a suspended corporation is visible.
  • Entity type - across both corpora the source publishes 84 exact values (54 on the register, 84 on filings - 30 exist only as filing types): DOMESTIC LIMITED LIABILITY COMPANY (2,052,152), DOMESTIC BUSINESS CORPORATION (1,450,043), DOMESTIC NOT-FOR-PROFIT CORPORATION (287,453), foreign corporations and LLCs, professional service corporations, housing development fund companies, fire corporations, land banks, and the rest. Exact match - these types are long enough that one is often a prefix of another.
  • County - 64 values, New York 830,064, Kings 599,227, Queens 440,991, Nassau 407,154, Suffolk 343,718.
  • Jurisdiction of formation - 82 values: New York 3,931,262, Delaware 197,574, New Jersey 28,995, Florida 11,757, California 11,453.
  • Registration date back to 1800.
  • Four address blocks - the DOS process (service of process) address, the principal location address, the CEO block and the registered agent block, each a full address.
  • Last status - the corporation's current standing (lastStatus), the date the filing that stated it was filed (lastStatusDate), and the date of the newest filing of any kind (lastFilingDate).

The filing history (filings)

Every document ever recorded, with the law it was filed under, its filing / approval / effective dates, the entity type at the time, and the corporation's name as of that filing:

  • BIENNIAL STATEMENT (7,089,058) - the biennial filings NY corporations owe
  • CERTIFICATE OF INCORPORATION (4,066,695) - formations
  • ARTICLES OF ORGANIZATION (2,347,995) - LLC formations
  • DISSOLUTION BY PROCLAMATION (1,622,585) - dissolution for non-payment, where 1.6M corporations quietly went out of business
  • CERTIFICATE OF PUBLICATION (1,089,923)
  • CERTIFICATE OF AMENDMENT (703,642), CERTIFICATE OF DISSOLUTION (585,418), APPLICATION OF AUTHORITY (540,521 - foreign corporations entering NY), ASSUMED NAME CORP INITIAL FILING (444,010), and more

The status, name and address trails

  • statuses - a parallel view of the filing stream (the same 20,946,484 filing rows), each row carrying the corporation's status as of that filing (Active 17,439,274 / Inactive 2,861,951 / Suspended 12,108 / Discontinued 3,956) and a blank where the source recorded none. This is the standing trail: filter by status to find every suspended or discontinued filing on record.
  • names - every name recorded on a filing, with name_type and a name_status of A (in use) or I (superseded): 4,313,513 in use against 3,179,950 superseded. The rename trail a current-name-only lookup loses entirely.
  • addresses - 18,395,004 addresses of record, each with the party the address belonged to, a numeric address type, and the full address including the ZIP+4 split across its own columns.

Modes

  • rows (default) - records matching your filters. Provide a DOS id for one corporation, a name substring to search, or a document type and a date window to sweep the filing stream.
  • aggregate - one count row per group. Roll the register up by entity type, county or jurisdiction; the filings by document type, entity type, county or law; the statuses by status; the names by name status; the addresses by address type.
  • profile - one DOS id in, the corporation's register row plus its full status, filing, name and address history out, up to your maxResults budget.

Inputs

The filter set follows the corpus you pick. The entities corpus takes entityId, name, entityType, county, jurisdiction, city, zip, agentName and a filedFrom / filedTo date window. The filings corpus takes entityId, entityType, documentType, filingName, law, filingNum, county, plus date windows on the filed and effective dates. The statuses corpus takes status and a date window; names takes filingName and nameStatus; addresses takes addressName, addressCity, addressState, addressZip and addressType.

A filter that belongs to the other corpus is rejected outright rather than silently ignored - so a query you narrowed never comes back unnarrowed.

Example inputs

Every active LLC named "Contracting" in New York

{ "corpus": "entities", "name": "CONTRACTING",
"entityType": "DOMESTIC LIMITED LIABILITY COMPANY", "maxResults": 200 }

The full filing chain of one corporation

{ "mode": "profile", "entityId": "1000013", "maxResults": 500 }

Every dissolution filed this year

{ "corpus": "filings", "documentType": "CERTIFICATE OF DISSOLUTION",
"filedFrom": "2026-01-01", "maxResults": 500 }

How many corporations by entity type

{ "mode": "aggregate", "corpus": "entities", "groupBy": "entityType" }

Notes on the data

  • The register carries no status column - but the status does exist. New York records a corporation's standing per filing, not on the register, so it lives in the statuses corpus. Every entity record is stamped with the newest stated status (lastStatus), with lastStatusDate recording the filing that stated it and lastFilingDate the newest filing of any kind - a suspended corporation is visible without a second query.
  • The register is the narrower side. 2.9M DOS ids appear only in the history. If a lookup returns filings but no register row, the corporation was removed from the register - the documents are the surviving record.
  • A handful of values contain non-ASCII characters that come straight from the source (one entity type uses an en dash, another a non-breaking space). Matching is exact on what the source stores.
  • County and jurisdiction counts include a blank bucket. New York's register has 64 county values of which one is blank (16,315 rows), and 82 jurisdiction values of which one is blank (12,770 rows).
  • The register stores ZIP+4 as nine digits with no dash (122072543 for 12207-2543) on 102,961 rows. A zip filter matches the 5-digit prefix, so both that and a plain 12207 are returned.

Output

One JSON record per row, with the same key set whichever corpus produced it - so the rows load cleanly into a table or a dataframe without a schema union step.

Pay-per-event - you are charged per record delivered (entity-record), never for the query itself. The run stops cleanly if you set a spend limit on your Apify account.

Example output

One corporation - entityId=8024194 on the entities corpus, one record:

{
"platform": "ny-corporation-registry",
"source": "new-york-dos-corporations",
"corpus": "entities",
"mode": "rows",
"recordType": "entities",
"groupKey": "", "groupCount": "", "groupBy": "",
"entityId": "8024194",
"entityName": "UNDERWOOD PROPCO LLC",
"entityType": "DOMESTIC LIMITED LIABILITY COMPANY",
"county": "Nassau",
"jurisdiction": "New York",
"filingDate": "2026-09-17T00:00:00.000",
"lastFilingDate": "", "lastStatus": "", "lastStatusDate": "",
"processName": "Charles Hartman",
"processAddress1": "1212 Seagirt BLVD",
"processAddress2": "",
"processCity": "Far Rockaway",
"processState": "NY",
"processZip": "11619",
"agentName": "", "agentAddress1": "", "agentAddress2": "", "agentCity": "", "agentState": "", "agentZip": "",
"locationName": "", "locationAddress1": "", "locationAddress2": "", "locationCity": "", "locationState": "", "locationZip": "",
"chairmanName": "", "chairmanAddress1": "", "chairmanAddress2": "", "chairmanCity": "", "chairmanState": "", "chairmanZip": "",
"address1": "", "address2": "", "addressCity": "", "addressState": "", "addressZip5": "", "addressZip4": "", "addressCountry": "", "addressType": "",
"documentType": "", "law": "", "filingNum": "", "nameStatus": "", "nameType": "",
"effectiveDate": "", "approvedDate": "", "durationDate": "", "modCertCode": "", "nfpType": "",
"status": "",
"sourceUpdatedAt": "2026-09-18"
}

mode=aggregate, corpus=entities, groupBy=entityType - one row per type; every group is returned, and the group lands in groupKey with its count in groupCount:

DOMESTIC LIMITED LIABILITY COMPANY 2,052,152
DOMESTIC BUSINESS CORPORATION 1,450,043
DOMESTIC NOT-FOR-PROFIT CORPORATION 287,453