West Virginia Secretary of State Business Search Scraper
Pricing
from $3.00 / 1,000 results
West Virginia Secretary of State Business Search Scraper
Search West Virginia's free public business entity database by organization name, agent/officer name, or exact record ID. Get entity type, status, formation/filing dates, addresses, registered agent, officers, and annual report history.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search the West Virginia Secretary of State's free public business entity database (apps.sos.wv.gov/business/corporations). Look up a business by organization name, agent/officer name, or exact internal record ID, and get entity type, status, effective/established/filing dates, principal/mailing/registered-agent/designated-office addresses, officers, DBA/trade names, and annual report filing years. HTTP-only via the public search form — no login required.
Data Source & Usage Notes
Read this before running a large job.
- No login, no CAPTCHA. The source is a classic ASP.NET WebForms search form. The one bot-mitigation mechanism observed is a minimum-elapsed-time check between loading the search page and submitting it (confirmed live, reproduced twice: a POST fired immediately after the page-load GET is silently redirected to the site's home page, while the identical POST fired 4+ seconds later succeeds) — this actor waits several seconds before every search submission to satisfy it, which is why a single search takes a little longer than a typical HTTP-only actor.
- No server-side result pagination observed for name/agent searches on this source — the actor requests detail pages for up to
maxItemsresult rows in the source's own natural ordering. Extremely broad queries (a single common word) can still return large result counts on the source's own results page even though this actor caps how many detail pages it follows. - Advanced filters route through the source's advanced-search page. Setting any filter beyond organization/agent name (status, business class, charter type, organization type, ownership demographics) or using
mode=byRecordIdautomatically uses the source'ssearchadvanced.aspxform instead of the quick-search form; both accept the same organization-name/agent-name fields. statusis derived, not a literal source field. West Virginia's detail pages don't expose a single "Status" label; this actor derivesActive/Inactivefrom whether a Termination Date is on file (no termination date on file =Active).- Conservative by design.
maxItemsis capped at 200. The actor only ever uses Apify's free datacenter (AUTO) proxy group — never a paid residential proxy — to get a fresh IP if a request is ever blocked. - Not affiliated with the State of West Virginia. This is an independent third-party tool using the source's own public, no-login search form.
Why West Virginia instead of Georgia?
This actor was originally scoped as a Georgia SOS (ecorp.sos.ga.gov) business entity search. Live verification confirmed ecorp.sos.ga.gov sits behind a Cloudflare Managed Challenge (Turnstile) on every request, including plain page loads: direct HTTP (httpx) and TLS-impersonated HTTP (curl_cffi, Chrome131) both received an immediate 403 challenge page; a full headless Chromium browser (Playwright + stealth) and a dedicated anti-detect browser (Camoufox, humanized) both sat on the "Performing security verification... Verifying..." Turnstile screen for 30+ seconds without ever resolving, and the Turnstile checkbox itself was not reachable for an automated click (deeply nested cross-origin iframe, standard Turnstile hardening). Per this project's zero-cost reliability policy, a challenge that a real headless/anti-detect browser cannot clear without a paid CAPTCHA-solving service or residential proxy is a hard block, not something to keep fighting. The target was replaced with West Virginia's SOS business search — a real, free, no-login, no-CAPTCHA government business registry confirmed live and returning real data over plain HTTP.
What this actor does
- 3 search modes, matching the reliable axes West Virginia's own search forms expose:
byOrgName— organization name (substring match)byAgent— agent/officer/manager name (substring match)byRecordId— exact lookup by the source's own internal numeric record ID
- 9 optional advanced filters, combinable with
byOrgName/byAgent: status (Active/Inactive), business class (Profit/Non-Profit), charter type (Domestic/Foreign), organization type (31-value finite list), secondary organization type (5-value finite list), ownership-demographic flags (woman-, minority-, veteran-owned, active-military owner, young entrepreneur), and effective-date / termination-date ranges - Full entity detail — automatically follows through from search results to each entity's detail page for organization type, dates, addresses (including designated office), officers, DBA/trade names, and annual report years
- Empty fields are omitted
What's NOT included (and why)
- Control-number-based exact search — the source's own detail pages display a "Control Number" (e.g.
9A31P), but that value is not independently searchable through the site's own RecordID search field (confirmed live: submitting a control number as the record-ID search value returned an unrelated entity, not the one that control number belongs to).mode=byRecordIdtherefore documents and accepts only the internal numeric record ID visible in search results andorganization.aspx?org=<id>URLs; thecontrolNumberfield is still returned on every record when the source's own detail page has one on file. - County/street/city advanced filters — the source's advanced-search page also exposes county checklists, a street-name field, and a city dropdown with 1,000+ West Virginia cities/towns. These are excluded from this actor's input schema as low-value, high-cardinality filters better served by post-processing the
principalOfficeAddress/registeredAgentAddressfields this actor already returns. - Education-related demographic filters (highest degree earned, field of study, currently-enrolled status) — present on the source's advanced-search form but out of scope for a business-entity lookup tool; the six most business-relevant demographic/status filters are exposed instead.
- Employee-count range filters — the source's advanced-search page has "Employees"/"WV Employees" more-than/fewer-than filters, but the value they filter on is never displayed anywhere on the source's own detail pages, so this actor cannot expose a corresponding output field to verify the filter actually narrowed results with real data. Excluded rather than shipped as an unverifiable filter.
- Business Purpose (NAICS code) filter — the source's advanced-search page accepts up to 10 comma-separated 4-digit NAICS codes from a 300+-entry industry list. Excluded as a very high-cardinality filter; the
businessPurposefield this actor already returns on every applicable record covers the same information for post-processing. - Non-ASCII organization names — West Virginia is an English-language, ASCII business registry; a non-ASCII (e.g. CJK)
organizationNameis confirmed live to make the upstream search form hang rather than return a normal 0-result page. The actor fails soft with 0 records in this case (short timeouts + limited retries keep the run fast rather than exhausting its time budget), which is expected since no real West Virginia entity would have a non-ASCII legal name.
Output per entity
entityNamerecordId— West Virginia's internal numeric database ID (matches theorganization.aspx?org=<id>URL)controlNumber— West Virginia's public control number, when on fileentityType— e.g.LLC | Limited Liability Company,CORPORATION | Domestic CorporationcharterType—DomesticorForeignbusinessClass—ProfitorNon-ProfitsecTypestatus—ActiveorInactive(derived; see Data Source & Usage Notes)effectiveDate,establishedDate,filingDate,terminationDate,terminationReasonbusinessPurpose,capitalStock,charterCounty,charterState,excessAcres,atWillTerm,atWillTermYears,memberManaged,parValue,authorizedShares,youngEntrepreneur— when on file (mostly corporation/LLC-specific fields that vary by entity type)registeredAgentName,registeredAgentAddressprincipalOfficeAddress,principalOfficeMailingAddress,designatedOfficeAddressofficers— list of{ role, name, address }dbaNames— list of{ name, description, effectiveDate, terminationDate }registered trade names ("Doing Business As"), when on fileannualReportYears— list of years an annual report was filedsourceUrlrecordType: "entity",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | byOrgName | byOrgName / byAgent / byRecordId |
organizationName | string | AMAZON | mode=byOrgName |
agentName | string | – | mode=byAgent |
recordId | string | – | mode=byRecordId — exact internal numeric ID |
activeStatus | string | any | Active / Inactive |
businessClass | string | any | Profit / Non-Profit |
charterType | string | any | Domestic / Foreign |
entityTypes | array | [] | Zero or more of 31 organization types |
secTypes | array | [] | Zero or more of 5 secondary organization types (e.g. Trademark Holder) |
womanOwned, minorityOwned, veteranOwned, ownerMilitary, youngEntrepreneur | string | any | Yes / No |
effectiveDateFrom, effectiveDateTo | string | – | Effective/formation date range, mm/dd/yyyy |
terminationDateFrom, terminationDateTo | string | – | Termination/cancellation date range, mm/dd/yyyy |
proxyConfiguration | object | AUTO proxy | Apify proxy config; always datacenter (AUTO), never residential |
maxItems | int | 25 | Hard cap (1–200) |
Example: search by organization name
{"mode": "byOrgName","organizationName": "TESLA","maxItems": 10}
Example: search by agent/officer name
{"mode": "byAgent","agentName": "CORPORATION SERVICE COMPANY","maxItems": 10}
Example: lookup by exact record ID
{"mode": "byRecordId","recordId": "325449"}
Example: search by name with advanced filters
{"mode": "byOrgName","organizationName": "MOUNTAIN","activeStatus": "Active","businessClass": "Profit","charterType": "Domestic","entityTypes": ["Limited Liability Company"],"maxItems": 25}
Example: search with a date range and secondary organization type
{"mode": "byOrgName","organizationName": "TRADE","secTypes": ["Trademark Holder"],"effectiveDateFrom": "1/1/2020","effectiveDateTo": "12/31/2024","maxItems": 25}
Use cases
- Due diligence — confirm a counterparty's West Virginia formation status, entity type, and registered agent before contracting
- Compliance & KYC — cross-check a business's legal entity name and record/control number
- Registered agent research — find every entity a specific agent represents
- Industry/entity-type research — pull every active LLC, corporation, or other entity type of interest
- Company name availability checks — see what similarly-named entities already exist before choosing a new name
FAQ
What's the data source? The West Virginia Secretary of State's own free public Business Organization Search at apps.sos.wv.gov/business/corporations. This actor is an independent third-party tool and is not affiliated with the State of West Virginia.
Is this data official / legally binding? No. For an official Certificate of Existence/Authorization or certified copies, use the state's paid ordering channels (see the source site). This actor returns the same free-tier informational data the public search page shows.
Why did my run return 0 results? Either the query genuinely has no match, or the combination of filters is too narrow. Try a broader name or fewer filters.
Why does a run take longer than a typical search actor? The source enforces a minimum elapsed time between loading its search form and submitting it (a timing-based anti-bot check); this actor waits several seconds before every search submission to satisfy it.
How fresh is the data? Real-time — the search reflects the Secretary of State's database as of the moment of the search.
What's a "secondary organization type"? A narrower classification West Virginia applies on top of the main organization type — for example, an entity whose main type is Corporation can additionally be flagged Trademark Holder. Only 5 secondary types exist; use the secTypes filter to search by them.
What are "DBA" names? "Doing Business As" — trade names an entity has registered in addition to its legal name (e.g. STEALTH TECH LLC doing business as STEALTHTECH). Returned in the dbaNames field when the entity has any on file.
Can I filter by formation or termination date? Yes — effectiveDateFrom/effectiveDateTo filter by an entity's effective (formation) date, and terminationDateFrom/terminationDateTo filter by its termination/cancellation date. Both accept mm/dd/yyyy.