# Madison County OH Liens: UCC, Tax, Mechanics & Workers Comp (`lienintel/madison-county-oh-lien-filings`) Actor

Search Madison County, Ohio recorded UCC, federal tax, mechanics, workers-comp and unemployment liens by debtor, lender or document number. Get parties, amounts, property data and dates in clean JSON. $0.03 per record.

- **URL**: https://apify.com/lienintel/madison-county-oh-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

## Madison County OH Liens: UCC, Tax, Mechanics & Workers Comp

Search **Madison County, Ohio** recorded liens by debtor, lender, claimant or exact document number. Get county-recorded UCC financing statements, federal tax liens and releases, mechanics liens and releases, workers-compensation liens, unemployment-compensation liens and other statutory liens with debtor and creditor names, amounts, legal descriptions, dates and document numbers in clean, flat JSON.

Madison County is a separate central-Ohio recording jurisdiction centered on London. It is **not** the Ohio Secretary of State UCC system, and it is **not** Fayette, Franklin, Clark, Madison Township or any other county recorder index. This actor reads the Madison County Recorder's public real-property index directly.

### What you get

- **One row per recorded lien or UCC filing** — deduplicated by the Recorder document number.
- **Debtor and secured-party detail** — every published party and role, not just the name that matched the search.
- **Amounts** — federal tax-lien, mechanics-lien and workers-comp amounts when the county publishes them in the recorded legal block.
- **Property data** — the recorded legal description, subdivision, lot, PIN, acreage, book/volume/page and page count.
- **Document data** — document number, numeric type code, type description, recording date, instrument date and page count.
- **Release flags** — federal tax-lien, mechanics-lien, workers-compensation, unemployment-compensation and other lien releases are marked so you can separate active liens from paid-off filings.
- **Matching context** — the search term, search side and search type that produced the record.
- **Flat snake_case fields** — ready for Sheets, Airtable, BigQuery, Postgres, CRM or an API.
- **No charge when nothing matches** — a no-data run returns one uncharged error row.

### Lien families covered

| Family | County index codes | What it includes |
|---|---|---|
| `ucc` | `118` | UCC financing statements recorded with the county Recorder |
| `tax_lien` | `39`, `83` | Federal tax liens and federal tax-lien releases |
| `mechanics` | `51`, `88` | Mechanics liens and mechanics-lien releases |
| `workers_comp` | `15`, `121`, `77` | Ohio Bureau of Workers Compensation liens and releases |
| `unemployment` | `99`, `91` | Ohio Department of Job and Family Services unemployment liens and releases |
| `other_lien` | `134`, `87`, `145` | HOA, statutory and other recorded liens, releases and partial releases |

Deeds, mortgages, mortgage releases, leases, easements, plats, powers of attorney, military discharges, probate and family-law records are not returned. Child-support, Medicaid, recognizance and other consumer-sensitive codes are excluded. The actor requests only the 13 verified lien, tax, mechanics, workers-comp, unemployment and other-lien codes above.

### Who it is for

- **MCA, ISO and equipment-finance teams** — find new county UCC filings, identify the incumbent secured party and time outreach around new liens.
- **Commercial lenders and credit teams** — monitor a borrower or lender name for new secured-party activity.
- **Collections and recovery** — surface federal tax liens, mechanics liens, workers-comp liens and unemployment liens against a debtor.
- **KYB and due diligence** — inspect the parties, amounts, property and document data behind a recorded lien.
- **Construction and supplier credit** — find mechanics liens by owner, contractor or supplier.
- **Ohio property and title researchers** — pull Madison County lien and UCC records without a subscription.

### How to use it

#### Search by debtor name

```json
{
  "debtorNames": ["SMITH"],
  "dateFrom": "2025-01-01",
  "dateTo": "2026-10-31",
  "maxFilings": 25
}
```

Partial names are supported. Results are matched on the debtor, owner, employer or taxpayer side. The actor keeps the published grantor and grantee lists so no party is silently dropped.

#### Search by lender, agency or claimant

```json
{
  "securedPartyNames": ["INTERNAL REVENUE"],
  "lienTypes": ["tax_lien"],
  "includeReleases": false,
  "maxFilings": 10
}
```

Results are matched on the secured-party, lien claimant, agency or creditor side. Add `includeReleases: true` to return tax-lien, mechanics, workers-comp and unemployment releases too.

#### Look up exact document numbers

