West Virginia Secretary of State Business Search Scraper avatar

West Virginia Secretary of State Business Search Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
West Virginia Secretary of State Business Search Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 maxItems result 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=byRecordId automatically uses the source's searchadvanced.aspx form instead of the quick-search form; both accept the same organization-name/agent-name fields.
  • status is derived, not a literal source field. West Virginia's detail pages don't expose a single "Status" label; this actor derives Active / Inactive from whether a Termination Date is on file (no termination date on file = Active).
  • Conservative by design. maxItems is 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=byRecordId therefore documents and accepts only the internal numeric record ID visible in search results and organization.aspx?org=<id> URLs; the controlNumber field 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/registeredAgentAddress fields 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 businessPurpose field 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) organizationName is 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

  • entityName
  • recordId — West Virginia's internal numeric database ID (matches the organization.aspx?org=<id> URL)
  • controlNumber — West Virginia's public control number, when on file
  • entityType — e.g. LLC | Limited Liability Company, CORPORATION | Domestic Corporation
  • charterTypeDomestic or Foreign
  • businessClassProfit or Non-Profit
  • secType
  • statusActive or Inactive (derived; see Data Source & Usage Notes)
  • effectiveDate, establishedDate, filingDate, terminationDate, terminationReason
  • businessPurpose, capitalStock, charterCounty, charterState, excessAcres, atWillTerm, atWillTermYears, memberManaged, parValue, authorizedShares, youngEntrepreneur — when on file (mostly corporation/LLC-specific fields that vary by entity type)
  • registeredAgentName, registeredAgentAddress
  • principalOfficeAddress, principalOfficeMailingAddress, designatedOfficeAddress
  • officers — list of { role, name, address }
  • dbaNames — list of { name, description, effectiveDate, terminationDate } registered trade names ("Doing Business As"), when on file
  • annualReportYears — list of years an annual report was filed
  • sourceUrl
  • recordType: "entity", scrapedAt

Input

FieldTypeDefaultDescription
modestringbyOrgNamebyOrgName / byAgent / byRecordId
organizationNamestringAMAZONmode=byOrgName
agentNamestringmode=byAgent
recordIdstringmode=byRecordId — exact internal numeric ID
activeStatusstringanyActive / Inactive
businessClassstringanyProfit / Non-Profit
charterTypestringanyDomestic / Foreign
entityTypesarray[]Zero or more of 31 organization types
secTypesarray[]Zero or more of 5 secondary organization types (e.g. Trademark Holder)
womanOwned, minorityOwned, veteranOwned, ownerMilitary, youngEntrepreneurstringanyYes / No
effectiveDateFrom, effectiveDateTostringEffective/formation date range, mm/dd/yyyy
terminationDateFrom, terminationDateTostringTermination/cancellation date range, mm/dd/yyyy
proxyConfigurationobjectAUTO proxyApify proxy config; always datacenter (AUTO), never residential
maxItemsint25Hard 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.