# Iowa Business Entity Search — Active LLCs & Corporations (`nexgensignal/iowa-business-entity-records`) Actor

Every active Iowa LLC, corporation, partnership and non-profit from the Secretary of State's official file: name, corp number, type, effective date, home office. New-business feed and lookup. Part of NexGen Signal — official-source data products

- **URL**: https://apify.com/nexgensignal/iowa-business-entity-records.md
- **Developed by:** [NexGen Signal](https://apify.com/nexgensignal) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $33.50 / 1,000 iowa entity records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Iowa Business Entity Search — Active LLCs & Corporations

**Official source. No API key. Pay per record.**

This actor gives you Iowa's active business entities straight from the Iowa Secretary of State's own file, as the State publishes it on the State of Iowa Data Hub. Every active domestic and foreign LLC, corporation, partnership, cooperative and non-profit that is authorised to do business in Iowa is in it: legal name, the State's corp number, entity type, effective date, and the home-office address with the State's own map coordinates.

On 26 September 2026 the file held **344,639 active entities** (last refreshed by the State on 8 September 2026): 217,343 domestic LLCs, 39,186 domestic profit corporations, 31,916 domestic non-profits, 22,895 foreign LLCs, 17,091 foreign corporations, and smaller groups of partnerships, professional corporations, cooperatives, banks and savings and loans.

Use it three ways in one actor:

- **New-business feed.** Set `newWithinDays` (or a date range) to get entities that became effective recently. The file holds about 3,500–4,800 newly effective entities a month (3,512 for August 2026, 3,585 for July, 4,831 for June).
- **Filtered roster.** All active LLCs in a ZIP area, every foreign corporation registered in Iowa, every non-profit in Cedar Rapids, and so on.
- **Status check.** Send a list of corp numbers. Numbers in the active file come back as records; numbers that are not are listed in the run receipt, which means the entity is not currently active (or the number does not exist).

### Who buys this and for what job

- **B2B sales and lead-generation teams** selling to new Iowa businesses — banking, insurance, payroll, accounting, web and marketing services — who want each month's new LLCs and corporations by area.
- **KYB, onboarding and credit teams** confirming that a customer or supplier is an active Iowa entity, in bulk, from the official source.
- **Registered-agent, formation and compliance services** watching formation volumes by type and area.
- **Researchers, economic-development offices and journalists** counting business formation across Iowa counties and cities.
- **Data teams** who want a clean, stable Iowa entity table keyed on the State's corp number.

### Sample output

![Sample output — Iowa Business Entity Search](https://api.apify.com/v2/key-value-stores/IXCaMKjxSmUTLHhmq/records/iowa-business-entity-records.png)

```json
{
  "record_id": "IA:883439",
  "corp_number": "883439",
  "legal_name": "CROWN CITY ELITE",
  "corporation_type": "REVISED DOMESTIC NON-PROFIT",
  "effective_date": "2026-10-25",
  "status_on_file": "Active — listed in the Secretary of State's active business entities file",
  "home_office_address_1": "219 COBBLE STONE DR NW",
  "home_office_address_2": null,
  "home_office_city": "CEDAR RAPIDS",
  "home_office_state": "IA",
  "home_office_zip": "52405",
  "home_office_country": "USA",
  "home_office_latitude": 41.97371128,
  "home_office_longitude": -91.76520479,
  "dataset_updated_at": "2026-09-08T02:04:27.544995-05:00",
  "source": "Iowa Secretary of State — Active Iowa Business Entities, published on the State of Iowa Data Hub (https://data.iowa.gov/catalog/dataset/554)",
  "licence": "Creative Commons Attribution 4.0 (CC BY 4.0), as stated on the dataset's Iowa Data Hub page (Public License Type: CC BY; publishing agency: Office of the Secretary of State).",
  "attribution": "Source: Iowa Secretary of State via the State of Iowa Data Hub (CC BY 4.0); reformatted by NexGen Signal.",
  "observed_at": "2026-09-27T03:54:40Z"
}
```

(A future effective date like the one above is real: Iowa lets filers choose a delayed effective date, and the State's file carries it as filed.)

### Pricing

| Apify plan | Price per record |
|---|---|
| Free | $0.05 |
| Bronze | $0.045 |
| Silver | $0.04 |
| Gold and above | $0.0335 |

You pay only for records delivered to your dataset. `maxRecords` caps what a run can cost: 500 records cost $25 on the Free plan. Filtering is free — the whole file is read on every run and you pay only for what matches.

### Input

| Field | What it does | Default |
|---|---|---|
| `newWithinDays` | Only entities that became effective in the last N days (the new-business feed) | not set (all) |
| `effectiveFrom`, `effectiveTo` | Only entities effective between two dates (YYYY-MM-DD) | not set |
| `corporationTypes` | Only these entity types, e.g. `DOMESTIC LIMITED LIABILITY COMPANY`, `DOMESTIC PROFIT`, `FOREIGN LIMITED LIABILITY COMPANY`, `REVISED DOMESTIC NON-PROFIT` | all |
| `cities` | Home-office cities, e.g. `DES MOINES`, `CEDAR RAPIDS` | all |
| `zipPrefixes` | Home-office ZIP prefixes, e.g. `503` (Des Moines area) or `52401` | all |
| `homeOfficeStates` | Home-office states, e.g. `IA`, or `NE` for Nebraska-based companies registered in Iowa | all |
| `nameContains` | Only legal names containing this text, e.g. `ROOFING` | none |
| `corpNumbers` | Check specific corp numbers (up to 20,000) | none |
| `sortBy` | `newest` or `oldest` effective date first, or `file` order | newest |
| `maxRecords` | Maximum records delivered and billed | 500 |

Example — new Iowa LLCs in the Des Moines area over the last 30 days:

```json
{"newWithinDays": 30, "corporationTypes": ["DOMESTIC LIMITED LIABILITY COMPANY"], "zipPrefixes": ["503"], "maxRecords": 5000}
```

(On 27 September 2026, with the State's file dated 8 September, that input returned 39 LLCs.)

Example — status check:

```json
{"corpNumbers": ["662502", "463356", "000000000"]}
```

(That returned the two active entities and listed `000000000` as not in the active file.)

### Output

| Field | Meaning |
|---|---|
| `record_id` | `IA:<corp number>` — unique per entity |
| `corp_number` | The Secretary of State's corp number |
| `legal_name` | Legal name as filed |
| `corporation_type` | Entity type, in the State's words |
| `effective_date` | Date the entity was registered or became effective |
| `status_on_file` | Always "Active" — the file lists active entities only |
| `home_office_*` | Home-office address (lines 1–2, city, state, ZIP, country) |
| `home_office_latitude`, `home_office_longitude` | The State's own geocode of the home office, where available |
| `dataset_updated_at` | When the State last refreshed the file |
| `source`, `licence`, `attribution`, `observed_at` | Provenance on every record |

Values are the State's, trimmed of spaces. Nothing is renamed, re-coded or estimated.

### Cost guidance

A monthly new-business pull for the whole state is about 3,500–4,800 records ($117–$161 on Gold, $175–$240 on Free). One city or ZIP area is usually tens to a few hundred records a month. A 1,000-number status check costs at most $33.50 on Gold, and only numbers found in the active file are charged. Start with the ten-record Store example to see the fields, then schedule the actor monthly with your filters.

### How a run works

The actor checks the Data Hub's robots.txt, reads the dataset page for its last-updated time and licence, and downloads the State's rows file through the same download route the Data Hub's own Download button uses (a ZIP of about 100 MB). It reads the CSV row by row and pulls out only the columns it delivers. Matching records are pushed to your dataset first and charged only after they are delivered; if you set a maximum charge, the run stops cleanly when it is reached. Every run saves a receipt (`RUN_RECEIPT`) with the robots decision, the dataset page's stated licence and row count, rows read and matched, corp numbers not found, and confirmation that charges equal deliveries. Most test runs finished in 10–30 seconds (one slow download took just under 3 minutes). If the Data Hub cannot be reached after several retries, the run ends with a clear message and nothing is charged.

### Honest limitations

- **Active entities only.** Dissolved, withdrawn and inactive entities are not in the State's file, so the status check tells you "active" or "not in the active file" — it cannot tell you why an entity is missing.
- **Monthly refresh.** The State updates the file monthly (the copy read on 26 September 2026 was dated 8 September 2026). Entities formed after the refresh appear next month; `dataset_updated_at` on every record tells you how fresh it is.
- **No registered agents.** The State's file names each entity's registered agent, and in most rows that agent is a private individual. The file does not say which agents are companies, so this actor never reads the agent's name, address or coordinates at all. It also never reads the file's free-text "home office name" column (filled in about 200 rows, often with a person's name or a "care of" contact), and it drops any address line that starts with "C/O" or "ATTN".
- **Home-office addresses are the entity's own.** For a one-person business this can be a home address; it is part of the State's public entity record.
- **No officers, owners, phone numbers or emails** — the file does not contain them.
- **Sole proprietorships and general partnerships** mostly do not register with the Secretary of State, so they are largely absent (the State says so on the dataset page).

### Licence and attribution

The Iowa Data Hub page for this dataset states the licence as **CC BY** (Creative Commons Attribution 4.0), with the Office of the Secretary of State as the publishing agency and the audience marked public. The actor re-reads that licence field on every run and records it in the run receipt. Every record carries the credit: *Source: Iowa Secretary of State via the State of Iowa Data Hub (CC BY 4.0); reformatted by NexGen Signal.* This actor is not affiliated with or endorsed by the State of Iowa.

### Differentiation

Iowa-only actors on the Store, such as crawlerbros/iowa-sos-business-entity-search-scraper and captainhandsome/ia-business-entity-search, search the Secretary of State's website one name at a time. Multi-state KYB actors such as whetstonetools/secretary-of-state-business-search and pink_comic/us-business-entity-search do the same across many states. This actor reads the State's whole active file in one pass, so it can return every match — by type, place, name or date — rather than the first page of a name search, and it gives you the new-business feed and bulk status checks from the same official file.

### The NexGen Signal family

Part of NexGen Signal — official-source data products, no API keys, pay per record. Related actors:

- [US Business Entity Search & Status Check — 7 States](https://apify.com/nexgensignal/us-business-entity-status-check)
- [Florida New Business Filings — Sunbiz Daily Records](https://apify.com/nexgensignal/florida-new-business-filing-records)
- [Florida Business Entity Search — Sunbiz Master & Status](https://apify.com/nexgensignal/florida-business-entity-master-records)
- [UK Company Accounts & Financials — Companies House Data](https://apify.com/nexgensignal/uk-companies-house-accounts-financial-records)
- [US IRS Exempt Organization Master File](https://apify.com/nexgensignal/us-exempt-organization-master-records)

# Actor input Schema

## `newWithinDays` (type: `integer`):

Only entities whose effective date falls in the last N days — the new-business feed. Leave empty for all active entities.

## `effectiveFrom` (type: `string`):

Optional. Only entities effective on or after this date (YYYY-MM-DD).

## `effectiveTo` (type: `string`):

Optional. Only entities effective on or before this date (YYYY-MM-DD).

## `corporationTypes` (type: `array`):

Only these entity types, e.g. DOMESTIC LIMITED LIABILITY COMPANY. Leave empty for all.

## `cities` (type: `array`):

Only entities whose home office is in these cities, e.g. DES MOINES, CEDAR RAPIDS.

## `zipPrefixes` (type: `array`):

Only home-office ZIP codes starting with these digits, e.g. 503 (Des Moines area) or 52401.

## `homeOfficeStates` (type: `array`):

Only home offices in these states, e.g. IA, or NE for Nebraska-based companies registered in Iowa.

## `nameContains` (type: `string`):

Only entities whose legal name contains this text (not case-sensitive), e.g. ROOFING.

## `corpNumbers` (type: `array`):

Look up specific Iowa corp numbers (up to 20,000). Numbers not in the active file are listed in the run receipt — that means the entity is not currently active or does not exist.

## `sortBy` (type: `string`):

Which matching records come first when more match than your maximum.

## `maxRecords` (type: `integer`):

Maximum records delivered and billed in this run. The whole active file is about 345,000 entities.

## Actor input object example

```json
{
  "corporationTypes": [],
  "cities": [],
  "zipPrefixes": [],
  "homeOfficeStates": [],
  "corpNumbers": [],
  "sortBy": "newest",
  "maxRecords": 10
}
```

# Actor output Schema

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

The delivered records.

# 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 = {
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgensignal/iowa-business-entity-records").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 = { "maxRecords": 10 }

# Run the Actor and wait for it to finish
run = client.actor("nexgensignal/iowa-business-entity-records").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 '{
  "maxRecords": 10
}' |
apify call nexgensignal/iowa-business-entity-records --silent --output-dataset

```

## MCP server setup

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

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/sPuJ5NSofKyPJfE57/builds/VGE2io69lWcAvdKdu/openapi.json
