# New Jersey Business Search Scraper (`automation-lab/new-jersey-business-registry-search`) Actor

Search and export official New Jersey business registry records by name, keywords, or entity ID for verification, enrichment, and research.

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

## Pricing

Pay per event

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/platform/actors/running/actors-in-store#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 Business Search Scraper

Search the official New Jersey public business registry and export structured business records by legal-name prefix, keywords, or exact entity ID.

This Actor turns the state search forms into an automation-friendly dataset for vendor checks, lead enrichment, due diligence, research, and scheduled comparison workflows.

It returns source-reported business names, entity IDs, cities, entity types, and incorporation dates without requiring a New Jersey account or API key.

### What does New Jersey Business Search Scraper do?

The Actor submits searches to the public New Jersey Division of Revenue and Enterprise Services business-name portal.

It supports all three registered-business lookup routes exposed by that source:

- business name prefix;
- one-to-five keyword search;
- exact 10-digit entity ID.

Results from multiple searches are deduplicated by entity ID before they are saved.

The Actor stops at `maxItems`, so a run has a predictable output ceiling.

It uses a fresh token-bound source session for each search and retries transient failures with bounded backoff.

### Who is it for?

**Compliance and procurement teams** can verify that a supplied New Jersey entity ID resolves to the expected public record.

**Sales and research teams** can discover businesses whose registered names match a prefix or set of keywords.

**Data engineers** can send the dataset to spreadsheets, warehouses, CRM enrichment jobs, or internal KYB pipelines.

**Analysts** can schedule the same input and compare datasets over time.

The output is public registry evidence, not a substitute for legal advice, certified documents, or a complete good-standing report.

### Why use this Actor?

- Uses the official public New Jersey registry search pages.
- Supports name, keyword, and exact entity-ID inputs in one run.
- Returns typed JSON instead of an HTML table.
- Deduplicates overlapping searches by stable entity ID.
- Preserves the search mode and term that produced each record.
- Fails on unexpected upstream pages instead of silently returning a false empty result.
- Works with Apify schedules, webhooks, API clients, datasets, and exports.

### What New Jersey business data can it extract?

| Field | Meaning |
| --- | --- |
| `businessName` | Legal business name shown by the registry |
| `entityId` | Ten-digit New Jersey entity identifier |
| `city` | City shown in the public result, or `null` |
| `entityTypeCode` | Registry abbreviation such as `LLC` or `DP` |
| `entityType` | Expanded entity type from the source |
| `incorporatedDate` | Date displayed by the registry |
| `sourceUrl` | Official search page used for the lookup |
| `searchMode` | `businessName`, `keywords`, or `entityId` |
| `searchTerm` | Input value that produced the record |
| `scrapedAt` | UTC extraction timestamp |

The source does not expose status, registered agent, officers, street address, or filing documents in these free search-result tables.

This Actor does not invent or infer those fields.

### Getting started

1. Open the Actor input page.
2. Add at least one value under business names, keyword searches, or entity IDs.
3. Set the maximum number of unique records to save.
4. Click **Start**.
5. Open the **Business records** dataset when the run finishes.
6. Export results as JSON, CSV, Excel, XML, or another supported Apify format.

A useful first input is:

```json
{
  "businessNames": ["AUTOMATION"],
  "maxItems": 25
}
```

New Jersey automatically treats a business-name value as a prefix by adding a wildcard at its end.

### Input parameters

#### `businessNames`

An array of legal-name prefixes.

Each value must contain 2–100 characters.

Example:

```json
{
  "businessNames": ["AUTOMATION", "ATLANTIC TECHNOLOGY"]
}
```

#### `keywordSearches`

An array of search phrases.

Each phrase may contain one to five space-separated keywords, matching the official NJ keyword form.

Example:

```json
{
  "keywordSearches": ["AUTOMATION TECHNOLOGY"],
  "maxItems": 100
}
```

#### `entityIds`

An array of exact 10-digit New Jersey entity IDs.

Example:

```json
{
  "entityIds": ["0100608678"],
  "maxItems": 1
}
```

#### `maxItems`

The maximum number of unique records saved across all searches.

Allowed range: 1–10,000.

Default: 100.

The limit is global, not per search term.

### Output example

A current entity-ID lookup produces a record like this:

