L logiover
business · Jul 9, 2026 · 6 min read

How to Scrape the New York Company Registry in 2026

Extract active New York companies from the official data.ny.gov registry — DOS ID, entity type, county, filing date and registered agent — no API key, bulk export.

New York State runs one of the largest business registries in the United States, and — unlike most corporate registries — it publishes the whole thing as open data. The Active Corporations dataset on data.ny.gov covers every currently-active corporation and LLC in the state, complete with the registered agent’s name and mailing address. The catch is the access layer: it’s a Socrata API that pages in slices, speaks a SQL-like query dialect called SoQL, and returns raw column names that need flattening before they’re useful for prospecting or KYC. This guide covers how the dataset works and how to turn it into clean, de-duplicated New York company rows.

What’s worth extracting

Each record in the Active Corporations dataset maps to one entity. The fields that matter for lead-gen, research and compliance:

  • IdentitydosId (the NY Department of State entity ID, the stable join key), name (the current entity name) and entityType (e.g. DOMESTIC BUSINESS CORPORATION, DOMESTIC LIMITED LIABILITY COMPANY).
  • Jurisdictionjurisdiction (state/country of formation) and county (the New York county the entity is filed in).
  • TimingfilingDate, the initial DOS filing date, which is what lets you surface newly-formed companies.
  • Contact-for-serviceagentName (the registered agent / DOS process name) plus the full mailing address split into agentAddress, agentCity, agentState and agentZip.

Every row also carries a direct url back to the source data.ny.gov record and a scrapedAt timestamp. The registered-agent block is the standout field here: most free company registries give you an entity name and nothing to contact, but New York publishes the official process-service address on every row.

How the data.ny.gov API actually works

The registry lives on Socrata, New York’s open-data platform. The dataset has a stable resource ID, and you query it as a JSON endpoint:

https://data.ny.gov/resource/n9v6-gdp6.json

Socrata supports a set of $ query parameters that behave like SQL clauses. Full-text search uses $q, structured filters go into a $where clause using SoQL, and paging is done with $limit and $offset. The actor maps its inputs onto exactly these: a free-text query becomes $q, and the county and entityType filters are ANDed together into a $where. A run for the newest LLCs in Brooklyn looks like this:

{
  "county": "KINGS",
  "entityType": "DOMESTIC LIMITED LIABILITY COMPANY",
  "order": "newest",
  "maxResults": 2000
}

County and entity-type values are uppercase in the source data (KINGS, QUEENS, NEW YORK, ERIE), so filters must match that casing. The order field accepts newest or oldest (by filing date) or name (A→Z) — newest is what you want when you’re hunting recent formations. For a broad name sweep across the whole state, drop the structured filters and just pass a query:

{
  "query": "consulting"
}

With no filters at all, the actor streams the entire active-corporations registry. Because it reads a plain JSON API over HTTP, there’s no browser, no login and no captcha — datacenter proxy is sufficient, and it’s on by default.

Open the New York Company Registry Scraper on Apify — one run returns up to ~100,000 active NY companies with entity type, county, filing date and registered-agent mailing address as clean columns. No API key, no login. Export to CSV, JSON, Excel or HTML.

The access reality

Socrata is generous compared to most registries, but there are real edges. Paging happens 1,000 records at a time via $limit/$offset, and the deeper you offset, the slower and more fragile the query gets. The actor pages at 1,000 records and stops at a 100,000-record deep-offset safety ceiling — that’s the practical upper bound for a single query.

For anything bigger than that, the pattern is the same as any large registry pull: split the run and combine the datasets. The natural dimensions:

  • By county — run the five NYC boroughs (NEW YORK, KINGS, QUEENS, BRONX, RICHMOND) and upstate counties like ERIE separately.
  • By entity type — business corporations and LLCs as distinct runs.
  • By filing-date order — pull newest first if you only care about recent formations and cap maxResults low.

The dataset is de-duplicated by dosId inside a run, so you won’t get the same entity twice. Set maxResults to stop early (default 1000), or 0 to pull to the ceiling.

