OpenCorporates Alternative — US Business Registry Scraper
Pricing
from $5.00 / 1,000 results
OpenCorporates Alternative — US Business Registry Scraper
Batch-verify US company names against official state Secretary-of-State business registries (NY, CO, CT, OR) — get status, incorporation date, entity type, registered agent, and officer data (CT) as structured KYB / lead-gen rows. No API key, no login.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🎯 What this 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 rotation —
curl-cffiimpersonates 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-Afterhonoured. - 🧱 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_normalizedcomes backinactivebefore you spend outreach budget on them.
⚙️ How to use it
- Click Try for free at the top of the page.
- Paste your company names into Search queries — one name per line (up to 500).
- Optionally narrow Jurisdictions to just the states you care about, and adjust Max results per query / Status filter.
- Click Start. Rows stream into the run's dataset as each name is resolved.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchQueries | array | yes | — | Company names to verify (1-500 entries, 1-200 chars each). |
jurisdictions | array | no | ["NY","CO","CT","OR"] | Which state registries to query per name. |
fetchOfficers | boolean | no | true | Resolve officer/principal data (CT only in v1; 1 extra request per matched CT row). |
maxResultsPerQuery | integer | no | 5 | Cap on matches returned per name, summed across jurisdictions (1-50). |
statusFilter | string | no | "any" | Post-filter on normalized status: any, active, or inactive. |
proxyConfiguration | object | no | {"useApifyProxy": false} | Optional — these are public open-data APIs, not known to fingerprint clients. |
Example input
{"searchQueries": ["Acme Robotics LLC"],"jurisdictions": ["NY", "CO", "CT", "OR"],"fetchOfficers": true,"maxResultsPerQuery": 5,"statusFilter": "any","proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one matched entity for one (query, jurisdiction) pair.
| Field | Type | Notes |
|---|---|---|
query | string | The input name this row matched. |
entity_id | string | State's internal id (dos_id / entityid / id / registry_number). |
entity_name | string | State's on-file entity name. |
jurisdiction | string | NY, CO, CT, or OR. |
entity_type | string | null | e.g. DOMESTIC BUSINESS CORPORATION, DLLC. |
status | string | null | Raw state status label (e.g. Good Standing). |
status_normalized | string | active, inactive, or unknown — derived per-state. |
formation_date | string | null | ISO YYYY-MM-DD. |
dissolution_date | string | null | ISO YYYY-MM-DD, when the state publishes it. |
principal_address | string | null | Flattened single-line address. |
registered_agent_name | string | null | When published. |
registered_agent_address | string | null | Flattened single-line address. |
officers | array | Officer/principal list — CT rows only, when fetchOfficers=true. |
source_record_url | string | Direct link to the raw SODA record. |
registry_url | string | The state's open-data dataset landing page. |
scraped_at | string | ISO 8601 UTC timestamp this row was written. |
Example output
{"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
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.005 | One-off warm-up charge per run |
result-row | $0.005 | Per matched entity row written to the dataset |
Example: 1 000 matched rows ≈ $5.00. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
This is a v1 with 4 confirmed states (NY, CO, CT, OR) — not the
18-state coverage some incumbents advertise. We picked these four
because each publishes a free, keyless, machine-readable dataset
sourced from the state's own Secretary of State; adding a state is a
per-state adapter, not a schema break, so more are on the roadmap.
Officer/principal data is genuinely sparse: only Connecticut publishes
a separate principals dataset in v1, so officers is [] for
NY/CO/OR rows by design, not a bug. Dataset freshness varies by state
(New York's snapshot is explicitly "as of the last business day of the
month," not real-time). This Actor has no relationship with, and is
not affiliated with, opencorporates.com — it queries the states'
official open-data portals directly.
🔗 Use with n8n
Wire this Actor into your n8n automations with the official Apify node:
- Add the Apify node and pick the Run Actor operation.
- Set the Actor to
devilscrapes/opencorporates-alternative-scraperand pass your input as JSON. - Chain a Get Dataset Items step to read the structured rows into the rest of your workflow (Sheets, Slack, your CRM, an AI agent, …).
Because n8n runs on a schedule or trigger, you get fresh company registry records on autopilot — for example, KYB onboarding checks that automatically flag dissolved or delinquent entities before you sign a customer.
❓ 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.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a 5th state added? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.