# New Jersey UCC Filings Search (`automation-lab/new-jersey-ucc-filings-search`) Actor

Search official New Jersey non-certified UCC filings by organization, individual debtor, or filing number and export status, date, city, number, and page count.

- **URL**: https://apify.com/automation-lab/new-jersey-ucc-filings-search.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 ucc filing 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## New Jersey UCC Filings Search

Search official **New Jersey UCC filings** by organization, individual debtor, or filing number and export structured filing metadata from NJPortal.

The Actor automates the public non-certified search used for recurring lien diligence.
It returns debtor name, city, filing number, status, filing date, and page count when those fields are shown by the source.
It does not order certified reports, buy document copies, add records to a cart, or enter checkout.

### What does this Actor do?

The Actor submits searches to the New Jersey Division of Revenue and Enterprise Services UCC portal.
It supports three source-native lookup modes:

- organization name, with optional city;
- individual debtor, with optional first name, middle name, and city;
- exact filing number.

Multiple searches can run in one task.
Results are normalized into the default Apify dataset for JSON, CSV, Excel, XML, RSS, and integration exports.
Duplicate filing-and-debtor pairs are removed within each run.

### Who is it for?

Use it for public-record workflows such as:

- lenders checking borrower lien records;
- underwriters reviewing collateral filings;
- KYB teams researching organizations;
- legal and compliance teams performing initial diligence;
- portfolio teams repeating the same debtor searches;
- analysts loading public filing metadata into a warehouse;
- automation teams scheduling evidence collection.

This Actor is a search and export tool, not a legal opinion or certified search service.

### Why automate NJPortal UCC searches?

The official form uses a multi-step ASP.NET session.
Manual work requires choosing a mode, entering criteria, reading a table, and copying every row.
The Actor preserves the required session state and converts the official result table into stable fields.

Useful differences from manual browsing include:

- batch inputs;
- typed records;
- deterministic maximum-item limits;
- scheduled Apify runs;
- webhook and API integrations;
- explicit source and collection timestamps;
- no document-copy or checkout side effects.

### What data can I extract?

| Field | Meaning |
| --- | --- |
| `searchMode` | `organization`, `individual`, or `filingNumber` |
| `searchQuery` | Name or filing number used for the lookup |
| `debtorName` | Source-displayed debtor name, when available |
| `city` | Source-displayed debtor city, when available |
| `filingNumber` | Official New Jersey UCC filing number |
| `status` | Source-reported filing status |
| `filingDate` | Filing date as displayed by NJPortal |
| `pageCount` | Source-reported document page count |
| `includeLapsed` | Whether lapsed filings were requested |
| `sourceUrl` | Official non-certified search URL |
| `scrapedAt` | ISO 8601 collection timestamp |

Filing-number results do not display debtor name or city on the pre-checkout result table, so those fields are `null` for that mode.

### How to search New Jersey UCC filings

1. Open the Actor in Apify Console.
2. Add one or more objects to `searches`.
3. Select the search `mode` for each object.
4. Supply the mode-specific required field.
5. Optionally enable `includeLapsed`.
6. Set `maxItems` to bound the output.
7. Click **Start**.
8. Open the default dataset when the run finishes.
9. Export or integrate the normalized results.

Start with an organization search if you are exploring a debtor name.
Use filing-number mode only when you already know the exact identifier.

### Input parameters

#### `searches`

An array containing 1 to 50 search objects.
Every object requires `mode`.

For `organization` mode:

- `organizationName` is required;
- `city` is optional;
- `includeLapsed` defaults to `false`.

For `individual` mode:

- `lastName` is required;
- `firstName`, `middleName`, and `city` are optional;
- `includeLapsed` defaults to `false`.

For `filingNumber` mode:

- `filingNumber` is required;
- it must contain only digits and be at most 10 digits;
- `includeLapsed` defaults to `false`.

#### `maxItems`

Maximum number of unique rows saved across all searches.
The default is 100 and the allowed range is 1 to 1,000.
The Actor stops saving records when this limit is reached.

### Example input: organization search

