# Wisconsin Business Entity Search & LLC Leads Scraper (`scrapebench/wisconsin-business-entity-search`) Actor

Wisconsin LLCs and corporations from DFI's corporate records: lookup by name or entity ID, or export by type, status, formation date and name keywords.

- **URL**: https://apify.com/scrapebench/wisconsin-business-entity-search.md
- **Developed by:** [ScrapeBench](https://apify.com/scrapebench) (community)
- **Categories:** Lead generation
- **Features:** Limited permissions
- **Stats:** 4 total users, 3 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.0025 / business entity record

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Wisconsin Business Entity Search & LLC Leads Scraper

### Pain points

- DFI's corporate records search sits behind a Cloudflare browser check that refuses scripted clients.
- A name search stops at 500 records ("More than 500 records"), with no way to page past them.

### What we solve

- Export mode: every Wisconsin entity that matches your filters (entity type, status, formation date, years in business, name keywords), up to 100,000 rows a run.
- Lookup mode: company names (any part of the name) or Wisconsin entity IDs.
- Every row: entity ID, name, type, status and the date of that status, formation date (or the date a foreign entity registered in Wisconsin).
- Read from a copy of DFI's corporate records, so runs never meet the search page's browser check or its 500-record limit.

### Summary

Wisconsin business entity data from the Wisconsin Department of Financial Institutions. Export: every Wisconsin LLC, corporation, nonprofit, cooperative, partnership or trust that matches your filters, from a copy of DFI's corporate records search. Lookup: a company name or entity ID. Filter by entity type, status (Organized, Restored to Good Standing, Delinquent, Administratively Dissolved ...), formation date, years in business and name keywords. Every row carries the entity ID, name, type, status, the date the entity reached that status, and its formation date (or, for an entity formed elsewhere, the date it registered in Wisconsin). Built for agencies prospecting new Wisconsin companies, compliance services watching delinquent entities, and KYB teams checking a counterparty. No address, registered agent, officers, email or phone numbers: DFI's search results do not carry them. Pay only per entity returned.

### Who it's for

- Agencies and SMB vendors (web design, bookkeeping, insurance, banking) prospecting newly formed Wisconsin companies
- Registered agents, CPAs and compliance services watching Wisconsin entities that turned Delinquent
- Fintech, compliance and KYB teams checking that a Wisconsin company exists and its status
- Suppliers and trade marketers building Wisconsin lists by name keyword (construction, roofing, dental ...)

### How to use

This actor does two jobs. Run it, then collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API).

**Get a list (export):** no names, just filters; returns the whole matching list.

```json
{
  "mode": "export",
  "entityTypes": [
    "LLC"
  ],
  "statuses": [
    "Active"
  ],
  "formedAfter": "2026-10-01",
  "maxResults": 100
}
```

**Check specific firms (lookup):** put company names or licence numbers in `mode`, `queries`; **Inputs** below says how each is matched.

```json
{
  "mode": "lookup",
  "queries": [
    "ABQ Services",
    "A085804"
  ],
  "maxResults": 10
}
```

See **Inputs** below for every available field.

### What you get

One row per record:

| Field | Description |
|---|---|
| `state` | WI |
| `entity_id` | Wisconsin entity ID (e.g. A085804) |
| `entity_name` | Registered name, as DFI publishes it |
| `entity_type / entity_type_code` | Type label and DFI's code (Domestic Limited Liability Company / 12) |
| `status` | Organized, Restored to Good Standing, Delinquent, Administratively Dissolved ... |
| `status_date` | Date the entity reached its current status |
| `formation_date` | Formation date for an entity formed in Wisconsin |
| `registered_in_state_since` | For an entity formed elsewhere: the date it registered in Wisconsin |
| `years_in_business` | Whole years since formation, active Wisconsin entities only |
| `source_url` | DFI's corporate records search, with the entity ID |

Sample:

