# Iowa Mechanics Lien Filings: Owners, Contractors & Liens (`lienintel/iowa-mechanics-lien-filings`) Actor

Search Iowa mechanics lien postings by owner, contractor, address, county, date or MNLR number. Get property, parcel, claimant, posting date, document type and status. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/lienintel/iowa-mechanics-lien-filings.md
- **Developed by:** [LienIntel - UCC & Secured Lending Intelligence.](https://apify.com/lienintel) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 results

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

## Iowa Mechanics Lien Search: New Filings, Owners & Contractors

Search Iowa mechanics lien postings and turn the public registry into clean, structured records. Every result covers the property owner, general contractor, claimant, county, legal description, tax parcel, posting date, document type and status. Use it to find new construction liens, check a property or contractor, or monitor filings county by county. Records export to JSON, CSV or Excel and you pay only for the postings delivered.

### What you get

Each record is one MNLR posting from the Iowa Secretary of State Mechanic's Notice and Lien Registry, enriched with the public property page:

- MNLR number, record number and posting suffix
- Document type: commencement of work, preliminary notice, mechanic's lien, owner notice, withdrawal, final lien waiver, satisfaction or other
- Posting date and normalized status
- Property owner and property owner names
- Property street address, city, state, ZIP and county
- Legal description and tax parcel ID
- General contractor, claimant and the firm or person that posted the notice
- Public PDF document link when the registry exposes one
- The full posting chain: all MNLR numbers, document types and dates, plus lien and withdrawal flags
- Source, source URL, observation timestamp and confidence

Records are flat and snake_case, with ISO dates and real JSON types. Missing source fields are returned as null rather than an empty string.

### Who is it for

- Construction lenders, private money lenders and mortgage brokers checking collateral
- Material suppliers, subcontractors and general contractors screening owners and projects
- Title companies, closing agents and real estate attorneys running property diligence
- Commercial credit, underwriting and receivables teams monitoring lien exposure
- Lead generation teams looking for new construction activity by county
- Data teams that need Iowa lien records in a database or spreadsheet

### How to use it

1. Choose a search mode: new filings by county and date, property owner, contractor or claimant, property address, legal description, or an exact MNLR number.
2. Add the matching search terms. Multiple names, addresses or numbers are searched separately and deduplicated.
3. Set a posting date window, document type, status and the maximum number of records.
4. Run the actor and download the dataset as JSON, CSV or Excel.

New filing mode scans the counties you select. Leave the county list empty with statewide enabled to scan all 99 Iowa counties. Statewide scans are broader and take longer. A single county and a short date window is the fastest way to test the actor.

Name, address and legal description searches return what the public index displays for that search. Broad names can reach the registry display cap, so use a city, county or date window to narrow the result. Exact MNLR number mode is the most precise lookup.

### Coverage and freshness

Coverage is the State of Iowa. The registry is the central filing point for mechanic's notices and liens on Iowa private construction projects. New postings are read directly from the public registry on every run. The registry publishes complete posting days, so the default new filing window ends yesterday.

The public index does not publish a lien dollar amount, a full document transcription or court judgment data. It publishes the document as a PDF link, the property details and the posting chain. Those limits are reflected in the output: amount fields are not invented, and full document text is not included. The registry also does not publish a UCC financing statement feed; this actor is focused on mechanics liens and related construction notices.

Iowa has 99 counties. A statewide run makes one request per county for the selected date window, then fetches property details for the records it will deliver. If a county hits the registry display cap for a wide window, the actor splits that county by day so records are not silently dropped.

### Pricing

Pay per result. You are charged for each Iowa posting delivered, plus the standard actor start event. There is no charge when a run returns no records or cannot reach the source. Free users are capped at 10 delivered records per run, and every run respects the spending limit you set.

### FAQ

**Does this include UCC filings?**
No. This actor covers the Iowa mechanics lien registry. UCC financing statements are a separate state filing system.

**Can I search the whole state at once?**
Yes. Keep statewide enabled and leave the county list empty, or list the counties you want. Statewide runs scan all 99 counties and take longer than a single county run.

**Why is the lien amount empty?**
Iowa's public mechanics lien index does not publish a dollar amount. The actor does not estimate or invent one.

**Can I get the filed document?**
When the registry publishes a PDF link, the record includes the public document URL. The actor does not reproduce the document text.

**What does inactive mean?**
The registry marks some postings inactive, for example when a related notice is no longer current. Status is returned exactly as published and normalized to active, inactive or withdrawn.

**Can I monitor one county for new filings?**
Yes. Set new filing mode, choose the county, leave a short date window and schedule the actor. Each run returns the newest postings first.

**How are duplicate postings handled?**
Records are deduplicated by MNLR number. Related postings for the same property are kept as separate records and linked through the posting chain fields.

### Related actors

- Arizona UCC Filings Search
- Arkansas UCC Filings Search
- Idaho UCC Filings Search
- Kentucky UCC Filings Search
- New Mexico UCC Filings Search
- Rhode Island UCC Filings Search
- Alabama UCC Debtor Search
- Wisconsin UCC Debtor Search
- Colorado UCC New Filings
- Connecticut UCC New Filings
- Oregon UCC New Filings
- NYC UCC Filings
- NYC Federal Tax Liens

### Links

Input, Output, Pricing and Examples are available on the actor page.

```json
{
    "searchMode": "new_filings",
    "counties": ["Polk"],
    "filingDateFrom": "2026-10-01",
    "filingDateTo": "2026-10-02",
    "documentType": "mechanics_lien",
    "maxFilings": 10
}
```

```json
{
    "searchMode": "owner",
    "ownerNames": ["Smith Trust"],
    "maxFilings": 10
}
```

```json
{
    "searchMode": "contractor",
    "contractorNames": ["Home Pride Contractors"],
    "counties": ["Pottawattamie"],
    "maxFilings": 10
}
```

```json
{
    "searchMode": "mlnr_number",
    "mlnrNumbers": ["062437-0"]
}
```

# Actor input Schema

## `searchMode` (type: `string`):

Choose the field to search. New filings scans the registry by county and posting date. Owner, contractor, address, legal description and MNLR number search the public index directly.

## `ownerNames` (type: `array`):

Owner names to search, up to 20. Example: Smith Trust. Used only in owner mode.

## `contractorNames` (type: `array`):

General contractor, subcontractor or claimant names to search, up to 20. Example: Home Pride Contractors. Used only in contractor mode.

## `addresses` (type: `array`):

Street addresses to search, up to 20. Example: 22538 Tammy Cir. Add a city or ZIP to narrow the result. Used only in address mode.

## `legalDescriptions` (type: `array`):

Legal description text to search, up to 20. Example: Pheasant Hills. Used only in legal description mode.

## `mlnrNumbers` (type: `array`):

Exact MNLR numbers to look up, up to 50. Example: 062437-0. Used only in MNLR number mode.

## `city` (type: `string`):

Optional city filter for owner, contractor, address and legal description searches. Example: Des Moines.

## `zip` (type: `string`):

Optional ZIP code filter for address searches. Example: 50312.

## `counties` (type: `array`):

Iowa counties to scan in new filing mode, up to 99. Use a name such as Polk or a list such as Polk, Linn, Scott. Leave empty and keep statewide enabled to scan all counties. In name, address and legal modes a county list narrows the delivered records.

## `statewide` (type: `boolean`):

When no specific county is supplied in new filing mode, scan all 99 counties. Turn off to require an explicit county list.

## `filingDateFrom` (type: `string`):

Earliest posting date in YYYY-MM-DD. Leave empty to use the last 7 days in new filing mode. In name modes the date window filters delivered records.

## `filingDateTo` (type: `string`):

Latest posting date in YYYY-MM-DD. Leave empty to use today in new filing mode.

## `documentType` (type: `string`):

Keep one posting type, or all types. The registry publishes commencement of work, preliminary notice, mechanic's lien, owner notice, withdrawal, final lien waiver, satisfaction and other postings.

## `status` (type: `string`):

Keep active postings, inactive postings, withdrawn postings, or all statuses.

## `includeInactive` (type: `boolean`):

Include postings the registry marks inactive. Turn off to ask the source for active postings only.

## `matchType` (type: `string`):

Near match returns legal descriptions that contain the search text. Exact match returns only an exact legal description.

## `includeDetails` (type: `boolean`):

Fetch the public property page for each delivered posting to add the street address, county, legal description, tax parcel, property owner and full posting history. Turn off for a faster, leaner run.

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

Newest first or oldest first by posting date.

## `maxFilings` (type: `integer`):

Maximum posting records to deliver, from 1 to 1000. Free users are capped at 10 delivered records.

## Actor input object example

```json
{
  "searchMode": "new_filings",
  "statewide": true,
  "documentType": "any",
  "status": "any",
  "includeInactive": true,
  "matchType": "near",
  "includeDetails": true,
  "sortBy": "newest",
  "maxFilings": 50
}
```

# Actor output Schema

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

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("lienintel/iowa-mechanics-lien-filings").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("lienintel/iowa-mechanics-lien-filings").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 '{}' |
apify call lienintel/iowa-mechanics-lien-filings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lienintel/iowa-mechanics-lien-filings"
        }
    }
}
```

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/aPFPmQPaEqUJFRyPF/builds/FDw07rwZ23s9H9lhY/openapi.json