```json
{
  "documentNumbers": ["2026-5321", "2026-5313"],
  "maxFilings": 2
}
```

The actor returns the exact document number, not prefix matches.

#### Browse new recordings

Leave all names and document numbers empty to browse the selected categories for the last 30 days. Set `dateFrom` and `dateTo` to choose another window.

#### Filter by lien family

```json
{
  "debtorNames": ["SMITH"],
  "lienTypes": ["ucc", "mechanics", "workers_comp"],
  "includeReleases": false,
  "maxFilings": 20
}
```

### Input reference

| Input | Type | What it does |
|---|---|---|
| `debtorNames` | string array | Search the debtor, owner, employer or grantor side, up to 20 names |
| `securedPartyNames` | string array | Search the secured-party, claimant, agency or grantee side, up to 20 names |
| `documentNumbers` | string array | Exact Recorder document numbers, up to 20 |
| `lienTypes` | string array | `ucc`, `tax_lien`, `mechanics`, `workers_comp`, `unemployment`, `other_lien` |
| `includeReleases` | boolean | Include tax-lien, mechanics, workers-comp, unemployment and other lien releases; default `true` |
| `dateFrom` | string | Earliest recorded date, `YYYY-MM-DD` |
| `dateTo` | string | Latest recorded date, `YYYY-MM-DD` |
| `maxFilings` | integer | Maximum unique records to return and charge, 1–1000; default 25 |

Free Apify users receive up to 10 results per run. Paid users can request up to 1,000.

### Output fields

Each result includes:

- `record_id`, `document_number`, `instrument_number`
- `doc_type`, `doc_type_code`, `doc_group`, `filing_type`, `filing_type_label`
- `lien_category`, `lien_category_label`, `is_release`
- `recorded_date`, `instrument_date`, `recorded_year`
- `debtor_name`, `debtor_names`, `debtor_count`
- `secured_party_name`, `secured_party_names`, `secured_party_count`
- `grantor_names`, `grantee_names`, `party_direction`, `direction_source`, `party_roles`, `party_count`
- `amount`, `amount_text`, `amount_source`
- `book`, `volume`, `page`, `book_volume_page`, `page_count`
- `legal_description`, `property_description`, `municipality`, `subdivision`, `lot`, `block`, `unit`, `parcel_numbers`, `section`, `township`, `range`, `acres`
- `remarks`, `marginal_reference`, `document_url`
- `county`, `state`, `source`, `source_page`, `source_url`
- `search_role`, `search_term`, `search_terms`, `search_type`, `match_type`
- `observed_at`, `confidence`

#### Party direction

UCC filings, federal tax liens and releases, workers-compensation liens and releases, unemployment-compensation liens and releases, HOA/statutory liens and their releases publish the debtor, owner, employer or taxpayer on the grantor side and the secured party, agency or claimant on the grantee side.

Mechanics liens and mechanics-lien releases are indexed in either order by the county. The actor applies a conservative claimant-name heuristic; when the claimant cannot be identified from the published names, it keeps the county's published grantor-as-debtor order and sets `direction_source` to `published`. The raw `grantor_names` and `grantee_names` are always included.

### Example output

```json
{
  "document_number": "2026-5321",
  "doc_type": "FED TX LIEN",
  "doc_type_code": "39",
  "filing_type": "federal_tax_lien",
  "lien_category": "tax_lien",
  "is_release": false,
  "recorded_date": "2026-10-26",
  "debtor_name": "SEAGO SANDFORD K",
  "debtor_names": "SEAGO SANDFORD K; SEAGO MOLLY E",
  "secured_party_name": "INTERNAL REVENUE SERVICE",
  "grantor_names": "SEAGO SANDFORD K; SEAGO MOLLY E",
  "grantee_names": "INTERNAL REVENUE SERVICE",
  "party_direction": "grantor_debtor",
  "direction_source": "published",
  "book": "OR",
  "volume": "460",
  "page": "1773",
  "book_volume_page": "OR/460/1773",
  "amount": 124897.94,
  "amount_text": "$124,897.94",
  "amount_source": "legal_remarks",
  "parcel_numbers": "SN 554965826",
  "legal_description": "SN 554965826 | $124,897.94"
}
```

### Coverage and freshness

