# Pennsylvania UCC Lien Search — PA DOS Filing & Debtor Records (`keeganlabs/pennsylvania-ucc-lien-search`) Actor

Search Pennsylvania UCC financing statements by debtor name, secured-party name, or filing number on the official PA Department of State portal. Returns filing number, dates, status, debtor, secured party, document type — normalized JSON.

- **URL**: https://apify.com/keeganlabs/pennsylvania-ucc-lien-search.md
- **Developed by:** [Keegan Labs](https://apify.com/keeganlabs) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Pennsylvania UCC Lien Search — PA DOS Filing & Debtor Records

Search **Pennsylvania UCC financing statements** straight from the official Pennsylvania
Department of State index (`file.dos.pa.gov`) and get clean, structured JSON: filing
number, filing and lapse dates, status, debtor name and location, secured party, and
document type.

**This is the only Pennsylvania UCC lien-search actor on Apify** — no dedicated PA UCC
actor exists today, and the multi-state UCC aggregators do not cover Pennsylvania. It reads
the same public DOS index a paid "official" UCC search is built on, and it is fed live at
run time (the portal shows *"As of today we have processed all UCC documents received in
our office through …"* — you are querying the current index, not a stale cache).

### Who this is for

- **MCA, equipment-finance, factoring & ABL underwriters** — check whether a Pennsylvania
  business's assets are already encumbered before advancing funds, and see exactly which
  secured lenders (banks, funders, representative trusts like CSC / CT Corporation) already
  hold a blanket lien.
- **KYB / KYC & onboarding** — surface existing UCC filings against a counterparty in
  seconds instead of a manual portal session per name.
- **Collections & skip-trace / recovery** — find a debtor's active secured creditors and
  the filings that name them.
- **Legal & UCC filing services** — verify filing numbers, lapse dates, and continuation /
  termination (UCC3) status.

### What you get

Every record is normalized — ISO dates, explicit nulls, stable field names, and the
`" - CITY - STATE"` location suffix split out of the portal's name strings:

```json
{
  "recordId": 83033,
  "recordNumber": "2021100701076",
  "filingNumber": "2021100701076",
  "documentType": "UCC1",
  "debtorName": "TRUCKING SOLUTIONS CO",
  "debtorCity": "PHILADELPHIA",
  "debtorState": "PA",
  "debtorRaw": "TRUCKING SOLUTIONS CO - PHILADELPHIA - PA",
  "securedParty": "C T CORPORATION SYSTEM, AS REPRESENTATIVE",
  "securedPartyCity": "GLENDALE",
  "securedPartyState": "CA",
  "securedPartyRaw": "C T CORPORATION SYSTEM, AS REPRESENTATIVE - GLENDALE - CA",
  "status": "Active",
  "filingDate": "2021-10-07",
  "filingDateTime": "2021-10-07T12:28:00",
  "lapseDate": "2026-10-07",
  "pageCount": 3,
  "source": "pa-dos-ucc",
  "sourceUrl": "https://file.dos.pa.gov/search/ucc",
  "searchType": "filingNumber",
  "query": "2021100701076",
  "retrievedAt": "2026-07-22T18:00:00.000Z"
}
````

`documentType` distinguishes original financing statements (`UCC1`) from amendments /
continuations / terminations (`UCC3`); for a UCC3 the `recordNumber` tracks the original
UCC1 while `filingNumber` is the amendment's own number, and `status` reflects the current
state (e.g. `Active`, `Inactive - Terminated`, `Inactive - Lapsed & Terminated`).

### Search options

| Input | What it does |
| --- | --- |
| `searchType` | `debtorOrganization`, `debtorIndividual`, `securedPartyOrganization`, `securedPartyIndividual`, or `filingNumber` |
| `organizationName` | Business name to search (organization modes; contains-match) |
| `firstName` / `middleName` / `lastName` / `suffix` | Individual name (individual modes) |
| `filingNumber` | Exact filing/record number (`filingNumber` mode) |
| `city` / `state` | Optional location filters |
| `filingDateFrom` / `filingDateTo` | Filing-date range (YYYY-MM-DD or M/D/YYYY) |
| `includeLapsed` | Include lapsed filings (default on) |
| `maxResults` | Cap the number of records returned (default 100) |

Both debtor **and** secured-party search are first-class — so you can pull *"every filing
where WELLS FARGO is the secured party"* directly, without a workaround.

### Freshness

Results come **live from the PA DOS UCC index at run time** — nothing pre-scraped. Note the
portal's own disclaimer: this public search is **not certified**. A certified UCC-11 search
is a separate paid DOS product ordered document-by-document; this actor returns the free,
public index used for diligence and monitoring, not a certified legal search.

### Pricing

Pay-per-event — you pay for what you get, no subscription:

| Event | Price |
| --- | --- |
| Search session (actor start) | $0.01 |
| UCC filing result (per record) | $0.004 |

**Why these numbers.** Comparable UCC actors price filing results at **$2.00/1,000
(New Jersey UCC)**, **$3.00/1,000 (Whetstone Tools)**, and **$5.00/1,000 (ScrapeSage)**.
This actor sits at the low end — **$4.00/1,000 records** — because Pennsylvania sits behind
a Cloudflare managed challenge that requires a real browser session and residential proxy
per run (more compute than a plain-HTTP portal like NJ), while still undercutting the $3–5
comps on a per-record basis. A typical run — one search session returning 100 filings —
costs **$0.01 + 100 × $0.004 = $0.41**. A single manual paralegal UCC lookup runs $15–75 at
commercial search shops; this does it for cents, and it is the only automated path to PA
UCC data on the Store.

### Notes & compliance

- A real browser (bundled) clears the portal's Cloudflare check automatically; keep the
  default residential proxy setting for reliable runs.
- The actor is a polite, user-directed search: **single session, one API call per search,
  throttled** — no bulk hammering. PA's `robots.txt` allows general access (`User-agent: *`
  → `Allow: /`); only AI-training crawlers are disallowed, and this actor is neither.
- The public search carries **no automated-access prohibition** and PA does not sell a
  competing bulk-data subscription (the only paid alternative is the per-document certified
  UCC-11, a distinct legal product).
- Data is provided as-is from the DOS index and is **not a certified UCC search**; order a
  UCC-11 from the Department of State when a certified result is legally required.

# Actor input Schema

## `searchType` (type: `string`):

What to search by. Debtor and secured-party searches accept either an organization name or an individual name; filing-number returns the exact filing.

## `organizationName` (type: `string`):

Business/organization name to search (required for debtorOrganization and securedPartyOrganization). Matches on a contains basis. Example: "TRUCKING".

## `firstName` (type: `string`):

First name (individual debtor/secured-party searches).

## `middleName` (type: `string`):

Middle name or initial (optional).

## `lastName` (type: `string`):

Last name (required for debtorIndividual and securedPartyIndividual).

## `suffix` (type: `string`):

Name suffix such as JR, SR, III (optional).

## `filingNumber` (type: `string`):

Exact PA DOS filing/record number (required for searchType = filingNumber). Example: "2021100701076".

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

Optional: restrict results to a debtor/secured-party city.

## `state` (type: `string`):

Optional: restrict results to a two-letter state code (e.g. PA).

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

Earliest filing date, YYYY-MM-DD (or M/D/YYYY).

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

Latest filing date, YYYY-MM-DD (or M/D/YYYY).

## `includeLapsed` (type: `boolean`):

Include lapsed (expired) filings in the results. On by default, matching the portal's default.

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

Stop after this many records have been pushed. The API returns the full match set in one call; this caps how many are output (and charged).

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

Apify Proxy settings. Residential proxies are recommended — the portal sits behind a Cloudflare managed challenge.

## Actor input object example

```json
{
  "searchType": "debtorOrganization",
  "organizationName": "TRUCKING",
  "includeLapsed": true,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "organizationName": "TRUCKING",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("keeganlabs/pennsylvania-ucc-lien-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 = {
    "organizationName": "TRUCKING",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("keeganlabs/pennsylvania-ucc-lien-search").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "organizationName": "TRUCKING",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call keeganlabs/pennsylvania-ucc-lien-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=keeganlabs/pennsylvania-ucc-lien-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pennsylvania UCC Lien Search — PA DOS Filing & Debtor Records",
        "description": "Search Pennsylvania UCC financing statements by debtor name, secured-party name, or filing number on the official PA Department of State portal. Returns filing number, dates, status, debtor, secured party, document type — normalized JSON.",
        "version": "0.1",
        "x-build-id": "HqO2C5l58WGKwAFuO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/keeganlabs~pennsylvania-ucc-lien-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-keeganlabs-pennsylvania-ucc-lien-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/keeganlabs~pennsylvania-ucc-lien-search/runs": {
            "post": {
                "operationId": "runs-sync-keeganlabs-pennsylvania-ucc-lien-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/keeganlabs~pennsylvania-ucc-lien-search/run-sync": {
            "post": {
                "operationId": "run-sync-keeganlabs-pennsylvania-ucc-lien-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchType"
                ],
                "properties": {
                    "searchType": {
                        "title": "Search type",
                        "enum": [
                            "debtorOrganization",
                            "debtorIndividual",
                            "securedPartyOrganization",
                            "securedPartyIndividual",
                            "filingNumber"
                        ],
                        "type": "string",
                        "description": "What to search by. Debtor and secured-party searches accept either an organization name or an individual name; filing-number returns the exact filing.",
                        "default": "debtorOrganization"
                    },
                    "organizationName": {
                        "title": "Organization name",
                        "type": "string",
                        "description": "Business/organization name to search (required for debtorOrganization and securedPartyOrganization). Matches on a contains basis. Example: \"TRUCKING\"."
                    },
                    "firstName": {
                        "title": "Individual first name",
                        "type": "string",
                        "description": "First name (individual debtor/secured-party searches)."
                    },
                    "middleName": {
                        "title": "Individual middle name / initial",
                        "type": "string",
                        "description": "Middle name or initial (optional)."
                    },
                    "lastName": {
                        "title": "Individual last name",
                        "type": "string",
                        "description": "Last name (required for debtorIndividual and securedPartyIndividual)."
                    },
                    "suffix": {
                        "title": "Individual suffix",
                        "type": "string",
                        "description": "Name suffix such as JR, SR, III (optional)."
                    },
                    "filingNumber": {
                        "title": "Filing (UCC) number",
                        "type": "string",
                        "description": "Exact PA DOS filing/record number (required for searchType = filingNumber). Example: \"2021100701076\"."
                    },
                    "city": {
                        "title": "City filter",
                        "type": "string",
                        "description": "Optional: restrict results to a debtor/secured-party city."
                    },
                    "state": {
                        "title": "State filter",
                        "type": "string",
                        "description": "Optional: restrict results to a two-letter state code (e.g. PA)."
                    },
                    "filingDateFrom": {
                        "title": "Filing date from",
                        "type": "string",
                        "description": "Earliest filing date, YYYY-MM-DD (or M/D/YYYY)."
                    },
                    "filingDateTo": {
                        "title": "Filing date to",
                        "type": "string",
                        "description": "Latest filing date, YYYY-MM-DD (or M/D/YYYY)."
                    },
                    "includeLapsed": {
                        "title": "Include lapsed records",
                        "type": "boolean",
                        "description": "Include lapsed (expired) filings in the results. On by default, matching the portal's default.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Stop after this many records have been pushed. The API returns the full match set in one call; this caps how many are output (and charged).",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Residential proxies are recommended — the portal sits behind a Cloudflare managed challenge.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