```json
{
  "searches": [
    {
      "mode": "organization",
      "organizationName": "WALMART",
      "includeLapsed": false
    }
  ],
  "maxItems": 10
}
```

### Example input: individual and filing-number searches

```json
{
  "searches": [
    {
      "mode": "individual",
      "lastName": "SMITH",
      "firstName": "JOHN"
    },
    {
      "mode": "filingNumber",
      "filingNumber": "58502723"
    }
  ],
  "maxItems": 25
}
```

### Example output

A current organization search returns records shaped like this:

```json
{
  "searchMode": "organization",
  "searchQuery": "WALMART",
  "debtorName": "WALMART INC",
  "city": "BENTONVILLE",
  "filingNumber": "58502723",
  "status": "Active",
  "filingDate": "07/20/2026",
  "pageCount": 14,
  "includeLapsed": false,
  "sourceUrl": "https://www.njportal.com/UCC/Search/NonCertifiedSearch.aspx",
  "scrapedAt": "2026-08-21T14:17:17.258Z"
}
```

Dates reflect the source's display format.
Use `scrapedAt` to identify when a snapshot was collected.

### How much does it cost to search New Jersey UCC filings?

Pay-per-event pricing includes a **$0.0001 run-start fee** and one charge for each saved filing record.
The per-record rate depends on your Apify pricing tier:

| Tier | Price per filing record |
| --- | ---: |
| Free | $0.00230 |
| Bronze | $0.00200 |
| Silver | $0.00156 |
| Gold | $0.00120 |
| Platinum | $0.00080 |
| Diamond | $0.00056 |

At the Bronze rate, 10 records cost about $0.0201 including the start fee.
One hundred records cost about $0.2001.
A no-result search only incurs the run-start fee.
Apify platform compute charges may apply according to your account plan.

### Scheduling recurring lien diligence

Create an Apify Schedule for searches that need regular review.
Keep the input stable and store each run's dataset ID and `scrapedAt` value.
Compare filing numbers and statuses between runs in your own workflow.

The Actor produces snapshots.
It does not maintain history, send change alerts, or decide whether a filing creates an enforceable lien.
Use webhooks, Make, Zapier, or your own code for comparisons and notifications.

### Export and integration patterns

Common patterns include:

- export CSV for spreadsheet review;
- send JSON to a data warehouse;
- trigger a webhook after successful runs;
- join filing numbers to internal borrower records;
- compare scheduled datasets for newly seen filings;
- preserve source timestamps with an underwriting case.

The default dataset remains scoped to the current run.
No fixed global dataset is used.

### Run through the Apify API with cURL

Replace `YOUR_TOKEN` with an Apify API token:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~new-jersey-ucc-filings-search/runs?token=YOUR_TOKEN&waitForFinish=120" \
  -H "Content-Type: application/json" \
  -d '{"searches":[{"mode":"organization","organizationName":"WALMART"}],"maxItems":10}'
```

Fetch dataset items from the `defaultDatasetId` returned by the run API.
Do not expose tokens in source control or client-side code.

### Run with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/new-jersey-ucc-filings-search').call({
  searches: [{ mode: 'filingNumber', filingNumber: '58502723' }],
  maxItems: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Run with Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/new-jersey-ucc-filings-search').call(run_input={
    'searches': [{'mode': 'organization', 'organizationName': 'WALMART'}],
    'maxItems': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Use with MCP and AI assistants

Add the Apify MCP server to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/new-jersey-ucc-filings-search"
```

#### Claude Desktop setup

