Skip to main content
Glama
listriver-mcp

listriver-mcp

Official

ListRiver Business Data API

New and active U.S. businesses from official state business registries (Secretary of State filings), as JSON. New LLCs, corporations, nonprofits and partnerships, filtered by state, city, county, ZIP, NAICS industry, entity type, formation month, and whether a phone or email is on file.

  • Free key: 500 records a month, no card needed: get one here

  • Full documentation with a live "Try it" panel and examples in cURL, Python, JavaScript, C# and PHP: listriver.com/api-docs

  • Python client: pip install listriver (source)

  • OpenAPI 3 spec: openapi.yaml (import into Postman, Insomnia, Swagger UI or an AI agent)

  • MCP server for Claude and other AI assistants, source in mcp/: uvx listriver-mcp

Typical uses: lead lists of brand-new businesses (formed this month), CRM enrichment, sales territory research, KYB and business verification, market sizing, and B2B prospecting by industry and place.


Quick start (2 minutes)

  1. Create a free API account and click the link in the confirmation email.

  2. On the API page, click Get my free API key and copy it.

  3. Count a search (free), then pull the records:

# How many businesses formed in Miami in the last few months have a phone number? (free)
curl -H "X-Api-Key: YOUR_KEY" "https://listriver.com/api/data.ashx?action=count&states=FL&city=MIAMI&hasPhone=1&formedWithin=3"

# The first 10 of them
curl -H "X-Api-Key: YOUR_KEY" "https://listriver.com/api/data.ashx?action=records&states=FL&city=MIAMI&hasPhone=1&formedWithin=3&limit=10"
{
  "ok": true,
  "rows": [
    {
      "businessName": "ANGELI TRAVEL LLC",
      "entityType": "LIMITED LIABILITY COMPANY",
      "status": "ACTIVE",
      "formed": "2026-08",
      "registrationState": "FL",
      "stateFilingNumber": "L26000446708",
      "address": "2125 BISCAYNE BLVD, STE 204 #27572",
      "city": "MIAMI",
      "zip": "33137",
      "county": "MIAMI-DADE",
      "phone": "(786) 298-9566",
      "website": "HTTPS://ANGELITRAVELS.COM",
      "registeredAgent": "ULLOA SANCHEZ YUDELSA",
      "listriverId": "FL-L26000446708",
      "...": "35 fields in all"
    }
  ],
  "cursor": "FL.6604750",
  "resume": "FL.6604750"
}

Python

from listriver import Client

lr = Client("YOUR_KEY")
search = dict(states="FL", city="MIAMI", has_phone=True, formed_within=3)

print(lr.count(**search))                      # free
for business in lr.records(**search, max_records=100):
    print(business["businessName"], business["phone"])