The honest limitation to flag: the Active Corporations dataset does not publish company email or phone. What it does publish is the registered agent’s name and full mailing address — the official contact-for-service on record, which is genuinely useful for mail campaigns, legal service and compliance, but is not a marketing email list. Pair it with an enrichment tool if you need email or phone.

Example output

A single trimmed row:

{
  "dosId": "1234567",
  "name": "EXAMPLE CONSULTING LLC",
  "entityType": "DOMESTIC LIMITED LIABILITY COMPANY",
  "jurisdiction": "NEW YORK",
  "county": "NEW YORK",
  "filingDate": "2026-01-14T00:00:00.000",
  "agentName": "THE LLC",
  "agentAddress": "123 BROADWAY, SUITE 100",
  "agentCity": "NEW YORK",
  "agentState": "NY",
  "agentZip": "10001",
  "url": "https://data.ny.gov/resource/n9v6-gdp6.json?dos_id=1234567"
}

One row per company; export the whole set to CSV, JSON, Excel or HTML.

Typical use cases

  • B2B lead generation — build a targeted New York prospect list by county and entity type, with the registered-agent mailing address already on every row.
  • Sales prospecting — sort by filing date to surface the newest active companies and reach the registered agent before competitors do.
  • Market research — count and profile New York companies by entity type, county and filing date to measure formation activity across the state.
  • KYC / compliance & due diligence — verify a counterparty’s DOS ID, entity type, jurisdiction and active status against the official state record.
  • Competitor mapping — pull every company of a given type in a county and benchmark formation trends over time.
  • CRM enrichment — look up existing accounts by DOS ID and append authoritative registry fields.

Build-it-yourself vs. managed

Because the source is an open Socrata API, a DIY client is realistic — there’s no anti-bot wall to defeat. What you’re actually signing up to build is:

  • SoQL query construction — correctly ANDing county and entityType into a $where, and handling the uppercase-value convention.
  • Deep-offset paging — walking $limit/$offset in 1,000-row slices and knowing when to bail before the deep-offset performance cliff.
  • Socrata-to-tabular flattening — mapping raw column names like current_entity_name, dos_process_name and initial_dos_filing_date into clean output fields.
  • De-duplication by DOS ID and split-and-merge logic for pulls above the 100k ceiling.

That’s a day of work plus ongoing upkeep whenever the dataset schema shifts. The managed actor already carries it and runs on pay-per-result pricing — a fraction of a cent per company row — so pulling several thousand New York companies costs single-digit dollars with no proxy bill against an open state API.

Common pitfalls

Things specific to the New York dataset that trip people up:

  • Filter values are uppercase. county: "kings" won’t match; it must be KINGS. Same for entityType. Copy the exact casing from the dataset.
  • The registered agent is not the company’s email. It’s a mailing address for legal service. Treat it as a mail/compliance contact, not a cold-email target.
  • The 100k deep-offset ceiling is a hard stop. For statewide pulls that exceed it, split by county or entity type — a single query won’t reach every record.
  • filingDate is a timestamp string (2026-01-14T00:00:00.000), not a plain date. Parse it as ISO before sorting or bucketing by month.
  • “Active Corporations” means active only. Dissolved or inactive entities aren’t in this dataset — don’t expect it to be a full historical record of every company ever filed.
  • County names, not codes. Filtering is by county name string, so watch for NEW YORK (Manhattan) vs. the statewide sense of “New York.”

Wrapping up

The New York Active Corporations dataset is a rare thing: a US business registry that’s fully open, includes a contact-for-service address, and pages predictably. If you need it once and like writing SoQL, build against the Socrata endpoint directly. If you want de-duplicated, flat, English-labelled New York company rows — split correctly around the 100k ceiling and dropped into a spreadsheet or CRM — the managed actor delivers that on a schedule.

Run the New York Company Registry Scraper on Apify — filter by full-text query, county or entity type and get up to ~100,000 active NY companies per run, each with the registered-agent mailing address. No API key, no login. Export to CSV, JSON, Excel or HTML. Start on Apify’s free monthly credit.

Related guides