```json
{
  "source_url": "https://apps.dfi.wi.gov/apps/corpsearch/Search.aspx#A085804",
  "state": "WI",
  "entity_id": "A085804",
  "entity_name": "A & B QUALITY HOMES, LLC",
  "entity_type": "Domestic Limited Liability Company",
  "entity_type_code": "12",
  "status": "Restored to Good Standing",
  "formation_date": "2018-05-03",
  "registered_in_state_since": null,
  "years_in_business": 8,
  "jurisdiction": "WI",
  "principal_street": null,
  "principal_city": null,
  "principal_state": null,
  "principal_zip": null,
  "mailing_street": null,
  "mailing_city": null,
  "mailing_state": null,
  "mailing_zip": null,
  "agent_name": null,
  "agent_street": null,
  "agent_city": null,
  "agent_state": null,
  "agent_zip": null,
  "annual_report_due": null,
  "naics_code": null,
  "naics": null,
  "officers": null,
  "status_date": "2026-05-07"
}
```

### Inputs

| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `mode` | no | string | `"export"` | export: every Wisconsin company that matches the filters below, from a copy of DFI's corporate records search. lookup: find the companies you name in `Business names or entity IDs`. auto: lookup when you give names, export otherwise. |
| `queries` | no | array | `[]` | Lookup mode: one company name (any part of the name, e.g. "Quality Homes") or Wisconsin entity ID (e.g. A085804) per line. Filters below still apply (e.g. only LLCs). |
| `query` | no | string | — | Same as the list above, one value. Both are combined if you fill both. |
| `entityTypes` | no | array | `["LLC"]` | Keep only these types: LLC, Corporation, Nonprofit, Limited Partnership, LLP, General Partnership, Cooperative, Trust. A Wisconsin type label (e.g. Domestic Limited Liability Company) or code (e.g. 12) also works. |
| `statuses` | no | array | `["Active"]` | Keep only these statuses: Organized, Incorporated/Qualified/Registered, Registered, Restored to Good Standing, Delinquent, Administratively Dissolved, Dissolved, Involuntarily Dissolved, Revocation/Termination of Certificate/Registration, Merged, acquired, Terminated, Withdrawal, Name Conflict, In Process, Certificate of Cancellation (as DFI words them). "Active" keeps the first five. |
| `formedAfter` | no | string | `"2026-10-06"` | Newly formed companies: only entities formed in Wisconsin (or registered here, if formed elsewhere) on or after this date, YYYY-MM-DD. |
| `formedBefore` | no | string | — | Only entities formed on or before this date, YYYY-MM-DD. |
| `nameKeywords` | no | array | — | Keep only businesses whose name contains one of these words, e.g. construction, roofing, dental. |
| `minYearsInBusiness` | no | integer | — | Established businesses: active entities formed in Wisconsin at least this many years ago. |
| `maxYearsInBusiness` | no | integer | — | Active entities formed in Wisconsin at most this many years ago. |
| `includeContacts` | no | boolean | `false` | Add each business's phone number and website where available, looked up by business name and location under a strict match rule (a business that cannot be confirmed gets none). Charged as a separate 'Contact details found' event per row that gets one; a row without a contact costs only the row price. The address stays the one the state publishes. |
| `maxResults` | no | integer | `100` | Cap on rows returned (bounds cost). Up to 100,000. |
| `proxyConfiguration` | no | object | `{"useApifyProxy": false}` | Optional; not needed. Runs read a copy of DFI's records, not the search page. |

### Pricing (Pay Per Event)

You pay per result (`dataset-item`) — **no charge for empty runs**. Example: **1000 entity records** at *$0.0025/result* ≈ **$2.50**.

Notices (unknown filter, no match, source unavailable) are free. With 'Include contact details' on, each row that gets a business phone or website is also charged a 'Contact details found' event ($0.005); rows without one cost only the row.

### Use cases