```json
{
  "businessName": "AUTOMATION & CONTROL, LLC",
  "entityId": "0100608678",
  "city": "MOORESTOWN",
  "entityTypeCode": "LLC",
  "entityType": "Domestic Limited Liability Company",
  "incorporatedDate": "12/7/1994",
  "sourceUrl": "https://www.njportal.com/DOR/BusinessNameSearch/Search/EntityId",
  "searchMode": "entityId",
  "searchTerm": "0100608678",
  "scrapedAt": "2026-08-05T14:24:56.330Z"
}
```

Values can change when the state updates its public source.

Nullable source fields remain `null`; they are not replaced with guessed values.

### How much does it cost to search New Jersey businesses?

Pricing uses one start event and one business-record event for each unique dataset item.

The start fee is **$0.005 per run**.

At the BRONZE tier, each saved business record costs **$0.002532**.

| Saved records | Example charge at BRONZE (USD) |
| ---: | ---: |
| 1 | 0.007532 |
| 25 | 0.068300 |
| 100 | 0.258200 |
| 1,000 | 2.537000 |

Examples combine the start fee and per-record price.

Apify applies the active tier for your account, so higher tiers may have lower per-record prices.

No-result searches pay the one-time start fee but produce no item events.

Check the Actor pricing tab for the active tier assigned to your account.

### Search names versus keywords

A business-name search matches the beginning of a registered legal name.

Use it when you know the first part of the name or want prefix discovery.

A keyword search sends up to five words through the source's separate keyword route.

Use it when relevant words may not be at the beginning of the legal name.

An entity-ID search is the narrowest option and usually returns zero or one matching record.

Use it for point-in-time verification when you already have the state's identifier.

### Deduplication and limits

If multiple input terms return the same entity ID, the first accepted occurrence is saved.

Later duplicates do not create another dataset item and are not charged again.

Input values are processed in this order:

1. business names;
2. keyword searches;
3. entity IDs.

The Actor stops after `maxItems` unique records.

A very broad source result can therefore consume the limit before later terms are processed.

Run exact entity-ID checks separately when every supplied ID must be evaluated independently.

### Scheduled verification and change tracking

Use an Apify schedule to repeat a stable set of entity-ID or name searches.

Send the finished dataset to your storage system with a webhook or integration.

Compare snapshots by `entityId` and source fields in your downstream workflow.

The Actor does not maintain a hidden cross-run history and does not label records as changed.

That keeps every run self-contained and prevents stale records from appearing in a new dataset.

### Export and integration workflows

Common workflows include:

- export a prefix search to CSV for one-time analysis;
- enrich a vendor table with source-reported entity type and city;
- verify known entity IDs during merchant onboarding;
- schedule searches and compare snapshots in a warehouse;
- trigger a webhook after a dataset is ready;
- connect the dataset to Make, Zapier, Google Sheets, or a custom application.

Treat broad name matches as candidates rather than proof that two organizations are the same.

Use the entity ID when you need a stable registry key.

### Run with the Apify API using cURL

Replace `APIFY_TOKEN` with your token:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~new-jersey-business-registry-search/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"entityIds":["0100608678"],"maxItems":1}'
```

To wait for the run and receive dataset items:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~new-jersey-business-registry-search/run-sync-get-dataset-items?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"businessNames":["AUTOMATION"],"maxItems":25}'
```

### 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-business-registry-search').call({
  keywordSearches: ['AUTOMATION TECHNOLOGY'],
  maxItems: 100,
});

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-business-registry-search').call(
    run_input={
        'entityIds': ['0100608678'],
        'maxItems': 1,
    }
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Use with Apify MCP

Add this Actor to Claude Code:

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

#### Claude Desktop

Add this server URL in Claude Desktop's MCP settings.

#### Cursor

Add the same server URL under Cursor's MCP tools configuration.

#### VS Code

Add the server URL to your VS Code MCP configuration.

All three clients can use this JSON shape:

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

Example prompts:

- "Look up New Jersey entity ID 0100608678 and summarize the source fields."
- "Search New Jersey registered business names beginning with AUTOMATION and return 25 rows."
- "Export businesses matching the keywords AUTOMATION TECHNOLOGY as JSON."

### Reliability and retries

The New Jersey form requires an anti-forgery token and matching cookie session.

