# US & UK Public Records MCP for AI Agents (`digital_influx/public-records-mcp`) Actor

MCP server for Claude, ChatGPT, Gemini and Cursor: official public records. Contractor licenses, NPI providers, trucking companies, federal contracts, restaurant inspections, building permits, new businesses, UK house prices and food hygiene.

- **URL**: https://apify.com/digital_influx/public-records-mcp.md
- **Developed by:** [Bruno Petrelli](https://apify.com/digital_influx) (community)
- **Categories:** MCP servers, Lead generation, Business
- **Stats:** 1 total users, 0 monthly users, 0.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/actors/running/actors-in-store.md#pay-per-usage

## 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

## US & UK Public Records MCP for AI Agents

**An MCP server that gives Claude, ChatGPT, Gemini, Cursor and any other MCP client nine tools on official public records, straight from government open data:**

| Tool | Official source | What the agent gets |
|---|---|---|
| `find_contractor_licenses` | Washington State L\&I, New York State DOL | Contractors newly licensed in Washington or registered for public works in New York: business, license type and specialties, phone, city, principals, license number, status and a link to verify it. |
| `find_healthcare_providers` | CMS NPI registry (NPPES) | Doctors, dentists, therapists, clinics and pharmacies by specialty and place, or one NPI number to verify: specialty, credential, practice phone and fax, address, authorized official. |
| `find_trucking_companies` | FMCSA census | Trucking companies, new ones first, or looked up by USDOT number: legal name, phone, email, officers, fleet, drivers, operation, hazmat and cargo. |
| `search_federal_contracts` | USAspending.gov | New federal contract awards: winning company, amount, agency, NAICS, description and place of performance. |
| `restaurant_inspections` | Health departments of New York City, Chicago, King County WA, Montgomery County MD, Cincinnati and Austin | Inspection results, grades and scores, violations, address and phone, and new restaurants inspected before they open. |
| `search_building_permits` | Building departments of New York City, Chicago, San Francisco, Seattle, Cincinnati, Austin and Baton Rouge | Permits by type of work (solar, roofing, ADU, pool, remodel...), project value, address, contractor with phone, owner and status. |
| `find_new_us_businesses` | Secretaries of State of NY, CO, CT, OR and PA; Los Angeles, San Francisco and Chicago | Newly registered LLCs, corporations and DBAs with address, owners or officers, registered agent, and email and NAICS where published. |
| `uk_sold_house_prices` | HM Land Registry Price Paid Data | Homes sold in England and Wales by postcode, town, council or county: price, date, address, type, tenure and new build. |
| `uk_food_hygiene_ratings` | Food Standards Agency | UK food businesses with their official hygiene rating and its date, and new openings waiting for their first inspection. |

Ask your agent things like *"Is there a dentist practice in Austin ZIP 787 that opened this year? Give me its phone"*, *"Check the carrier with USDOT 3456789"*, *"Who won cybersecurity contracts from the federal government this week?"*, *"Did BEBECITAS in Brooklyn pass its health inspection?"*, *"Which solar permits were issued in Austin in the last two weeks, and by which installers?"* or *"What did flats in SW11 sell for this year?"*: it picks the tool and gets clean JSON back, newest records first.

### Connect your agent

**Easiest, with your Apify account (sign-in in the browser, no token to copy):** add this remote MCP server URL to your client:

```
https://mcp.apify.com?tools=digital_influx/public-records-mcp
```

- **Claude** (claude.ai, Claude Desktop): add a custom connector with that URL.
- **ChatGPT:** add it as a connector (MCP server URL) in developer mode.
- **Cursor, VS Code, Windsurf, Gemini CLI and other clients:** add a remote MCP server. With a token instead of the browser sign-in:

```json
{
  "mcpServers": {
    "public-records": {
      "url": "https://mcp.apify.com?tools=digital_influx/public-records-mcp",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

(Gemini CLI writes `httpUrl` instead of `url` in `~/.gemini/settings.json`.)

**Directly, without the Apify MCP server:** this Actor runs in Standby mode as a Streamable HTTP MCP server. Take its Standby URL from the Actor's API tab in Apify Console, add `/mcp`, and send your Apify token as `Authorization: Bearer YOUR_APIFY_TOKEN`.

**A record of every call:** each tool call your agent makes is also saved as a row of the Standby run's dataset (tool, arguments, a one-line summary and the result), so you can check later what it asked and got. **Without an agent:** a standard run calls one tool from the input (`tool` and `arguments`) and saves the result to the dataset, so the tools also work from the API, schedules and integrations (Make, n8n, Zapier).

### Arguments

Every tool takes the filters of the Actor it runs, with the same names, choices and limits, plus `limit` (records to return, 20 by default, at most 100). For example:

```json
{ "taxonomies": ["Dentist"], "zipCodes": ["787"], "enumeratedWithinDays": 365, "limit": 20 }
```

```json
{ "keywords": ["cybersecurity"], "postedWithinDays": 7, "minAmount": 100000 }
```

```json
{ "postcodes": ["SW11"], "propertyTypes": ["flat"], "soldWithinMonths": 6 }
```

Your MCP client shows the full list of each tool's arguments with their descriptions. For `uk_sold_house_prices`, `limit` is shared among the areas you give.

### How much it costs

This server charges nothing itself. Each tool runs a public-records Actor of the same author in your account, and that run bills what it returns, at the same price as running it directly:

| Tool | Actor | Price |
|---|---|---|
| `find_contractor_licenses` | US Contractor Licenses | USD 0.004 per license |
| `find_healthcare_providers` | US Healthcare Providers (NPI) | USD 0.003 per provider |
| `find_trucking_companies` | US Trucking Companies (FMCSA) | USD 0.004 per carrier |
| `search_federal_contracts` | US Federal Contracts | USD 0.005 per contract |
| `restaurant_inspections` | US Restaurant Inspections | USD 0.005 per inspection |
| `search_building_permits` | US Building Permits | USD 0.003 per permit |
| `find_new_us_businesses` | New Business Leads (US) | USD 0.004 per business |
| `uk_sold_house_prices` | UK Sold House Prices | USD 0.0015 per sale |
| `uk_food_hygiene_ratings` | UK Food Hygiene Ratings | USD 0.003 per business |

A search with no results costs nothing. Runs in Standby use 256 MB, and each call takes 10 to 60 seconds while the Actor runs.

### Good to know

- **Official open data only,** read through the public APIs the governments publish for it (Socrata portals, NPPES, USAspending, HM Land Registry, the FSA API), with an honest User-Agent and the request pace each portal asks for. No scraping of private sites, no proxies, no login.
- **Records are what the agencies publish,** with the delay each one has (most daily; Oregon and Pennsylvania business registries monthly; Land Registry sales reach the register weeks after completion). Phones and emails are the ones published in the registries: follow the TCPA, CAN-SPAM, the GDPR and PECR where they apply.
- **The same Actors work on their own,** for thousands of records in one batch, scheduled feeds of only the new records, and every field. Their pages list the sources and the attribution each one requires.
- **More tools for agents** by the same author: Company Research MCP (company contacts, the legal entity behind EU websites, tech stack, SEC filings) and Job Search MCP (jobs from 20,000+ company career sites).

# Actor input Schema

## `tool` (type: `string`):

The tool to call in a standard run. Each one reads an official source: contractor licenses (WA, NY), NPI healthcare providers, FMCSA trucking companies, federal contracts, restaurant inspections, building permits, new US businesses, UK sold house prices and UK food hygiene ratings.

## `arguments` (type: `object`):

The tool's arguments as JSON, e.g. find_healthcare_providers: {"taxonomies": \["Dentist"], "zipCodes": \["787"], "limit": 20}; search_federal_contracts: {"keywords": \["cybersecurity"], "postedWithinDays": 7}; uk_sold_house_prices: {"postcodes": \["SW11"], "limit": 20}.

## Actor input object example

```json
{
  "tool": "find_healthcare_providers",
  "arguments": {
    "taxonomies": [
      "Dentist"
    ],
    "zipCodes": [
      "787"
    ],
    "limit": 5
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "tool": "find_healthcare_providers",
    "arguments": {
        "taxonomies": [
            "Dentist"
        ],
        "zipCodes": [
            "787"
        ],
        "limit": 5
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("digital_influx/public-records-mcp").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 = {
    "tool": "find_healthcare_providers",
    "arguments": {
        "taxonomies": ["Dentist"],
        "zipCodes": ["787"],
        "limit": 5,
    },
}

# Run the Actor and wait for it to finish
run = client.actor("digital_influx/public-records-mcp").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 '{
  "tool": "find_healthcare_providers",
  "arguments": {
    "taxonomies": [
      "Dentist"
    ],
    "zipCodes": [
      "787"
    ],
    "limit": 5
  }
}' |
apify call digital_influx/public-records-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,digital_influx/public-records-mcp"
        }
    }
}
```

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/y1NeT2sBkQFLa2oUn/builds/lxtVqi8NYIftpwrzB/openapi.json