- New-business leads: every LLC formed in Wisconsin since a date.
- Compliance watch: Wisconsin entities in Delinquent status, with the date they turned delinquent.
- KYB / due diligence: look up a company by name or entity ID and read its status and formation date.
- Keyword lists: active Wisconsin companies whose name contains construction, roofing or dental.

### Why this actor

- Answers from a copy of DFI's records, not the browser-checked search page, and past its 500-record limit.
- Status date on every row: when an entity became Delinquent, Dissolved or Restored.
- Formation date kept apart from a foreign entity's Wisconsin registration date.
- Pay per entity; notices are free.

### Limitations & updates

Wisconsin only (for other states see the nationwide US Business Entity Search). Answers from a copy of DFI's corporate records, so a company formed after the copy was taken is not in it yet; a copy older than 45 days comes with a free note. No address, registered agent, officers, email or phone numbers (DFI's search results do not carry them). DFI's records cover entities in existence on or after January 1, 1977. Formation date is given for entities formed in Wisconsin; a foreign entity carries the date it registered in Wisconsin instead.

### FAQ

**Where does the data come from?**

The Wisconsin Department of Financial Institutions' public corporate records search, copied into a snapshot; runs read the copy, not the search page. A copy older than 45 days comes with a free note in the run.

**Are addresses or registered agents included?**

No. DFI's search results list the entity ID, name, type, dates and status; the address and agent are on each entity's own detail page, which is not read.

**Can I search by city?**

No. The search results carry no address; a city filter answers a free note.

**How does name lookup match?**

Any part of the name (case, spaces and punctuation ignored). An entity ID matches exactly.

**How am I charged?**

One event per business entity returned. Notices are free.

**Can I get the business's phone number and website?**

Yes: turn on 'Include contact details'. Each business is looked up by its name and location, and a phone number and website are added only when the match is certain; a business that cannot be confirmed stays without one, and you are not charged the contact event for it. The address on the row is always the one the state publishes.

### Guides & use cases