More: examples/ (Python, JavaScript, curl) and the recipes (also C# and PHP).


Related MCP server: Echo MCP Server

MCP server (source in this repo)

This repository contains a Model Context Protocol server for ListRiver, written in Python: mcp/listriver_mcp/server.py (package mcp/, tests in mcp/tests/, MIT license). It runs over stdio and gives AI assistants (Claude Desktop, Claude Code, Cursor and other MCP clients) three tools:

Tool

What it does

Cost

list_states

States covered and their record counts

free

count_businesses

How many businesses match a search (state, city, county, ZIP, NAICS, entity type, formation month, phone/email on file)

free

search_businesses

The matching businesses, 25 by default and up to 100 per call, with a cursor for more

counts against your records

The server tells the assistant to count first and to fetch only what you need.

Install from PyPI (published from this repo's mcp/ folder) and add it to Claude Desktop (Settings > Developer > Edit Config):

{
  "mcpServers": {
    "listriver": {
      "command": "uvx",
      "args": ["listriver-mcp"],
      "env": { "LISTRIVER_API_KEY": "lr_key_..." }
    }
  }
}

Or run it from source:

git clone https://github.com/ListRiver-LLC/listriver-api && cd listriver-api
pip install ./python ./mcp
LISTRIVER_API_KEY=lr_key_... listriver-mcp

# or with Docker, using the Dockerfile in this repo
docker build -t listriver-mcp .
docker run -i --rm -e LISTRIVER_API_KEY=lr_key_... listriver-mcp

Setup for other clients: mcp/README.md. Listed in the official MCP Registry as io.github.ListRiver-LLC/listriver.


Calls

Every call is an HTTPS GET to https://listriver.com/api/data.ashx with your key in the X-Api-Key header.

action

What it returns

Cost

states

Available states and record counts per formation window

free

count

How many records match your filters, per state

free (20 calls a minute)

records

Up to 1,000 matching records per call; pass cursor back for the next page

each record returned counts

Filters

records and count take the same filters. A record must match all of them; where a filter takes several comma-separated values, any one of them matches.

Parameter

Example

What it does

states

FL,TX

Registration states (leave out for all)

city

MIAMI,DORAL

Business city (needs states)

county

MIAMI-DADE or FL:MIAMI-DADE

Business county (needs states)

zip

33139,33140 or 331

5-digit ZIPs or 3-digit prefixes (needs states)

naics

23, 2361, 236115

NAICS industry prefix, 2 to 6 digits

entityType

LLC,CORP

LLC, CORP, LP, LLP, NONPROFIT, OTHER

hasPhone / hasEmail

1

Only businesses with a phone / email on file

formedWithin

3

Formed this month or in the N months before it

formedFrom / formedTo

2026-06 / 2026-09

Formed in this range of months

preset

recent (default), year, all

Shortcut windows

Formation dates are month-level (registries publish the month), so windows are whole calendar months.

Pricing

Plan

Records

Price

Free

500 / month

$0

Prepaid packs

5,000 / 7,500 / 10,000 (use within 12 months)

$50 / $75 / $100

Monthly plans

5,000 / 12,000 / 28,000 / 75,000 per month

$50 / $100 / $200 / $450

AWS Marketplace

larger volumes, billed on your AWS invoice

see listing

Only records returned count, and each record counts every time it is returned: overlapping or repeated searches count again. Count first (free), save the cursor or resume position to carry on later, and use listriverId to de-duplicate. Packs and plans are on your API page. Current prices are always on listriver.com/api-docs.

Keeping a feed up to date

Every records answer includes resume: the position after the last record returned, even on the last page. Save it per state, and pass it as cursor next time to get only the businesses ListRiver has added since. See examples/python/daily_feed.py.

Sample data

sample-data/ has a small sample of recent Florida formations (CSV and JSON, no emails) so you can judge the data before signing up. It is a sample, not a full file.

Data and terms

Records come from official state business registries, with addresses standardized and contact details, NAICS codes and EINs added where available. A field is null when the state doesn't publish it or ListRiver doesn't have it; nothing is estimated. Coverage and update schedules: listriver.com/methodology.

The code in this repository is MIT-licensed. The data (including sample-data/) is covered by the ListRiver API agreement: for your own business use, not for resale, and not for credit, insurance, employment or housing decisions.

Questions: support@listriver.com

Available Tools

3 tools
count_businessesA
Read-onlyIdempotent

Count businesses matching the filters, per state. Free: use it before search_businesses.

Args:
    states: Comma-separated two-letter registration states, e.g. "FL" or "FL,TX". Required with city, county or zip.
    city: Comma-separated business cities, e.g. "MIAMI".
    county: Comma-separated counties, e.g. "MIAMI-DADE" (or "FL:MIAMI-DADE").
    zip: Comma-separated 5-digit ZIP codes or 3-digit ZIP prefixes, e.g. "33139,331".
    naics: Comma-separated NAICS prefixes, 2-6 digits, e.g. "23" (construction) or "722511".
    entity_type: Comma-separated of LLC, CORP, LP, LLP, NONPROFIT, OTHER.
    has_phone: Only businesses with a phone number on file.
    has_email: Only businesses with an email on file.
    formed_within: Formed in the current month or the N months before it (1 = this month or last). Set 0 for any formation date.
    formed_from: First formation month, "YYYY-MM" (overrides formed_within).
    formed_to: Last formation month, "YYYY-MM" (overrides formed_within).

Inputs: zip, city, naics, county, +7 more. Returns: result

list_statesA
Read-onlyIdempotent

List the states ListRiver covers, with how many businesses each has: formed this month or last ("recent"), in the last 12 months ("year"), and every active business ("all"). Free.

Inputs: no named parameters. Returns: result

search_businessesA
Read-onlyIdempotent

Get businesses matching the filters (same filters as count_businesses). USES THE USER'S RECORDS: each business returned counts, every time it is returned, so ask only for what the user needs.

Args:
    states: Comma-separated two-letter registration states. Required with city, county or zip.
    city: Comma-separated business cities.
    county: Comma-separated counties.
    zip: Comma-separated 5-digit ZIP codes or 3-digit prefixes.
    naics: Comma-separated NAICS prefixes, 2-6 digits.
    entity_type: Comma-separated of LLC, CORP, LP, LLP, NONPROFIT, OTHER.
    has_phone: Only businesses with a phone number on file.
    has_email: Only businesses with an email on file.
    formed_within: Formed in the current month or the N months before it (1 = this month or last; 0 = any date).
    formed_from: First formation month, "YYYY-MM".
    formed_to: Last formation month, "YYYY-MM".
    limit: How many businesses to return, 1-100 (default 25).
    cursor: The cursor from a previous search_businesses answer, to get the next businesses of the same search.

Inputs: zip, city, limit, naics, +9 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a clearly distinct role: list_states returns coverage/metadata, count_businesses returns free aggregate counts, and search_businesses returns paginated records that consume the user's quota. The descriptions explicitly frame the intended workflow (count first, then search only what you need), leaving no realistic chance of misselection.

    Naming Consistency5/5

    All three names follow a strict verb_noun snake_case pattern (list_states, count_businesses, search_businesses) with the noun consistently referring to the domain entity. No mixed conventions or vague verbs.

    Tool Count5/5

    Three tools map exactly onto the three capabilities the service exposes: coverage, free counting, and metered record retrieval. Nothing is redundant and nothing feels padded, making the small surface well-scoped rather than thin.

    Completeness4/5

    The lifecycle is well covered: discover states, filter/count, then page through results with a cursor, and search shares the same rich filter set as count. The main gaps are the absence of a name/text filter and any single-record lookup, which agents may expect when researching a specific business.

    Maintenance

    ActivityNo data
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A simple demonstration MCP server that provides an echo tool and resource for learning how to build MCP servers. Serves as a starting point and template for creating custom MCP server implementations.
      1
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      A demonstration MCP server implementation with Docker support that provides a simple hello-world tool and includes a web-based inspector for interactive testing and exploration of MCP tools.
      -