The Actor bootstraps that session for every search.

Transient network, session, or unexpected-response failures are retried up to three times with a fresh session and bounded backoff.

A recognized `No Results Found` table is a successful empty search.

A blocked page, non-200 response, or missing result table is an error.

This distinction prevents an upstream failure from looking like a valid empty dataset.

### Limitations

- Results are limited to fields displayed by the free NJ business search.
- The source can change its forms, labels, availability, or rate limits.
- Business-name matching follows the source's prefix behavior.
- Keyword phrases support at most five words.
- The source may return historical entities regardless of current name availability.
- A matching name alone does not prove identity, ownership, status, or good standing.
- The Actor does not download certificates or paid filing documents.
- It does not provide registered agents, officers, street addresses, or inferred contact data.

### Responsible use and legality

The Actor accesses public registry search results.

Use the data for lawful purposes and follow applicable privacy, consumer-protection, anti-discrimination, and record-retention rules.

Do not use a name match as the sole basis for a high-impact decision.

Verify important findings through the official source and qualified professional advice where appropriate.

New Jersey remains the authoritative source for its records.

### Troubleshooting

#### Why did my business-name search return many records?

The official source automatically inserts a wildcard at the end of a business-name value.

Use a longer prefix, an exact entity ID, or a smaller `maxItems` value to narrow the run.

#### Why did my keyword input fail validation?

Each keyword-search phrase may contain no more than five space-separated words.

Split a longer research request into several supported phrases.

#### Why did I receive no dataset items?

The source may have returned its explicit `No Results Found` table.

Check the run log for `found: 0`.

Try a shorter legal-name prefix or confirm that the entity ID contains exactly 10 digits.

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

The Actor fails when the source returns an unexpected page or repeated network error.

Retry later and inspect the log before treating the result as evidence that no business exists.

#### Does the Actor return current business status?

No.

The free result table used by this Actor does not expose status.

Do not infer status from the presence of a result or its incorporation date.

### FAQ

#### Is an account or API key required?

No New Jersey account or source API key is required.

You need an Apify account to run the Actor on Apify.

#### Can I combine input modes?

Yes.

You can provide business names, keyword searches, and entity IDs in one run.

Results are deduplicated by entity ID and share one global `maxItems` limit.

#### Are duplicate records charged twice?

No.

Only unique records accepted into the dataset emit the business-record event.

#### Can I search all New Jersey businesses?

The Actor is a query-driven search tool, not a bulk registry dump.

Use realistic prefixes or keywords and respect the source's public interface.

#### How fresh is the data?

Records are extracted from the live public search when the run executes.

The Actor cannot guarantee when New Jersey last updated an underlying record.

#### Can I use the dataset in Excel?

Yes.

Open the run dataset and export it as Excel or CSV.

#### Does a successful match certify good standing?

No.

A search result is public registry evidence only and is not a certified status document.

### Related automation

This Actor is intentionally focused on the New Jersey public registered-business search.

Use Apify schedules, webhooks, dataset exports, and integrations to build enrichment or snapshot-comparison workflows around its output.

No broader Automation Lab registry Actor currently provides the same source-specific fields, so unrelated third-party Actors are not presented as related products here.

# Actor input Schema

## `businessNames` (type: `array`):

Legal-name prefixes to search. New Jersey automatically adds a wildcard at the end of each value.

## `keywordSearches` (type: `array`):

Search phrases containing one to five space-separated keywords. Each phrase is submitted as one official NJ keyword search.

## `entityIds` (type: `array`):

Exact 10-digit New Jersey business entity IDs.

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

Maximum unique business records saved across all searches.

## Actor input object example

```json
{
  "businessNames": [
    "AUTOMATION"
  ],
  "maxItems": 20
}
```

# Actor output Schema

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

All unique New Jersey business records extracted during 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 = {
    "businessNames": [
        "AUTOMATION"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/new-jersey-business-registry-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 = {
    "businessNames": ["AUTOMATION"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/new-jersey-business-registry-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 '{
  "businessNames": [
    "AUTOMATION"
  ],
  "maxItems": 20
}' |
apify call automation-lab/new-jersey-business-registry-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-business-registry-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/XkZVfyO6zGVdWuYXn/builds/HkomQ6TWSQhLVSTDZ/openapi.json