Written up on **[scrapebench.dev](https://scrapebench.dev)** — the bench that runs and verifies this actor against the live source every night:

- **How-to:** [How to run Wisconsin Business Entity Search & LLC Leads Scraper](https://scrapebench.dev/guides/how-to-wisconsin-business-entity-search/)
- **Use case:** [Wisconsin Delinquent Entities for Registered Agents and Compliance Services](https://scrapebench.dev/use-cases/wisconsin-delinquent-entities-compliance-leads/)

More actors, coverage and nightly verification results: **[scrapebench.dev](https://scrapebench.dev)**

### Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the [MCP tab](https://apify.com/scrapebench/wisconsin-business-entity-search/api/mcp) on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

> "List active Wisconsin LLCs formed since October 1, 2026."

That is mode export, entity types LLC, statuses Active, formed on or after 2026-10-01. Keep maxResults small on a first call. Runs started this way bill exactly like any other run.

### Data & lawful use

This actor collects publicly available information that the Wisconsin Department of Financial Institutions (DFI), Division of Corporate and Consumer Services publishes for public
lookup — licence records, business listings and the contact details professionals list there.
Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any
names, phone numbers and emails in your results as personal data.

When you run this actor, you decide what is collected and what it is used for, so you are the
controller of that data and we act only as your processor (Apify Standard Actor Contract).
You need a lawful basis for your use, must honour opt-out and deletion requests, and must
follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar).
Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or
for anything the source's own terms forbid.

Your results are stored in your own Apify account. We don't keep a copy of your results and
don't sell or share them.

### Disclaimer

This is an independent tool. It is not affiliated with, endorsed by or sponsored by
the Wisconsin Department of Financial Institutions (DFI), Division of Corporate and Consumer Services. Names and marks are used only to describe the data source. Records are
provided as published by the source and may be out of date or incomplete. For anything
consequential (hiring, a permit, a legal decision), confirm the record with the issuing
agency. You are responsible for making sure your use complies with applicable law and the
source's terms.

### Need help?

Open an issue on this actor's **Issues** tab and we'll respond there. Bug reports, missing
fields and feature requests are all welcome. Guides and examples: [scrapebench.dev](https://scrapebench.dev).

If you are a person named in this data and want your record removed from our copy, email
apify-help@scrapebench.dev; the source agency remains the official record.

Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: [Apify Console → Settings → Security → Share run data with developers](https://console.apify.com/settings/security). It lets us see exactly what went wrong and keep improving the actor.

If this actor saved you time, a short review on its Store page helps other buyers find it.

# Actor input Schema

## `mode` (type: `string`):

export: every Wisconsin company that matches the filters below, from a copy of DFI's corporate records search. lookup: find the companies you name in `Business names or entity IDs`. auto: lookup when you give names, export otherwise.

## `queries` (type: `array`):

Lookup mode: one company name (any part of the name, e.g. "Quality Homes") or Wisconsin entity ID (e.g. A085804) per line. Filters below still apply (e.g. only LLCs).

## `query` (type: `string`):

Same as the list above, one value. Both are combined if you fill both.

## `entityTypes` (type: `array`):

Keep only these types: LLC, Corporation, Nonprofit, Limited Partnership, LLP, General Partnership, Cooperative, Trust. A Wisconsin type label (e.g. Domestic Limited Liability Company) or code (e.g. 12) also works.

## `statuses` (type: `array`):

Keep only these statuses: Organized, Incorporated/Qualified/Registered, Registered, Restored to Good Standing, Delinquent, Administratively Dissolved, Dissolved, Involuntarily Dissolved, Revocation/Termination of Certificate/Registration, Merged, acquired, Terminated, Withdrawal, Name Conflict, In Process, Certificate of Cancellation (as DFI words them). "Active" keeps the first five.

## `formedAfter` (type: `string`):

Newly formed companies: only entities formed in Wisconsin (or registered here, if formed elsewhere) on or after this date, YYYY-MM-DD.

## `formedBefore` (type: `string`):

Only entities formed on or before this date, YYYY-MM-DD.

## `nameKeywords` (type: `array`):

Keep only businesses whose name contains one of these words, e.g. construction, roofing, dental.

## `minYearsInBusiness` (type: `integer`):

Established businesses: active entities formed in Wisconsin at least this many years ago.

## `maxYearsInBusiness` (type: `integer`):

Active entities formed in Wisconsin at most this many years ago.

## `includeContacts` (type: `boolean`):

Add each business's phone number and website where available, looked up by business name and location under a strict match rule (a business that cannot be confirmed gets none). Charged as a separate 'Contact details found' event per row that gets one; a row without a contact costs only the row price. The address stays the one the state publishes.

## `maxResults` (type: `integer`):

Cap on rows returned (bounds cost). Up to 100,000.

## `proxyConfiguration` (type: `object`):

Optional; not needed. Runs read a copy of DFI's records, not the search page.

## Actor input object example

```json
{
  "mode": "export",
  "queries": [],
  "entityTypes": [
    "LLC"
  ],
  "statuses": [
    "Active"
  ],
  "formedAfter": "2026-10-06",
  "includeContacts": false,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Business-entity records, one row per entity; notices are free.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "export",
    "entityTypes": [
        "LLC"
    ],
    "statuses": [
        "Active"
    ],
    "formedAfter": "2026-10-06",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapebench/wisconsin-business-entity-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "export",
    "entityTypes": ["LLC"],
    "statuses": ["Active"],
    "formedAfter": "2026-10-06",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapebench/wisconsin-business-entity-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "export",
  "entityTypes": [
    "LLC"
  ],
  "statuses": [
    "Active"
  ],
  "formedAfter": "2026-10-06",
  "maxResults": 100
}' |
apify call scrapebench/wisconsin-business-entity-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapebench/wisconsin-business-entity-search"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0R2ds8f6hYxLU8KAd/builds/3Se7MjbCXgdsprWhl/openapi.json