Add this server object to Claude Desktop's MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/new-jersey-ucc-filings-search"
    }
  }
}
```

#### Cursor setup

Use **Settings → Tools & MCP → Add custom MCP** and paste the same Apify MCP URL.

#### VS Code setup

Add the same `apify` server and URL to your workspace `.vscode/mcp.json`, then start it from the MCP servers view.

Example prompts:

- "Search New Jersey UCC filings for this organization and return active filing numbers."
- "Verify this NJ UCC filing number and report its filing date and page count."
- "Run these debtor-name searches and prepare the results for a CSV review."

AI output should still be checked against the structured dataset and official source context.

### Limits and source behavior

NJPortal controls data availability, update timing, search semantics, and result volume.
The page states the date through which records are reflected.
A completed run is a point-in-time public search, not a guarantee of legal completeness.

The Actor:

- does not bypass authentication;
- does not solve CAPTCHAs;
- does not use residential proxies;
- does not order documents;
- does not enter a cart or checkout;
- does not produce certified search reports;
- does not interpret collateral or legal priority;
- fails rather than silently accepting an unrecognized source page.

### Search tips

Use the legal debtor name as recorded whenever possible.
Try a broader organization name before adding a city filter.
For individuals, start with surname and add first name to reduce false positives.
Enable lapsed records only when your diligence scope requires them.
Use exact filing numbers without spaces or punctuation.
Set a conservative `maxItems` during exploration.

Name-based matches can include similarly named parties.
Review the returned city, filing number, date, and status together.

### Troubleshooting

#### Why did my search return no rows?

The criteria may not match the official non-certified index.
Check spelling, remove an optional city or first-name filter, and confirm whether lapsed filings should be included.
A valid no-result search produces an empty dataset.

#### Why did the Actor fail instead of returning an empty dataset?

The Actor validates the official page and expected columns.
It fails on an upstream error or changed form shape so that a source problem is not misrepresented as zero records.
Retry later if NJPortal is temporarily unavailable.

#### Why is debtor name null for a filing-number search?

The official pre-checkout filing-number table exposes filing number, status, date, and page count but not debtor identity.
The Actor does not order copies or proceed to checkout to obtain additional data.

### Responsible use and legal notice

Use public filing metadata lawfully and for a legitimate purpose.
Follow applicable privacy, credit, consumer-reporting, contractual, and professional obligations.
Do not treat name similarity as identity proof.
Do not use the dataset as the sole basis for a legal, lending, employment, or adverse decision.

For certified results, legal conclusions, document copies, or filing actions, use the official New Jersey service and qualified professional advice.
This Actor is not affiliated with or endorsed by the State of New Jersey or NJPortal.

### FAQ

#### Does it search certified reports?

No. It uses only the public non-certified search surface.

#### Can it download UCC document images?

No. It reports page count but does not select, purchase, or download copies.

#### Can one run search multiple debtors?

Yes. Add up to 50 objects to `searches`.

#### Are lapsed filings included automatically?

No. Set `includeLapsed` to `true` on the relevant search object.

#### Does it support other states?

No. This Actor is intentionally limited to the official New Jersey UCC surface.

#### Can I schedule it?

Yes. Use Apify Schedules, then compare datasets in your downstream system.

### Related Actor

For New Jersey business identity and registration data, use [New Jersey Business Registry Search](https://apify.com/automation-lab/new-jersey-business-registry-search).
It complements UCC filing metadata but is a separate official source and workflow.

# Actor input Schema

## `searches` (type: `array`):

One or more official NJ UCC searches. Supply the fields required by each selected mode.

## `maxItems` (type: `integer`):

Stop after saving this many unique filing records across all searches.

## Actor input object example

```json
{
  "searches": [
    {
      "mode": "organization",
      "organizationName": "WALMART",
      "includeLapsed": false
    }
  ],
  "maxItems": 10
}
```

# Actor output Schema

## `dataset` (type: `string`):

All normalized filing records from this run.

# 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 = {
    "searches": [
        {
            "mode": "organization",
            "organizationName": "WALMART",
            "includeLapsed": false
        }
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/new-jersey-ucc-filings-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 = {
    "searches": [{
            "mode": "organization",
            "organizationName": "WALMART",
            "includeLapsed": False,
        }],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/new-jersey-ucc-filings-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 '{
  "searches": [
    {
      "mode": "organization",
      "organizationName": "WALMART",
      "includeLapsed": false
    }
  ],
  "maxItems": 10
}' |
apify call automation-lab/new-jersey-ucc-filings-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/new-jersey-ucc-filings-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/fao6NSWHWlikiZDb2/builds/sVZHQcKt6X5PbOsk9/openapi.json