- **Source:** Madison County Recorder, Real Property department.
- **Coverage:** county-recorded UCC, federal tax, mechanics, workers-compensation, unemployment-compensation and other statutory liens.
- **Freshness:** the public index was current through **2026-10-30** when verified. The actor reads the live public index on every run.
- **Volume:** 261 target records in 2026 year-to-date and 26 target records in the last 30 days were verified on 2026-10-31.
- **Jurisdiction note:** this is a county Recorder index, not the Ohio Secretary of State UCC filing system. It also does not cover any other Ohio county.

### Pricing

- **$0.03 per returned record** (`result` event).
- **$0.003 actor start** per run.
- **No charge for no-data runs.** A run that finds nothing returns one uncharged error row; the synthetic actor-start charge still applies.
- Free Apify users are capped at **10 results per run**.

### FAQ

**Is this the Ohio Secretary of State UCC search?**
No. This is the Madison County Recorder's recorded-document index. Statewide Article 9 filings made with the Ohio Secretary of State are a different source.

**Does it cover other Ohio counties?**
No. One actor covers one source: Madison County. Fayette, Franklin, Clark and other counties are separate recorder indexes.

**Can I search by lender or agency?**
Yes. Use `securedPartyNames` for the secured party, lien claimant, agency or creditor side. Federal tax liens match `INTERNAL REVENUE`; workers-comp liens match `BUREAU OF WORKERS`.

**Can I get only active liens?**
Yes. Set `includeReleases` to `false` to exclude federal tax-lien, mechanics, workers-compensation, unemployment-compensation and other lien releases.

**Why do some mechanics liens show `direction_source: claimant_heuristic`?**
Madison County indexes mechanics liens and releases in either party order. The actor identifies the contractor, supplier or claimant from the published names. When the names are ambiguous, it keeps the county's published order and marks it `published`. The raw grantor and grantee lists are always included.

**Is this an FCRA consumer report?**
No. This is public-record research for business, lending, KYB, due-diligence and property-research workflows. It is not an FCRA consumer report and should not be used for credit, employment or tenant decisions.

### Related LienIntel actors

- **Fayette County OH Liens** — UCC land, tax, mechanics, workers-comp and unemployment liens.
- **Hancock County OH Liens** — UCC, federal tax, mechanics, workers-comp and unemployment liens.
- **Stark, Tuscarawas, Clermont, Richland, Wayne and Washington County OH Liens** — separate Ohio recorder indexes.
- **Ohio Secretary of State UCC** — statewide Article 9 filings, a different source.

# Actor input Schema

## `debtorNames` (type: `array`):

Names to search on the debtor, owner, employer or grantor side, up to 20. Partial names are supported, for example SMITH, JONES or GOODLEAP. Each name is searched separately and results are deduplicated.

## `securedPartyNames` (type: `array`):

Names to search on the secured-party, lien claimant, creditor or agency side, up to 20. For example INTERNAL REVENUE, GOODLEAP, a contractor or the Ohio Bureau of Workers Compensation. Releases are also matched by the releasing party.

## `documentNumbers` (type: `array`):

Exact Madison County Recorder document numbers, up to 20, for example 2026-5321 or 2026-5313. The actor returns the exact document number, not prefix matches.

## `lienTypes` (type: `array`):

Categories to include. Allowed values: ucc, tax_lien, mechanics, workers_comp, unemployment, other_lien. Leave empty for all categories.

## `includeReleases` (type: `boolean`):

Include federal tax-lien releases, mechanics-lien releases, workers-compensation releases, unemployment-compensation releases and other lien releases. Turn off to return only new liens and active filings.

## `dateFrom` (type: `string`):

Earliest recorded date in YYYY-MM-DD format. Leave empty for the last 5 years on a name search, or the last 30 days on a browse run.

## `dateTo` (type: `string`):

Latest recorded date in YYYY-MM-DD format. Leave empty for today.

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

Maximum number of unique lien or UCC records to return and charge. Free Apify users receive up to 10 results per run.

## Actor input object example

```json
{
  "lienTypes": [
    "ucc",
    "tax_lien",
    "mechanics",
    "workers_comp",
    "unemployment",
    "other_lien"
  ],
  "includeReleases": true,
  "maxFilings": 25
}
```

# Actor output Schema

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

One row per recorded Madison County UCC, federal tax, mechanics, workers-compensation, unemployment-compensation or other statutory lien instrument, with document number, recorded date, debtor and secured party, book/page, amount and legal 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/madison-county-oh-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/madison-county-oh-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/madison-county-oh-lien-filings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lienintel/madison-county-oh-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/77izECA3gbNC75InY/builds/kRac0Isyy3iCcwH27/openapi.json
