OpenCorporates Alternative icon

Lead generation

OpenCorporates Alternative — US Business Registry Scraper

Batch-verify up to 500 US company names against the states' own Secretary-of-State open-data registries (NY, CO, CT, OR) and get one normalized row per matched entity — status collapsed to active/inactive/unknown, entity type, formation and dissolution dates, principal address, registered agent, and Connecticut officer names. Keyless: it queries each state's free Socrata API, not opencorporates.com and not a paywalled search UI.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

This Actor batch-verifies company names against official state Secretary-of-State open-data registries — New York, Colorado, Connecticut, and Oregon in v1 — and returns one structured row per matched entity per state. Each row carries the state's on-file entity name, status, entity type, formation date, principal address, registered agent, and (Connecticut only) officer/principal names.

We built this as a self-serve alternative to subscription KYB/registry tools: feed it a list of company names, get back structured, Pydantic-validated rows you can pipe straight into a CRM, a compliance workflow, or a spreadsheet. It queries the states' own free, keyless Socrata open-data APIs directly — not opencorporates.com, and not a scrape of any paywalled search UI.

What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so every request looks like a browser, not Python.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per request, Retry-After honoured.
  • 🧱 Graceful degradation per state — if one state's dataset hiccups, that state is skipped with a warning; your batch keeps running.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, a shared cross-state schema despite each state publishing wildly different raw field names.
  • 🔒 Privacy-conscious by design — Connecticut's principals dataset also publishes home addresses; we never surface them, only business addresses.
  • 💰 Pay-Per-Event pricing — you only pay for matched entity rows that land in your dataset. No data, no charge (beyond the small warm-up fee).

Use cases

  • KYB / onboarding checks — batch-verify a list of business names before onboarding a new customer or vendor.
  • Sales & lead-gen prospecting — confirm a prospect list is made of real, active, on-file entities before outreach.
  • Due-diligence research — pull incorporation date, entity type, and registered-agent data for a target list of companies.
  • Journalism & investigations — cross-check company names against official state filings, batch-style.
  • List hygiene — drop companies whose status_normalized comes back inactive before you spend outreach budget on them.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
searchQueries array yes Company names to verify against state business registries (1-500 entries, 1-200 chars each).
jurisdictions array no Which state Secretary-of-State registries to query per name.
fetchOfficers boolean no Resolve the companion officer/principal dataset per matched entity. Only Connecticut publishes one in v1 (1 extra request per matched CT row).
maxResultsPerQuery integer no Cap on candidate matches returned per input name, summed across jurisdictions.
statusFilter string no Client-side post-filter on the normalized status_normalized field.
{
  "searchQueries": [
    "Acme Robotics LLC"
  ],
  "jurisdictions": [
    "NY",
    "CO",
    "CT",
    "OR"
  ],
  "fetchOfficers": true,
  "maxResultsPerQuery": 5,
  "statusFilter": "any",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

queryentity_identity_namejurisdictionentity_typestatusstatus_normalizedformation_datedissolution_dateprincipal_addressregistered_agent_nameregistered_agent_addressofficerssource_record_urlregistry_urlscraped_at

{
  "query": "Acme Robotics LLC",
  "entity_id": "20251664337",
  "entity_name": "ACME ROBOTICS LLC",
  "jurisdiction": "CO",
  "entity_type": "DLLC",
  "status": "Good Standing",
  "status_normalized": "active",
  "formation_date": "2025-06-15",
  "dissolution_date": null,
  "principal_address": "9159 Anasazi Indian Trl, Highlands Ranch, CO 80129",
  "registered_agent_name": "ACME ROBOTICS LLC",
  "registered_agent_address": "9159 Anasazi Indian Trl, Highlands Ranch, CO 80129",
  "officers": [],
  "source_record_url": "https://data.colorado.gov/resource/4ykn-tg5h.json?entityid=20251664337",
  "registry_url": "https://data.colorado.gov/d/4ykn-tg5h",
  "scraped_at": "2026-07-18T12:00:00+00:00"
}

Pricing

EventPriceWhen
Actor start$0.05Once per run, covers warm-up and proxy session setup.
Result row emitted$0.0050Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

FAQ

Is this the same data as OpenCorporates?
No. We query each state's own free, keyless Secretary-of-State open-data API directly — not opencorporates.com. Same category of buyer, different (and, for these four states, more current) data source.
Why only 4 states in v1?
Those are the states we've confirmed publish a genuinely free, keyless Socrata dataset sourced from their own Secretary of State — not a scrape of a login-gated or Cloudflare-protected search UI. Adding a 5th state is a contained code change, not a rewrite; more states are on the roadmap.
Why is `officers` empty for most rows?
Only Connecticut's registry publishes a separate officer/principal dataset in v1. For NY, CO, and OR, officers is always [] — that's documented behaviour, not a missed field.
Can I search by entity ID instead of company name?
Not in v1 — this release is name-search only. Direct ID lookup is a straightforward addition without a schema break; let us know if you need it.
How current is the data?
It's exactly as current as each state's own open-data snapshot. New York's is explicitly monthly; Colorado, Connecticut, and Oregon appear to update more frequently based on observed timestamps, but none of these are real-time transactional lookups.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Read more

Articles about this Actor

Related Actors

Teams that run this also run